LaTeX とその周辺のお話.たぶん下に行くほどマニアックな内容になります.なお,本文中では明示していなくても amsmath, amssymb は読み込んでいるものとします.
言及されているパッケージが見つからない場合は,CTAN から拾ってきて,~/texmf/tex/latex/ 以下に適当に放り込んで mktexlsr して下さい.
最新の TeX だと,ファイルの配置が変わっていたりするので,そこは柔軟に読み替えて下さい (find, locate を活用する).
何かと煩雑な TeX 環境の準備ですが,最近はかなり楽になってきたような気が…….
昔は teTeX が定番でしたが,2006年でメンテナンスが終わってしまいました.その後,各ディストリビューションでは TeX Live が採用されて今日に至ります.TeX Live は1年毎に更新される Live DVD らしく,様々な環境用のバイナリ,スタイルファイル等,及びソースが収録されています.
しかしながら,現状 TeX Live には pTeX や jsclasses が含まれておらず,日本語を扱いたいという要望に応えるには至っていません.そのうちこの状況がなんらかの形で解消されることが期待されますが,今のところは ptexlive などの日本語パッチ集を使うことをおすすめします.Linux ディストリビューションによってはこれらのパッケージが用意されていたり,TeX Live に pTeX を追加するパッケージがあったりすることがあるので,その場合はそちらを使うといいでしょう.
追記(2010/11/04): TeX Live 2010 では pTeX が取り込まれたそうです.
なお,日本語のフォントが汚いと悲しいことになるので,IPA フォントをあらかじめ導入しておきましょう.パッケージがあればそちらから.無い場合は以下の通り:
$ wget http://ossipedia.ipa.go.jp/ipafont/IPAfont00203.php $ unzip IPAfont00203.zip $ cd IPAfont00203 $ su # mkdir /usr/share/fonts/TrueType # cp *.ttf /usr/share/fonts/TrueType
さて,いざ使ってみて,コンパイルがうまくいかないという人はソースの文字コードを確認してみましょう.platex は EUC を読みますが,最近の Linux ディストリビューションでは UTF-8 を使うのがデフォルトになっています.Emacs や nkf で変換するか,platex に次のオプションをつけることで対処します:
$ platex -kanji=utf8
W32TeX を使うのが定番.Cygwin 版の ptetex を使うのも手らしいです.
Mac Ports を使うか ptexlive を使うか,だそうです.
YaTeX を使っている人も多いとは思いますが,ここでは標準の LaTeX-mode を使う場合について.何もしなくても基本的なことは全てできるのが魅力です.
まず,~/.emacs に次のように書いておきます:
(setq latex-run-command "platex -src-specials") (setq tex-dvi-view-command "pxdvi -s 6 -expertmode 0")
オプションはお好みでどうぞ.LaTeX-mode のキーバインドの主なものは以下の通り:
dvipdfmx と evince も呼び出したいので,tex-print を参考にして以下を ~/.emacs に追加しました.それぞれ ``C-c C-t'',``C-c C-r'' に割り当ててあります.
(setq tex-dvipdf-command "dvipdfmx")
(setq tex-view-pdf-command "evince")
(defun tex-dvipdf ()
"Run dvipdfmx."
(interactive)
(let ((print-file-name-dvi (tex-append tex-print-file ".dvi"))
test-name)
(if (and (not (equal (current-buffer) tex-last-buffer-texed))
(buffer-file-name)
;; Check that this buffer's printed file is up to date.
(file-newer-than-file-p
(setq test-name (tex-append (buffer-file-name) ".dvi"))
(buffer-file-name)))
(setq print-file-name-dvi test-name))
(if (not (file-exists-p print-file-name-dvi))
(error "No appropriate `.dvi' file could be found")
(if (tex-shell-running)
(tex-kill-job)
(tex-start-shell))
(tex-send-command
tex-dvipdf-command
print-file-name-dvi
t))))
(defun tex-view-pdf ()
"Run PDF viewer."
(interactive)
(let ((view-file-name-pdf (tex-append tex-print-file ".pdf"))
test-name)
(if (and (not (equal (current-buffer) tex-last-buffer-texed))
(buffer-file-name)
;; Check that this buffer's printed file is up to date.
(file-newer-than-file-p
(setq test-name (tex-append (buffer-file-name) ".pdf"))
(buffer-file-name)))
(setq view-file-name-pdf test-name))
(if (not (file-exists-p view-file-name-pdf))
(error "No appropriate `.pdf' file could be found")
(if (tex-shell-running)
(tex-kill-job)
(tex-start-shell))
(tex-send-command
tex-view-pdf-command
view-file-name-pdf
t))))
(add-hook 'latex-mode-hook
(lambda ()
(define-key latex-mode-map "\C-c\C-t" 'tex-dvipdf)
(define-key latex-mode-map "\C-c\C-r" 'tex-view-pdf)))
C-o で入力できる環境の補完リストのデフォルトは,以下のように ~/.emacs に書くことで追加できます:
(setq latex-block-names
'("gather" "gather*" "multline" "multline*" "align" "align*" "split"
"pmatrix" "bmatrix" "vmatrix" "cases" "dcases" "dcases*"
"theorem" "proposition" "lemma" "corollary" "remark" "example"
"normalframe" "block" "subequations"))
(2009/06/18) 欧文向けでは pdflatex というのがあって,TeX ソースから一発で PDF を生成するのが通常なのかもしれないのですが,日本では pTeX にそのような拡張が実装されてはいないので,dvipdfmx による変換が必須です.私は今まで,プレビューワとしては xdvi の方が使いやすいと思っていたのですが,最近 evince でも Space で Next,Shift + Space で Prev ができることに気付いたので,PDF 生成まで一気にできるようにしてみました.
(defun my-tex-file ()
"Prompt to save all buffers and run TeX (or LaTeX) on current buffer's file.
This function is more useful than \\[tex-buffer] when you need the
`.aux' file of LaTeX to have the correct name."
(interactive)
(when tex-offer-save
(save-some-buffers))
(let* ((source-file (tex-main-file))
(file-dir (file-name-directory (expand-file-name source-file))))
(if (tex-shell-running)
(tex-kill-job)
(tex-start-shell))
(tex-start-tex tex-command source-file file-dir)
(setq tex-print-file (expand-file-name source-file))
(let ((print-file-name-dvi (tex-append tex-print-file ".dvi")))
(tex-send-command tex-dvipdf-command print-file-name-dvi nil)
)))
あとは,キーバインドに割り当てておきます:
(add-hook 'latex-mode-hook (lambda () (define-key latex-mode-map "\C-c\C-f" 'my-tex-file) (define-key latex-mode-map "\C-c\C-v" 'tex-view-pdf)))
platex に -src-specials オプションが付いている件について.最近の TeX ではソースとの対応関係を DVI ファイルに埋め込む機能がついているそうで,これを使うと xdvi 上でクリックするだけでソースの対応する場所に Emacs が飛んでくれたりします.
この機能を使うには xdvi-search.el が必要です.大体以下の要領で:
$ wget http://xdvi.sourceforge.net/xdvi-search.el $ su # mkdir /usr/share/emacs/site-lisp/xdvi # mv xdvi-search.el /usr/share/emacs/site-lisp/xdvi/
そして,~/.emacs に以下のように書いておきます:
(server-start) (require 'xdvi-search)
あとは -src-specials オプション付きでコンパイルすれば,xdvi 上で Ctrl を押しながらクリックすると該当の場所に Emacs が飛ぶようになります.
おそらく一番誤用が多いのは,内積とノルムの記号だと思います.次のように書くのは間違いです:
\begin{align*}
<x, y>&=\sum_{i=1}^n x_iy_i\\
||x||_2&=\sqrt{\sum_{i=1}^n |x_i|^2}
\end{align*}
正しくは \langle, \rangle 及び \| を使います.
\begin{align*}
\langle x, y \rangle&=\sum_{i=1}^n x_iy_i\\
\|x\|_2&=\sqrt{\sum_{i=1}^n |x_i|^2}
\end{align*}
意外にその便利な機能が知られていないらしい AMS-LaTeX の amsmath パッケージの使い方のうち,特に便利なものを抜粋してみます.全機能は User’s Guide for the amsmath Package を読んで下さい.
eqnarray の改良版である gather 環境,align 環境などが使えます.特に eqnarray 環境の式揃えはデフォルトでは隙間が空いて醜いので,align 環境を使うのが解決策として手軽です.これらは式番号を自動的に振りますが,gather*, align* のように末尾にアスタリスクを付けることで,式番号を振らないようにすることができます.
まず,式揃えを特に考えずに式を並べるときは gather 環境を使います.
\begin{gather}
x_1=y_1\\
x_2=y_2+z
\end{gather}
式揃えが必要な場合は align 環境で揃える位置を ``&'' で指定します.
\begin{align}
x_1&=y_1\\
x_2&=y_2+z
\end{align}
align という名の通り,式を整列して配置することもできます.
\begin{align}
x_1&=y_1 & z_1&=w_1+a\\
x_2&=y_2+b & z_2&=w_2
\end{align}
長い数式を書くときは multline 環境が使えます.
\begin{multline}
x_1+x_2+x_3+x_4+x_5+x_6+x_7+x_8\\
+x_9+x_{10}+x_{11}+x_{12}+x_{13}+x_{14}+x_{15}+x_{16}\\
+x_{17}+x_{18}+x_{19}+x_{20}+x_{21}+x_{22}+x_{23}+x_{24}\\
+x_{25}+x_{26}+x_{27}+x_{28}+x_{29}+x_{30}+x_{31}+x_{32}
\end{multline}
= でつながれた1つの数式を複数行に渡って書く場合は equation 環境 + split 環境です.
\begin{equation}
\begin{split}
a&=b\\
&=c
\end{split}
\end{equation}
(1a), (1b), ... のような式番号を振るには subequations 環境を使います.
\begin{subequations}\label{hoge}
\begin{align}
x_1&=y_1\label{hoge1}\\
x_2&=y_2\label{hoge2}
\end{align}
and
\begin{equation}
x_3=y_3\label{hoge3}
\end{equation}
\end{subequations}
\eqref{hoge}, \eqref{hoge1}, \eqref{hoge2}, \eqref{hoge3}.
(\ref{hoge}) とわざわざ書かなくても,\eqref{hoge} で OK です.
\left\{\begin{array}[ll]...\end{array}\right. などと長ったらしく書く必要はありません.cases 環境が使えます.
\[
\delta_{i, j}=
\begin{cases}
1 & \text{if $i=j$},\\
0 & \text{if $i \neq j$}.
\end{cases}
\]
pmatrix 環境で一発です.
\[
\begin{pmatrix}
a & b\\
c & d
\end{pmatrix}
\]
() じゃなくて [] がいい方には bmatrix 環境です.
\[
\begin{bmatrix}
a & b\\
c & d
\end{bmatrix}
\]
そして,行列式は vmatrix 環境で.
\[
\begin{vmatrix}
a & b\\
c & d
\end{vmatrix}
\]
\binom で.
\[
\binom{n}{k}=\frac{n!}{k!(n-k)!}
\]
\cfrac で.
\[
\cfrac{1}{c_1+\cfrac{1}{c_2+\cfrac{1}{c_3+\cdots}}}
\]
amsmath ではなくて蛇足ですが,縦に長くて嫌だという人は以下を使いましょう (TeX Q & A 24450 より拝借,misc 様に感謝).
\makeatletter
\DeclareRobustCommand*\CFrac[2]{%
\mathinner{\mathchoice
{\@CFrac\textstyle\textfont{4}{#1}{#2}}%
{\@CFrac\scriptstyle\textfont{}{#1}{#2}}%
{\@CFrac\scriptscriptstyle\scriptfont{}{#1}{#2}}%
{\@CFrac\scriptscriptstyle\scriptscriptfont{}{#1}{#2}}}}
\def\@CFrac#1#2#3#4#5{%
{\dimen\tw@\fontdimen8#23\relax \dimen\tw@#3\dimen\tw@
\setbox\z@\hbox{\m@th$#1\;{#4}\;\mathstrut$}%
\@tempdima\dp\z@ \advance\@tempdima\dimen\tw@
\setbox\tw@\hbox{\m@th$#1\;{#5}\;\mathstrut$}%
\@tempdimb\ht\tw@ \advance\@tempdimb\dimen\tw@
\dimen@ \ifdim\wd\z@>\wd\tw@ \wd\z@ \else \wd\tw@ \fi
\setbox\z@\hbox to\dimen@{%
\hss\unhbox\z@\hss
\vrule \vrule\@width\z@\@depth\@tempdima}%
\setbox\tw@\hbox to\dimen@{%
\vrule\@width\z@\@height\@tempdimb \vrule
\hss\unhbox\tw@\hss}%
\dimen\tw@\fontdimen22#22\relax
\advance\dimen\tw@\ht\z@ \advance\dimen\tw@\dp\z@
\advance\dimen\tw@ .2\p@
\setbox\z@\vbox{\box\z@ \hrule \box\tw@}%
\advance\dimen\tw@-\ht\z@
\raise\dimen\tw@\box\z@}}
\makeatother
\[
\CFrac{1}{c_1}+\CFrac{1}{c_2}+\CFrac{1}{c_3}+\cdots
\]
\substack が使えます.
\[
\sum_{\substack{0 \leq i \leq m \\ 0 \leq j \leq n}} x_{i,j}
\]
amsthm パッケージでは,定理環境に関する便利な機能が提供されます.詳しい使い方は Using the amsthm Package を参照してもらうことにして,ここでは一番目に見えやすい proof 環境 について触れておきます.使い方は簡単です.
\begin{proof}
We can see that
\[
x=y.
\]
This completes the proof.
\end{proof}
このように,先頭に ``Proof'' を出力し,末尾には自動的に「証明終わり」の記号が追加されます.一時的に ``Proof'' の部分を変えたい場合はオプションで指定します.
\begin{proof}[Proof of Theorem 1]
We can see that
\[
x=y.
\]
This completes the proof.
\end{proof}
日本語の文章で,恒常的に ``Proof'' の部分を「証明」に変えたい場合は,preamble で \renewcommand{\proofname}{証明} とします.また,「証明終わり」の記号は \qedsymbol を定義し直すことで指定できます.例えば,よく本などで見かける縦長の四角を使いたい場合,私は次のようにしています:
\renewcommand{\qedsymbol}{\rule{0.33em}{1em}}
\begin{proof}
We can see that
\[
x=y.
\]
This completes the proof.
\end{proof}
ところで,証明が数式で終わる場合,ちょっと困ったことになってしまいます.
\begin{proof}
We can see that
\[
x=y.
\]
\end{proof}
この場合,\qedhere を追加することで回避できます.
\begin{proof}
We can see that
\[
x=y.\qedhere
\]
\end{proof}
さらに,式番号が振られている場合,
\begin{proof}
We can see that
\begin{equation}
x=y.\qedhere
\end{equation}
\end{proof}
となってしまいますが,\mbox で \qedhere を囲えば
\begin{proof}
We can see that
\begin{equation}
x=y.\mbox{\qedhere}
\end{equation}
\end{proof}
となります.あまり解決になっていない気もしますが.
gather 環境や align 環境で長々と数式を連ねていると,スペースが足りないために次のページに全ての数式が送られて間抜けな余白が生じてしまうことがよくあります.これを防ぐためには,\allowdisplaybreaks と書いておくと,そこから先では gather 環境中でも適宜改ページされるようになります.逆に改ページされないようにするには \allowdisplaybreaks[0] とします.
\documentclass のオプションに leqno を指定すると,式番号が左側に表示されるようになります.逆に右側に表示するには reqno です.また fleqn を指定すると式が左寄せになります.
幾度もの改訂により使われなくなった式番号が残ってしまうことがよくありますが,そんなときに使えるのが refcheck パッケージです.これを使えば,参照されていない式番号を簡単にリストアップすることができます.
例えば,下のようなソースがあったとします:
\documentclass{article}
\usepackage{amsmath}
\usepackage{refcheck}
\begin{document}
\begin{align}
a_1&=b_1, \label{hoge1} \\
a_2&=b_2, \label{hoge2} \\
a_3&=b_3.
\end{align}
\eqref{hoge1}.
\end{document}
これを2回コンパイルすると,次のような出力が出ます:
... Package: `refcheck' v1.9 <2004/03/31> options: showrefs, showcites, msgs, chckunlbld <Info by RefCheck> Unused label `hoge2' on page 1 <Info by RefCheck> Unlabelled equation (3) on page 1 ...
出力の DVI ファイルにもラベルなどの情報が表示されるので,これを見ながら未使用番号を削除しましょう.
mathtools パッケージも参照して下さい.
右下がりの点3つは \ddots でよく使いますが,右上がりの点3つを出力するにはどうすればよいでしょうか.探してみたところ,mathdots パッケージを読み込めば,\iddots で出力できるようです.
なお,mathdots を読み込むと \ddots, \vdots も微妙に変わります.どちらがよいと感じるかは人それぞれかと思います.
比較用です.上がデフォルト,下が mathdots です.
Acrobat があれば何も困らない話ではありますが,Linux でやるにはどうすればよいか.調べてみたところ,PDFjam というものを使うのが手っ取り早いようです.正体はただのシェルスクリプトなのですが,便利です.主要な Linux ディストリビューションではパッケージ化されているようなので,さくっとインストールしてしまいましょう.
インストールが終わったら,あとは結合したい PDF ファイルを並べて pdfjoin に読ませるだけです.
$ pdfjoin note1.pdf note2.pdf This is pdfjoin version 1.20 Temporary LaTeX file for this job is /var/tmp/6308.tex Calling pdflatex... Finished: output is /home/kmaeda/note2-joined.pdf
とまあ,こんな感じで簡単です.何をやっているかが気になったので,途中で止めてみました.
$ pdfjoin note1.pdf note2.pdf
This is pdfjoin version 1.20
Temporary LaTeX file for this job is /var/tmp/6537.tex
Calling pdflatex...
^C^Z
[1]+ Stopped pdfjoin note1.pdf note2.pdf
$ cd /var/tmp
$ ls -l 6537*
-rw-r--r-- 1 kmaeda kmaeda 0 2008-12-30 18:44 6537.aux
-rw-r--r-- 1 kmaeda kmaeda 4096 2008-12-30 18:44 6537.log
-rw-r--r-- 1 kmaeda kmaeda 310 2008-12-30 18:44 6537.msgs
-rw-r--r-- 1 kmaeda kmaeda 30833 2008-12-30 18:44 6537.pdf
-rw-r--r-- 1 kmaeda kmaeda 322 2008-12-30 18:44 6537.tex
lrwxrwxrwx 1 kmaeda kmaeda 22 2008-12-30 18:44 6537source1.pdf -> /home/kmaeda/note1.pdf
lrwxrwxrwx 1 kmaeda kmaeda 22 2008-12-30 18:44 6537source2.pdf -> /home/kmaeda/note2.pdf
$ cat 6537.tex
\documentclass[a4paper,portrait]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-,fitpaper=true,trim=0 0 0 0,offset=0 0,turn=true,noautoscale=false]{/var/tmp/6537source1.pdf}
\includepdf[pages=-,fitpaper=true,trim=0 0 0 0,offset=0 0,turn=true,noautoscale=false]{/var/tmp/6537source2.pdf}
\end{document}
なかなか力技でした.
mathtools パッケージは amsmath パッケージを更に拡張するものです.ここではその機能のうち,よく使うものだけ紹介します.
\mathtoolsset{showonlyrefs=true} と書くと,参照されている式番号のみを表示するようになります.ただし,コンパイルが3回 (つまり1回余分に) 必要になります.\mathtoolsset{showonlyrefs=false} とすれば,そこからは全ての式番号が振られるようになります.
dcases 環境は,cases 環境の式部分を displaystyle にしたものです.さらに dcases* 環境を使うと,2列目 (条件を書く部分) がローマン体になります.
textpos パッケージ はたぶん図とか文字とかの位置を指定するためのものです (未確認).プレゼンテーションとか向き? そのうち追記予定.
私はエディタなどでは M+ 1MN フォントを気に入って使っています.そこで,このフォントを LaTeX でもタイプライタ体として使うことを考えました.やり方は ``任意の欧文TrueTypeフォント・和文フォントの半角英数字部分を扱う方法(質は保証しない)'' とほぼ同じなのですが,一応ここでもメモしておきます.
まず,M+ 1MN フォントがあるディレクトリに移動し,tfm ファイルを作成します. そして,できた tfm ファイルを,texmf の tfm ディレクトリに移動します.
# cd /usr/share/fonts/mplus-outline-fonts/ # ttf2tfm mplus-1mn-regular.ttf mplus-1mn-regular@Unicode@ # ttf2tfm mplus-1mn-medium.ttf mplus-1mn-medium@Unicode@ # mkdir /usr/local/texlive/share/texmf/fonts/tfm/mplus # mv *.tfm /usr/local/texlive/share/texmf/fonts/tfm/mplus # mktexlsr
texmf/fonts/map/ttf2pk/config/ttfonts.map の末尾に以下のように書きます:
mplus-1mn-regular@Unicode@ mplus-1mn-regular.ttf Fontindex = 0 mplus-1mn-medium@Unicode@ mplus-1mn-medium.ttf Fontindex = 0
dvipdfmx でのフォント埋め込みのために,texmf/fonts/map/dvipdfm/base/cid-x.map の末尾に次のように書きます (これをやらないと,一見うまく埋め込めているように見えても不具合が出ることがあります):
mplus-1mn-regular@Unicode@ unicode mplus-1mn-regular mplus-1mn-medium@Unicode@ unicode mplus-1mn-medium
これでうまくいかない場合,texmf/dvipdfmx/dvipdfmx.cfg に以下の記述があるかどうかチェックし,なければ追記して下さい:
f cid-x.map
これで準備は終わりです.実際に使うには,プリアンブルに以下のように書きます:
\usepackage{ifpdf}
\DeclareFontFamily{OT1}{mplus-1mn}{}
\DeclareFontShape{OT1}{mplus-1mn}{m}{n}{%
<-> s * mplus-1mn-regular00
}{}
\DeclareFontShape{OT1}{mplus-1mn}{bx}{n}{%
<-> s * mplus-1mn-medium00
}{}
\ifpdf
\pdfmapline{=mplus-1mn-regular@Unicode@ <mplus-1mn-regular.ttf}
\pdfmapline{=mplus-1mn-medium@Unicode@ <mplus-1mn-medium.ttf}
\fi
\renewcommand{\ttdefault}{mplus-1mn}
なお,\ifpdf の部分は pdfLaTeX も使う人用です.pLaTeX しか使わない人には不要です.
mathptmx などの Times 系の数式フォントを用いる場合,v と \nu の区別がつかないことが問題になります.
一方,txfonts には varg というオプションがあり,g, v, w, y を数式らしいフォントで代用することができます.これを使えば区別がつきやすくなります.
mathptmx を使っていて,この txfonts の v のフォントだけを拝借したい場合,次のようにプリアンブルに書けば OK です.
\usepackage{mathptmx}
\DeclareSymbolFont{lettersA}{U}{txmia}{m}{it}
\SetSymbolFont{lettersA}{bold}{U}{txmia}{bx}{it}
\DeclareFontSubstitution{U}{txmia}{m}{it}
\DeclareMathSymbol{v}{\mathalpha}{lettersA}{"33}
mathptmx は数式フォントを Times 系のフォントに置き換えるパッケージですが,boldmath が欠けているという欠点があります.
Package mathptmx Warning: There are no bold math fonts on input line XX.
mathptmx の後に bm を読み込めば一応出力されるようになりますが,Linux + TeX Live の環境の場合,これで出力されるのはアルファベットは NimbusRomNo9L-ReguItal を,ギリシャ文字は StandardSymL を重ねただけのものであり,非常に汚くなります.
また,bm を mathptmx の前で読み込めば boldmath が Computer Modern になりますが,これはあまりにもミスマッチです.
一方,txfonts を使うとアルファベットが NimbusRomNo9L-MediItal に,ギリシャ文字が TX Fonts のものになります.
というわけで,txfonts よりも mathptmx を使いたくて,かつ boldmath を出力したいという方は,boldmath のときだけ txfonts を拝借すればよさそうです.これは,プリアンブルを以下のようにすることで実現できます.
\usepackage{mathptmx}
\SetSymbolFont{operators}{bold}{OT1}{txr}{bx}{n}
\SetSymbolFont{letters}{bold}{OML}{txmi}{bx}{it}
\SetSymbolFont{symbols}{bold}{OMS}{txsy}{bx}{n}
\SetSymbolFont{largesymbols}{bold}{OMX}{txex}{bx}{n}
\usepackage{bm}
なお,これは下で紹介している Belleek フォントを使う場合にも同様に活用できますが,mathtime ではギリシャ大文字のテーブルが合わずに文字化けを起こしてしまうので,これらの boldmath も使いたい場合は txfonts 用に再定義しておく必要があります.
\usepackage{mathtime}
\DeclareMathVersion{bold}
\SetSymbolFont{operators}{bold}{OT1}{txr}{bx}{n}
\SetSymbolFont{letters}{bold}{OML}{txmi}{bx}{it}
\SetSymbolFont{symbols}{bold}{OMS}{txsy}{bx}{n}
\SetSymbolFont{largesymbols}{bold}{OMX}{txex}{bx}{n}
\DeclareSymbolFont{txoperators}{OT1}{txr}{m}{n}
\SetSymbolFont{txoperators}{bold}{OT1}{txr}{bx}{n}
\DeclareFontSubstitution{OT1}{txr}{m}{n}
\DeclareMathSymbol{\Gamma}{\mathalpha}{txoperators}{0}
\DeclareMathSymbol{\Delta}{\mathalpha}{txoperators}{1}
\DeclareMathSymbol{\Theta}{\mathalpha}{txoperators}{2}
\DeclareMathSymbol{\Lambda}{\mathalpha}{txoperators}{3}
\DeclareMathSymbol{\Xi}{\mathalpha}{txoperators}{4}
\DeclareMathSymbol{\Pi}{\mathalpha}{txoperators}{5}
\DeclareMathSymbol{\Sigma}{\mathalpha}{txoperators}{6}
\DeclareMathSymbol{\Upsilon}{\mathalpha}{txoperators}{7}
\DeclareMathSymbol{\Phi}{\mathalpha}{txoperators}{8}
\DeclareMathSymbol{\Psi}{\mathalpha}{txoperators}{9}
\DeclareMathSymbol{\Omega}{\mathalpha}{txoperators}{10}
\usepackage{bm}
Belleek フォント (TrueTeX から入手可能) は,商用 Times フォントである MathTime のフリーな代替フォントです.普段は mathptmx などを使っていたのですが,こちらも試してみました.以下,TeX Live 環境の前提で (teTeX の場合は最初からファイルが揃っているので,即使えるみたいです).この場合,Belleek フォント自体は既にインストールされているはずなので,足りないファイルを追加して設定するだけです.
必要なファイル一覧:
mathtime.zip は ~/texmf/tex/latex/ にて展開,mtsyn.tfm は mtsy.tfmにリネーム,*.tfm は ~/texmf/fonts/tfm/mathtime/, mtmi.vf は ~/texmf/fonts/vf/mathtime/ あたりに置いておきます.~/texmf/tex/latex/mathtime/ にて
$ latex mathtime.ins
を実行すれば,mathtime.sty 他,必要なファイルが生成されます.あとは my{1,2,3}mtt.fd をこのメッセージに従い編集します (編集済みの my{1,2,3}mtt.fd は TeXLive に含まれていて,find すれば出てくるかも).あとは mktexlsr すれば準備完了です.
...
\usepackage{mathtime}
...
\begin{document}
...
で使えます.
なお,英語 (pdflatex など) の場合はこれでいいのですが,日本語 (platex など) で使う場合はさらに下記のようにプリアンブルに書く必要があります (cf. TeX Q & A No.18587):
\DeclareFontSubstitution{TS1}{ptm}{m}{n}
\DeclareFontShape{JY1}{mc}{b}{n}{<->ssub*gt/m/n}{}
\DeclareFontShape{JT1}{mc}{b}{n}{<->ssub*gt/m/n}{}
その他の Times 系数式フォントについては以下の通り: