20 件 見つかりました。

CHALOW Search - hiChangeLog ChangeLog INDEX

1 2 [ 次へ ]

TeXで序数をらくちんに書く [TeX]

1st, 2nd とかの序数をTeXでらくちんに書くためにはどうすればよいか。
自前でカウンタ作ってやってもいいが、微妙に面倒。
http://mechanics.civil.tohoku.ac.jp/~bear/bear-collections/style-files/style-fj.html にある ordinal.sty を使えばよい。内容をそのまま転載する。

% From: asnd@reg.triumf.ca (Donald Arseneau)
% Newsgroups: comp.text.tex
% Subject: Re: Ordinal Numbers in LaTeX
% Date: 26 May 1993 15:04 PST
% Keywords: ordinals, tex, latex
%
%  Takes an integer and returns the proper suffix for an 
%  ordinal number: \nth{1}  -> 1st
%                  \nth{23} -> 23rd   etc.
%
\def\nth#1{\begingroup % [call parameter (#1) "n"]
 \@tempcnta#1\relax \the\@tempcnta % emit n
 \ifnum\@tempcnta<\z@ \@tempcnta\z@\fi % negatives all get th
 \@tempcntb\@tempcnta \divide\@tempcntb100 % hundreds
 \multiply\@tempcntb100 \advance\@tempcnta-\@tempcntb % n mod 100
 \ifnum\@tempcnta<20 \ifnum\@tempcnta>9 \@tempcnta\z@\fi\fi % teens get th
 \@tempcntb\@tempcnta \divide\@tempcntb10 % tens
 \multiply\@tempcntb10 \advance\@tempcnta-\@tempcntb % n mod 10
 \ifcase\@tempcnta th\or st\or nd\or rd\else th\fi % emit suffix
 \endgroup}
%
% Example of use:
% \def\labelenumi{\theenumi.}
% \def\theenumi{\nth{enumi}}
% to make enumerated lists come out as 1st, 2nd, 3rd, 4th, ... 123rd...
使い方。
\documentclass{article}
\usepackage{ordinalno}
\begin{document}
\nth{1} \nth{2} \nth{3} \nth{4} \nth{5} \nth{6} \nth{7}
\end{document}
スタイルファイルにするのが面倒ならどうするか。定義部分をそのままプリアンブルに書いてもうまくいかない。以下のように \makeatletter, \makeatother で括る。
\documentclass{article}
\makeatletter 
\def\nth#1{\begingroup % [call parameter (#1) "n"]
 \@tempcnta#1\relax \the\@tempcnta % emit n
 \ifnum\@tempcnta<\z@ \@tempcnta\z@\fi % negatives all get th
 \@tempcntb\@tempcnta \divide\@tempcntb100 % hundreds
 \multiply\@tempcntb100 \advance\@tempcnta-\@tempcntb % n mod 100
 \ifnum\@tempcnta<20 \ifnum\@tempcnta>9 \@tempcnta\z@\fi\fi % teens get th
 \@tempcntb\@tempcnta \divide\@tempcntb10 % tens
 \multiply\@tempcntb10 \advance\@tempcnta-\@tempcntb % n mod 10
 \ifcase\@tempcnta th\or st\or nd\or rd\else th\fi % emit suffix
 \endgroup}
\makeatother 
\begin{document}
\nth{1} \nth{2} \nth{3} \nth{4} \nth{5} \nth{6} \nth{7}
\end{document}

revtexでbibtex使用時5人以上の著者でet al.にするためのスクリプトを書いた [TeX][python]

revtexとbibtex使用時、referenceで5人以上の著者に対しet al.で省略したいと思った。
こんな機械的な操作は当然便利な方法が用意されているものと思ったが、どうやらそうではない。

http://authors.aps.org/revtex4/revtex4_faq.html#b9

At the request of the editors, the truncation only happens when there are 10 or more authors. You will need to edit the .bbl file manually.



というわけでpythonで書いてみた。出力されたbblを直接いじっているだけ。元のファイルは".orig"を付与し保存する。

fname = 'del.bbl'
maxlen = 5

import re, os
output = ''
fnameorig = fname + '.orig'
if os.access(fnameorig, os.F_OK):
    s = open(fnameorig).read()
else:
    s = open(fname).read()
    open(fnameorig, 'w').write(s)
head, sep, body = s.partition(r'\bibitem')
output += head
reg = re.compile(r'(\\bibitem.+?)\n\n', re.DOTALL)
reg_bibitem = re.compile(r'(.+?)((?: *?\\bibinfo{author}.+?(?=\\bibinfo))+)(.+)', re.DOTALL | re.MULTILINE)
for r in reg.finditer(sep + body):
    bibitembody = r.group(1)
    rr = reg_bibitem.search(bibitembody)
    if rr:
        output += rr.group(1) # head
        authors = rr.group(2)
        a = r'\bibinfo{author}'
        authorlist = authors.split(a)[1:] # the first element is blank
        if len(authorlist)>maxlen:
            output += (a + authorlist[0]).strip().replace(',', ' \\textit{et al.},\n')
        else:
            output += authors
        output += rr.group(3) # tail
        output += '\n\n'
    else:
        print '***** error ! *****\n', bibitembody

output += '\\end{thebibliography}\n'
open(fname, 'w').write(output)

TeXをインストールする際に必要なファイルをまとめて入手 [TeX]

WindowsにおけるTeXのインストールでは、いちいちリンク先をクリックしてファイルを入手するのが面倒くさい。なので、ファイルが列挙してあるページのソースからファイルのURLを抜き出して(gzで終わる、とかの条件で)以下のスクリプトを回した。

import sys,os
f = open('texfiles.txt', 'r')

for line in f:
	os.system('wget http://www.ring.gr.jp/pub/text/TeX/ptex-win32/current/' + line)

うまくいった。でもFTPクライアントを使えば面倒なことは何もないんじゃね?とやり終わってから気付いた。

hyperrefを使用した際、引数を2つとるrenewcommandまわりでトラブルが起きた [TeX]

hyperrefは便利だが、ちょっとやってみたら数式が文字化けしたのでムカツいて使用をやめた。だがこの原因についてちょっとまじめに考えることにした。

結論から言えば、hyperrefの不具合というよりは仕様によって起きるものであった。具体的には、私が設定した引数を2つとるrenewcommandの処理がうまくいっていないようであった。

用いたTeXファイルには、私は以下のマクロを加えていた。

\renewcommand{\ss}[2]{\ensuremath{#1_{\mathrm{#2}}}}
"s"はsubscriptから来ているのだろうが、何故2つ重ねたのかは忘れた。で、newcommandでなくrenewcommandにしているのは、\ssとはもともとエスツェットを出力する命令だからである。大雑把には、この命令がhyperrefで処理される段階で\ssと中括弧"{"の間にスペースが挿入されてしまい、\ssがエスツェットとして解釈されてしまっているために起きているようであった。

安直に以下のようにしたら問題は解決したようであった。
\newcommand{\sss}[2]{\ensuremath{#1_{\mathrm{#2}}}}

BiBTeXのapsrevで重複文献の年にアルファベットが付加されるのを防ぐにはformat.date関数をいじる(その2) [TeX]

[2007-02-16-6]に記したやつだが、コメントアウトしすぎて年の前にもカンマが登場してしまった。以下のようにするとうまくいってるようだ(ちょい不安)

FUNCTION {format.date}
{ year "year" bibinfo.check duplicate$ empty$
    {
      "empty year in " cite$ * "; set to ????" * warning$
       pop$ "????"
    }
    'skip$
  if$
%  extra.label *
  before.all 'output.state :=
  " (" swap$ * ")" *
}

BiBTeXのapsrevで重複文献の年にアルファベットが付加されるのを防ぐにはformat.date関数をいじる [TeX]

年の部分が(1999a)のようにアルファベットがつくのがうっとうしかったが、以下のように2行コメントアウトするとこれが消えると岡野真人君に教えてもらった。

FUNCTION {format.date}
{ year "year" bibinfo.check duplicate$ empty$
    {
      "empty year in " cite$ * "; set to ????" * warning$
       pop$ "????"
    }
    'skip$
  if$
%  extra.label *
%  before.all 'output.state :=
  " (" swap$ * ")" *
}

Referrer (Inside): [2007-02-19-1]

TeXで行間を変えるには\baselineskipをいじり、それを部分的にやるなら環境を作る [TeX]

以下は「TEX: 部分的に行間を変える方法 @sarunoie」の内容の引用です:

\newenvironment{minilinespace}{
\baselineskip = 1mm
}

\begin{minilinespace}
hoge
\end{minilinespace}

Emacsのインライン画像表示機能を活用してyatexやhowmを便利にしたい [Emacs][TeX][yatex][howm][画像ファイル]

画像ファイルを画像データたらしめているのは、ファイル名ではなく画像そのものである。つまり、画像に対していちいちファイル名を用意してそれを基に管理するのは面倒でナンセンスだと考える。(「横着プログラミング 第1回: Unixのメモ技術」を読んでこの考えに至った)

TeXによる文章で図を挿入する際には画像をファイル名で指定する。で、それに対してラベル文字列\label{...}を付し、これが後の参照に使われる(「図\ref{...}」が「図2.4」とかになる)。つまり画像(図)を管理するため2種類もの文字列が使われていることになるのだが、これは2重に面倒である。「ファイル名をラベル文字列とする」とルールを定めれば1重の面倒に改善されるが、それでもファイル名管理の煩わしさは残る。不精な私にとっては、アタマに思い描く画像とファイル名の対応をいちいち把握しておくことはとても面倒だ。

私はTeXの文章作成時には、YaTeXという便利なTeX文書作成補助パッケージを愛用している。これに参照コマンド\refの入力支援機能が備わっているが、そこではラベル文字列の代わりにキャプション文字列で図を管理する。通常キャプション文字列はファイル名などと同じになり得ないので、画像(図)を指定するための文字列を新たに増やしてしまっていることに相当する。これは別にyatexの設計が悪いわけではなく、平テキストで画像入り文章を扱っている以上仕方のないことなのだが、やっぱりこのテの把握と管理は面倒である。

画像のインライン表示によって、この面倒さを解決できないかなあと考えている。emacsは21から画像の表示がサポートされたようなので、例えばTeXのソース編集中に\includegraphics{...}付近に実際の画像の縮小版を表示させることも可能だと思う(画像表示の機構は知らないので、具体的な技術的課題なんかはわからん)。で、その図を\ref{...}する際にも、文書中の画像(図)をサムネイル表示させた上で参照先を選ばせるようにすれば、ラベル文字列との対応でいちいち悩む必要は無い。この時ラベル文字列はただの内部変数の様な役割なので、他と干渉さえしなければ何でもよいはず(ファイル名とか)。\ref{...}付近にも適宜画像を表示させれば、執筆中の文書の見通しも良くなりそうだ。

TeXとは関係ないが、メモツールhowmでも似た事情がある。ちょっとした画像をメモ代わりに残したくなることはあるが、いちいちそれっぽいファイル名を考えて後日アクセスできるようにするのが億劫で、結局残さないなんて本末転倒なこともある。日付+時間とかで必ずuniqueになるファイル名を適当に自動でつけ、メモ中にインライン表示できるようにすれば、気兼ねなく「メモ画像」を扱えるのではと思う。

とりあえず今日は思ったことをメモするだけ。実装したいが、どのくらいの手間暇がいるのだろうか?以下に画像表示のelisp例が記述されていた。
横着プログラミング 第1回: Unixのメモ技術
Poohのページ

TeXの数式をGhostscriptでアウトライン化する [TeX][Illustrator]

以下はTeXの数式をDTPソフトにの内容と同一である。

Illustrator CS(Windows)を大金はたいて購入したものの、(Illustrator 10では問題無くできていた)TeXの数式が記されたepsファイルの読み込みに難があった。(http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/27936.html)

どうしたものかとムカツイていたが、以下のようにしてTeXの数式をアウトライン化すれば、Illustrator CSで問題無く読み込めた。

dvips -Ppdf -E testeq -o testeq.eps
gswin32c -dSAFER -q -dBATCH -dNOPAUSE -sDEVICE=epswrite -dEPSCrop -r9600 -sOutputFile=testeq2.eps testeq.eps

TeXソースの記述では特に何も気をつける所は無い。

\documentclass{article}
\begin{document}

\begin{eqnarray}
z^2 = x^2 + y^2
\end{eqnarray}

\end{document}

\verbコマンドを\textttコマンドにEmacsで一括置換する [TeX][Emacs]

コマンド中にverb命令は使えないようなので、まとめてtextttに変えたいなあと思ったことがあった。
Emacs上のreplace-regexpで以下のようにしたらうまくいった。クエスチョンは最短マッチにするための命令

Replace regexp \\verb|\(.*?\)| with: \\texttt{\1}

1 2 [ 次へ ]

ChangeLog INDEX
Powered by chalow