TeX の数式を DTP ソフトに

Illustrator などのソフトウェアできれいな数式を作るのって,大変ですよね。 TeX, LaTeX を使えば簡単にきれいな数式ができます。



数式用のフォントを追加して Illustrator などで頑張る方法

TeX で無指定で使われるフォントは,本文は Computer Modern Roman 10pt (cmr10),数式は Computer Modern Math Italic 10pt (cmmi10) です。 これらは(PostScript アウトラインデータ形式の)OpenType フォント,TrueType フォント,Type 1 フォントのそれぞれの形式で配布されていますので,これらを他のアプリケーションで使うことができます。 もちろん Illustrator でも使えます。

Computer Modern フォントの OpenType 形式が CTAN:fonts/cm/ps-type1/bakoma/otf/ から,Latin Modern フォントの OpenType 形式が CTAN:fonts/lm/fonts/opentype/public/lm/ から入手できます。

TrueType 形式の Computer Modern フォントの一つである BaKoMa フォントは,例えば CTAN:fonts/cm/ps-type1/bakoma/ttf/filebakoma.lzh から入手できます。 Type 1 フォント形式の一つである PFB 形式のフォントは TeX に標準で入っています。 $TEXMF/fonts/type1/{bluesky,bakoma}/*.pfb を検索してください。

数式を EPS 形式で出力して取り込む

複雑な数式は LaTeX を使ってタイプセットし,EPS などの形式でインポートするとよいでしょう。

お手軽なツールを使う方法 (Windows/Mac)

TeX の数式をクリック一つで EPS/PNG/JPEG/PDF 形式などの画像ファイルに変換するツール TeX2img があります。 コマンドラインを使いたくない人は,このツールで EPS ファイルを生成し,InDesign や Illustrator に「配置」するのがお手軽でしょう。 この方法は EPS ファイルの文字をアウトライン化してくれるので,数式用フォントを OS にインストールしなくても文字化けの心配がありません。

コマンドラインを使う方法

例えば次の数式を作ってみましょう。

LaTeX で作った数式

お好きなテキストエディタに次のように打ち込んでください(Linux でも macOS でも Microsoft Windows でも何でもかまいません)。

\documentclass{article}
\pagestyle{empty}
\begin{document}
\[ \int_{0}^{\infty} \frac{\sin x}{\sqrt{x}} dx = \sqrt{\frac{\pi}{2}} \]
\end{document}

これを例えば “testeq.tex” というファイル名で保存します。

LaTeX がインストールしてあるとして,次のようにコマンドを打ちます(あるいはマウスでこれに相当する操作をします)。

$ latex testeq.tex
$ dvips -E testeq.dvi -o testeq.eps

これで filetesteq.eps という EPS ファイルができます。 ここで “-E” は EPS 形式で保存するオプションです。 これを忘れると EPS でない PostScript 形式になってしまいます。 この方法は(文字をアウトライン化しないので)テキストを保持した状態の EPS ファイルを出力します。

InDesign に配置

上で作った EPS ファイルをそのまま InDesign 2.0 に「配置」すると,次のようになります。

InDesign 2.0 に配置したところ

上の例では,LaTeX のデフォルトのフォント (Computer Modern) を使いました。 「数式フォントの比較」のページに,LaTeX で簡単に使えるいくつかの数式フォントを比較しています。

InDesign で数式を扱う場合は inDesignにTeXの数式を貼り込むスクリプト「インてふてふ」 が便利です。

Illustrator に配置 1

【追記】 Illustrator CS の環境設定で「リンクされたEPSに低解像度の表示用画像(プレビュー)を使用」のチェックを外してリンク配置すれば,EPS でも問題なく文字が表示されました。 PDF でもリンク配置なら問題ありません。macOS のプレビューを使えば PDF を範囲指定してクロップできます。

箱しか見えない EPS 画像
Illustrator から保存したプレビュー附き EPS 画像
Illustrator 10.0.3 に配置したところ。箱しか見えない。Illustrator から保存した EPS。

EPS を作るところまでは上と同じです。 ただ,この EPS をそのまま Illustrator に[ファイル]→[配置...](「配置」ダイアログボックスの「リンク」チェックボックスをオフにした状態で)すると,「所在不明のフォントは,初期設定のフォントで代用されます。」というメッセージが出て,文字化けします。

別の方法も後で書きますが,簡単かつ確実な方法は,「配置」ダイアログボックスの「リンク」チェックボックスをオンにすることです。 dvips の出力する EPS にはプレビュー画像が附いていませんので,配置してもただの箱に見えます。 これでも PostScript デバイス(PS プリンタや Adobe Acrobat Distiller DC)に出力すれば,きれいに出ます。 また,Illustrator から EPS で保存しても大丈夫です(保存時に「配置した画像を含む」チェックボックスをオンにします)。

EPS にプレビューを付けておけば,配置したときにプレビューを見ることができますので便利です。 GSview の [Edit] → [Add EPS Preview] でプレビューが付けられます。

この方法では Illustrator から直接 PDF で保存すると文字化けしますので,PDF 化するならいったん EPS で保存してから Adobe Acrobat Distiller DC で処理してください。

Illustrator に配置 2 (Microsoft Windows)

箱じゃ不安,あるいは Illustrator の中で数式を編集したい,という場合には次のようにします。 ただし,Illustrator のフォントリストにたくさんのフォントが追加されてしまいますのでご注意ください。

あらかじめ $TEXMF\fonts\type1\ フォルダー(例えば C:\texlive\2018\texmf-dist\fonts\type1\)をフォルダーごと "C:\Program Files\Common Files\Adobe\Fonts\" 以下のフォルダーにコピーまたはリンクしておきます(Thanks: 長さん qa:20350,角藤さん qa:20353)。 こうすると,TeX で使う多数の Type 1 フォントを Windows に登録せずに Adobe 製品で使うことができます。 Illustrator から直接 PDF で保存しても大丈夫です。

mathpazo,newtx,newpx 等のパッケージを使った場合は,dvips に PostScript Level 2 での基本35書体をダウンロードするオプションを付けます(TeX Live なら “-Pdownload35”,W32TeX なら “-Pdl”)。

Illustrator に配置 3 (macOS)

(この項については内山さんからご教示をいただきました。)

macOS でも,TeX からは UNIX や Windows と同じ Type 1 (PFB) フォントが使えますが,一般のアプリケーションからは使えません。 http://www.botik.ru/~znamensk/CTAN/fonts/cm/ps-type1/bluesky/ から cmps-oztex.hqx または cmps-textures.hqx をダウンロードしてお使いください(フォントについては両者の中身は同じようです)。 スクリーンフォントも必要です(→ MacでフォントをAdobeのアプリが認識しない)。

インストールの場所は,Adobe 製品だけから使うなら /Library/"Application Support"/Adobe/Fonts/ 以下ですが,macOS では次の場所のいずれかに入れるのがいいかもしれません。 macOS では次の順にフォントを探してくれます(→ 「[Mac OS]OS Xにおけるフォント(font)ファイルの保存場所3ヶ所とその意味について|およびインストール方法」,「Mac OS X:フォントの保存場所とその目的」,「Mac OS X: Font locations and their purposes」)。

  1. /Library/"Application Support"// 以下(特定のアプリケーション用)
  2. ~/Library/Fonts// (= /Users/$USER/Library/Fonts//) 以下 (User ドメイン用。自分だけで使うなら)
  3. /Library/Fonts// 以下(Local ドメイン用。ローカルユーザ全員で使うなら)
  4. /Network/Library/Fonts// 以下(Network ドメイン用)
  5. /System/Library/Fonts/ (System ドメイン用。通常はここにはさわらない)

私は ~/Library/Fonts/ の中に一つフォルダを作って,その中にまとめて入れました(macOS 10.2 以降で可能)。

ただ,Mac 版 Illustrator 10.0.3 では PDF で保存すると一部の文字が化けます。 “\[ \Gamma - \gamma \]” で実験してみてください(“$\Gamma$” や “$-$” は化けやすいことで有名)。 Windows 版なら大丈夫なのに残念です。 Mac 版でも,Illustrator から EPS で保存したものは大丈夫です。 PDF にしたければ EPS で保存して Adobe Acrobat Distiller DC で変換すればいいでしょう。

念のため TrueType 形式の Computer Modern フォント(BaKoMa フォント: filebakoma.lzh)でも試してみました。 「テキストエディット」では使えましたが,Illustrator ではフォントリストには出るけれども表示できません。

WMF/EMF に変換する方法

この方法は Microsoft Windows でしか使えません。また,あらかじめ Windows のシステムに BaKoMa の Computer Modern TrueType フォントなどをインストールしておく必要があります。

dviout(2002年10月9日以降のもの)では次のようにして EMF 形式でクリップボードにコピーできます。 まず [Display] → [Region] → [On](ショートカットは “Ctrl + [”)にして,Shift を押しながら左クリックで矩形領域の左上隅,やはり Shift を押しながら右クリックで右下隅を指定します。 これで [File] → [Save as image] → [EMF in clipboard](ショートカットは “Alt + (F, S, E)”)すると,クリップボードにコピーされます。 これで Illustrator などの EMF 形式を理解するソフトに貼り付ければ OK です。

また,pstoeditGSview と同じところ(標準では "C:\Program Files\Ghostgum\pstoedit\")にインストールしておけば,GSview から [Edit] → [Convert to vector format...] で WMF や EMF に変換できます。

TeX2img は EMF 形式のファイルを出力することができます。 また,Windows 版に付属の pdfiumdraw (TeX2img が内部から利用している)を使い

> pdfiumdraw --emf input.pdf

とすることで,input.pdf を EMF へと変換することもできます。

Ghostscript でアウトライン化する方法

Ghostscript の eps2write デバイスを使ってアウトラインを取る方法もあります(→ qa:20472)。 eps2write は gs9.14 以降で追加されたデバイスなので,お使いのバージョンが gs9.14 より古い場合は以下 epswrite と読み替えてください.

まず,次のように充分大きいサイズで式を作ります (jsclasses なら 簡単にできます)。 文字が小さいとアウトラインではなくビットマップ化されてしまいます。

\documentclass[30pt]{jsarticle}
\pagestyle{empty}
\begin{document}
\[ \int_{0}^{\infty} \frac{\sin x}{\sqrt{x}} dx = \sqrt{\frac{\pi}{2}} \]
\end{document}

次のコマンドを順に打ち込みます(Unix-like OS の場合)。

$ platex testeq.tex
$ dvips -E testeq.dvi -o testeq.eps
$ eps2eps testeq.eps testeq2.eps

この eps2eps は Ghostscript で eps2write デバイスを使うシェルスクリプトです。 Microsoft Windows ならおそらく次に相当します(さらに正確には “-dDEVICEWIDTH=250000 -dDEVICEHEIGHT=250000” というオプションも含んでいます)。

>rungs -dSAFER -q -dBATCH -dNOPAUSE -sDEVICE=eps2write -sOutputFile=testeq2.eps testeq.eps

これでアウトラインが取れます。日本語も大丈夫です。 できた testeq2.eps の %%BoundingBox: 行がなぜか変なので,元の testeq.eps の %%BoundingBox: 行と置き換えます。 これで testeq2.eps はフォントを含まないアウトラインだけの EPS になり,Mac でも Windows でも Illustrator などに安全に配置できます。

jsclasses を使う方法以外に,\scalebox で数式を拡大する方法もあります。 この場合には 次の例のように数式を $\displaystyle ...$ で書くといいでしょう。

\documentclass{article}
\pagestyle{empty}
\usepackage[dvips]{graphicx}
\begin{document}
\scalebox{3}{$\displaystyle
  \int_0^\infty \frac{\sin x}{\sqrt{x}} dx = \sqrt{\frac{\pi}{2}}$}
\end{document}

別解として,dvips に “-x 3000” のようなオプションを与えれば3倍に拡大されます。

[2006年7月3日 追記] 次のようにすれば,充分大きいサイズで式を作る必要もなく,%%BoundingBox: 行も変にならないようです(→ qa:43337)。

>rungs -dSAFER -q -dBATCH -dNOPAUSE -sDEVICE=eps2write -dEPSCrop -r9600 -sOutputFile=testeq2.eps testeq.eps

端が欠ける場合は “-dEPSCrop” を外せばいいようです。

なお,お手軽ツール TeX2img も eps2write デバイスを使用して文字をアウトライン化しています。 ほかにも,TeX2img は便利な画像変換ノウハウを多く備えていますので,(たとえ TeX2img を使わないとしても,Windows/Mac 以外でも)この画像変換スキームは参考になることでしょう。

他の方法

LibreOffice/Apache OpenOffice Math

LibreOffice/Apache OpenOffice Math は OLE に対応しています。

LaTeX Equation Editor (LaTeX EE)

LaTeX Equation Editor (for Windows) に OLE 機能を追加したものが LaTeX Equation Editor (LaTeX EE) です。 本来は MiKTeX を必要とするソフトウェアですが,MiKTeX の texify.exe の代わりに TeX Live や W32TeX の uplatex.exe を指定すれば MiKTeX がなくても動作します。 PNG 形式での貼りつけになるので拡大・縮小に弱く,数式の背景色が透過されず白地のままであるという注意点があります。

上記以外の方法

プレゼンツールを参照してください。

リンク

オマケ


Last-modified: 2019-09-21 (土) 05:24:48 (33d)