USB メモリ活用講座
【付録・TeX の数式を Windows アプリケーションで利用する方法】

< 最終更新日: 2023-12-07 >

TeX の最大の魅力の一つは,美しい数式が出力できることです. この数式を Web ページに貼り付けたり,ワープロソフトやプレゼンテーションソフトなどの Windows アプリケーションに貼り付けて利用したい場合もあることでしょう. インターネット上には次のような TeX の数式から PNG 画像や,EPS ファイルなどを生成するサービスがあります:

これらのサービスを利用するには当然のことですがインターネット接続環境が必要です. このため学会発表直前にケアレスミスに気が付いて修正したいといった場合には,間に合わない可能性があります. また,その数式が先取権やオリジナリティを争うような内容を含んでいるとしたら,誰もがアクセスできるサービスで変換しても問題が生じないか考える必要があるでしょう. さらに,ポスターのように大判プリンタで印刷するための原稿を作成する場合には大きく拡大しても品質が低下しない画像が望ましいのですが,PNG のようにビットマップ (ラスタ) 形式の画像では十分な品質が得られない可能性があります.

そこで,ここでは dviout for Windows (以下 dviout) を使って,プレゼンテーションや通常サイズの文書作成ばかりでなく,ポスター作成の拡大印刷に耐える高品質な数式画像を作成する手順を紹介します. 他の手段として,TeX2img をポータブル化 して利用する方法もありますので,比較検討してみてください.

以下の操作を行うには,W32TeXdvioutLibreOffice/OpenOffice.org が正常に動作する環境が必要です. さらに,フォントインストーラー SAKURA のフォント一時インストール機能などによって,BaKoMa TrueType フォントを利用できる状態にしておく必要があります (具体的な方法は dviout:欧文 TrueType フォントの利用を参照).

  1. まずはテキストエディタを使って TeX ソースファイルを作成します. 例えば,次の内容のファイル eqntest1.tex を作成してみましょう. 1 ページには利用したい数式だけを記述し,それ以外のページ番号などは含まれないようにします (理由は後述). ドキュメントクラスとして jsarticle または jsbook を使い,ベースフォントサイズを調整すると作業性が向上します. 具体的な方法は新ドキュメントクラスのベースフォント指定をご覧ください.
    \documentclass{jarticle}
    \pagestyle{empty}
    \begin{document}
    \[
      x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
    \]
    \end{document}
    
  2. TeX ソースファイルをコンパイルして,dvi ファイルを作成します. エラーが出たらエディタで再編集して,修正します.
    platex eqntest1
    
  3. dviout で eqntest1.dvi を表示させ,利用したい数式が表示されるようにします (図1). ちなみに,この時点でメニューバーから [Display]-[Contrast]-[Reverse] を選択すると,背景が黒,文字が白の反転画像を生成することができます.
    dviout eqntest1.dvi
    
    図1・dvioutによる表示結果
    図1・dviout による表示結果
  4. 慣れないうちは,表示に使用されているフォントが欧文 TrueType フォントになっているか,確認しましょう (具体的な方法は dviout:欧文 TrueType フォントの利用を参照).
  5. メニューバーから [Display]-[Region]-[On] とたどり,矩形領域の指定を開始します (図2). ショートカットとして Ctrl キーを押し下げたまま [ キーをタイプしてもよいでしょう.
    図2・矩形領域指定の開始
    図2・矩形領域指定の開始
  6. 次の操作によって,利用したい数式を囲む矩形領域を設定します (図3). なお,次の操作は順不同で,何度でも繰り返し行うことができます.
    • 数式の左上にマウスカーソルを合わせ,Shift キーを押したまま左ボタンをクリックします.
    • 数式の右下にマウスカーソルを合わせ,Shift キーを押したまま右ボタンをクリックします.
    図3・矩形領域の指定(左上をShift+左クリック,右下をShift+右クリック)
    図3・矩形領域の指定 (左上を Shift + 左クリック,右下を Shift + 右クリック)
  7. メニューバーから [File]-[Save as image] とたどり,[EMF in clipboard] をクリックします (図4). この機能については必要に応じて補足情報もご覧ください.
    図4・矩形領域をクリップボードにコピー
    図4・矩形領域をクリップボードにコピー
  8. dviout の表示画面下部の Information Window に,クリップボードにコピーされた画像に関する情報が表示されます (図5). 確認したら [Close] ボタンをクリックすれば Information Window を閉じることができます.
    図5・クリップボードにコピーされた画像情報の表示
    図5・クリップボードにコピーされた画像情報の表示
  9. 数式を貼り付けたい Windows アプリケーションを起動します. ここでは LibreOffice のプレゼンテーションソフト Impress を起動したものとします. Impress のメニューバーから [編集]-[貼り付け] (または Ctrl + V をタイプ) すると,数式が貼り付けられます (図6). 数式が選択され,周囲にフィルハンドル (緑色の小さな四角) が表示された状態で,移動や拡大・縮小などの操作が可能です※1
    図6・Impressに貼り付けられた数式
    図6・Impress に貼り付けられた数式

図6 の状態で,そのままプレゼンテーションを実行したり,印刷をすれば問題は発生しないのですが,ファイルに保存して別の PC で開いたりすると,数式が図7 のように文字化けしてしまうことがあります.

図7・文字化けした数式
図7・文字化けした数式

文字化けの原因は,BaKoMa TrueType フォントが利用できない環境で,代替フォントによる表示が行われる場合に,数式を構成するための特殊な記号類が含まれていないためです.

文字化けを起こさない可搬性 (ポータビリティ) の高い画像にするには,図6の貼り付け直後の正常な表示が保たれている状態で,数式の領域を右クリックし,[変換]-[輪郭に変換] を実行します. これで数式全体がベクトルデータに変換され,BaKoMa TrueType フォントの無い環境でも正しく表示できるようになります. なお,ベクトルデータへの変換を行うと,図3 で設定した矩形領域外の要素 (ページ全体) も復元されてしまいます. これを避けるためには,TeX のソースを作成する段階で,1 ページあたり 1 数式となるようにしなければならないようです (ページ番号などのヘッダ/フッタも出力しないようにしなければなりません). また,LibreOffice のアプリケーションで輪郭への変換を行えるのは,Impress か Draw だけです. ワープロソフトの Writer に数式を貼り付けたい場合は,一旦 Impress か Draw で輪郭に変換し,その画像をコピー&ペーストで貼り付けてください. 貼り付け先のアプリケーションは,Microsoft の PowerPoint や Word でも構いません.

新ドキュメントクラスのベースフォント指定

三重大学・奥村先生の 新ドキュメントクラス (jsarticle,jsbook) を利用すると,ベースフォントサイズの選択肢が増えるので,適切な大きさの数式を表示させるのに便利です. 例えばドキュメントクラス指定を次のように書き換えれば,ベースフォントサイズが 21pt に設定され,紙面が A4 横になり,dviout は自動的に横長の紙面に対応した表示となります.

\documentclass[21pt,landscape,papersize]{jsarticle}

ベースフォントサイズは 9pt, 10pt (default), 11pt, 12pt, 14pt, 17pt, 21pt, 25pt, 30pt, 36pt, 43pt から選択可能なはずです※2. なお,欧文 TrueType フォントではなく,ビットマップフォント (PK フォント) を利用している場合にはサイズ毎にフォントファイルが必要となることに注意してください.

dviout の Save as image に関する補足情報

dviout の [File]-[Save as image] (図4) には,[EMF in clipboard],[BMP in clipboard],[File] の選択肢があります.

BMP in clipboard
dviout のウィンドウにその時点で表示されている大きさのビットマップ (ラスタ) 画像として,矩形領域をクリップボードに取り込みます. プレゼンテーションのように PC の画面やプロジェクタ程度の解像度での出力でよければ,十分な品質が得られます (むしろ,dviout では解像度の高い白黒 2 値のフォントを,アンチエイリアス処理によるグレースケール画像として表示しているので,切り取ったままのサイズで利用するのであれば,もっとも高品質かもしれません). しかし,プリンタへの印字では大幅に品質が低下します.
なお,Windows 7 で欧文 TrueType フォントを利用している場合に,複数回この操作を行うと dviout が落ちてしまうことがあるようです.
EMF in clipboard
dviout のウィンドウ中の表示サイズには依存しない画像として,矩形領域をクリップボードに取り込みます. PK フォントを利用している場合は,フォント生成時の解像度のビットマップ情報がクリップボードにコピーされます. TrueType フォントの場合と異なり,文字化けしないのでポータビリティは高く,プレゼンテーションや通常サイズの文書作成ではまずまずの品質で出力されるはずです. しかし,ポスター印刷のような拡大出力には向きません.
File
よく利用されるファイル形式としては BMP,EMF,PDF で保存することができます. 出力プラグインを dviout の実行ファイルと同じフォルダに置いておくと,PNG と EPS でも保存できます. ただし,PNG では透過色は利用できず,EPS もラスタ形式での出力となります. 詳しくは dviout をインストールしたフォルダにある DOC\cmode.html の「11.4 PNG/EPS 等の画像出力」を参照してください.
透過 PNG 画像を生成したい場合は,IrfanView の画面キャプチャの利用を推奨します.