Skip to content

LaTeXBuild

INADA Naoki edited this page Jan 5, 2016 · 2 revisions

TeX ディストリビューションについて

以下では Sphinx で LaTeX を利用して PDF を作成するために必要な TeX 環境について説明します。

Sphinx では LaTeX 経由で PDF を作成する機能があります。 この機能を利用するには、LaTeX 本体以外にも周辺ツール、スタイルファイルなどが必要です (もちろん LaTeX で文書を作成する場合もこれらの周辺ツールやスタイルファイルは必要です)。 これらの LaTeX 環境を一括して提供してくれるものが TeX ディストリビューションです。 TeX ディストリビューションとして代表的なものとしては、 teTeX(開発終了), TeXLive, MacTeX, MikTeX, W32TeX 等があります。

一方 LaTeX そのものは禁則処理など日本語特有の部分をうまく処理できないので、 LaTeX で日本語の文書を作成する場合、ASCII が開発した pTeX (publishing TeX) が デファクトスタンダードとして利用されています。

さらに Sphinx はデフォルトエンコーディングとして UTF-8 で処理するので、 UTF-8 対応した pTeX が必要となります。

また、現状では pTeX は PDF を直接出力できないので dvi (LaTeX がデフォルトで出力するフォーマット)から PDF を出力するために dvipdfmx というツールも必要です。

つまり、Sphinx で LaTeX から PDF を作成するのに、TeX ディストリビューションが必要で、 さらに、日本語を処理するには pTeX (UTF-8 対応) が必要になります。

以前は日本語 TeX 環境はメジャーな TeX ディストリビューションに含まれていなかったので、 日本語環境を揃えるためのパッチ集が配布され、 各自でそのパッチを当ててビルドするといったことが行なわれていました。

しかし、TeXLive 2010 から日本語 TeX がディストリビューションに取り込まれ、 デフォルトで日本語が利用できる TeX ディストリビューションがあらわれてきました。

Windows では W32TeX という日本語 TeX ディストリビューションが古くからあるようです。

少なくとも、以下の TeX ディトリビューションが Sphinx の日本語 PDF のビルドに利用できます。

  • TeXLive 2010 以降 (ディストリビューションに含まれる)
  • W32TeX (ディストリビューションに含まれる、Windows のみ)
  • pTeXLive2009 (日本語パッチ)
  • pTeXLive2008 (日本語パッチ)
  • pteTeX3 (日本語パッチ)

代表的な Linux ディストリビューションは標準で 以下のような日本語 TeX パッケージを提供しているようです(最新の状況を反映していないかもしれません)

Linux ディストリビューション 利用できる 日本語 TeX パッケージ
CentOS UTF-8 対応×, dvipdfmx がない
Ubuntu UTF-8 対応×
Debian UTF-8 対応×
Fedora UTF-8 対応×
Vine task-texlive UTF-8 対応○

これを見るとあまり日本語 TeX 環境は充実しているとはいえないようです。

Sphinx で PDF をビルドすることだけを目的とするなら、 TexLive 2010 以降がビルドの必要がなく手間が少ないと思います。 各環境での TeX 環境のインストールに関しては後述します。

また、Fedora, CentOS など rpm を利用するディストリビューションなら Vine の rpm を移植するという方法も考えられます。

UTF-8 対応のチェックは

 $ platex --help
...
-kanji=STRING           set Japanese encoding (STRING=euc|jis|sjis|utf8)
...

のように utf8 がふくまれていれば ok でしょう。

各 OS での TeX 環境のインストール

OS 依存が少ないインストール法としては、 最新の TeXLive をインストールするという手があります。

しかし、OS 毎に絞った話題を扱うことで、より便利に簡単なインストールができる場合があるため、 以下では、各 OS 特有の話題に絞ってより便利なインストール方法を紹介します。

Linux/BSD

多くの Linux ディストリビューションや BSD のパッケージングシステムでの 日本語 TeX 環境サポートは十分なものとはいえないようです。

TeXLive をそのままインストールするのが一番良さそうです。

さらに、tlptexliveリポジトリ - ptexlive Wiki - の tlptexlive レポジトリを利用できる場合は、 更新するといいかもしれません。

Vine Linux

日本語 TeX 環境のサポートに関しては Vine Linux が Linux ディストリビューションの中では優れています。

  • texlive-collection-basic
  • texlive-collection-latexextra

の二つのパッケージを導入すれば Sphinx の LaTeX での PDF ビルドに必要な最低限の環境が得られます。

Mac OS X

最も手軽なのは JIS X0212 for pTeX の Drag & Drop UpTeX です。 ただし、Sphinx で利用するには UpTeX.app/teTeX/bin に PATH を通す必要があります。

TeXLive を元にした MacTeX というものもあるようです。 サイズが 1.8G 程度と大きいのが欠点でしょうか。 TeX 環境の更新に tlptexliveリポジトリ - ptexlive Wiki - も利用できるようです。

また、以下のパッケージシステムには TeXLive パッケージが含まれています。

  • MacPorts
  • Fink
  • Mac OS X WorkShop

ただし、Mac のパッケージシステムの多くはバイナリインストールできないので、 ビルドに手間がかかります。

実際パッケージシステムの homebrew は MacTeX の利用を推奨しているようです。

Mac OS X WorkShop はバイナリインストールできますが、 現在 Lion 版がリリースされていないといった問題があります。

Windows

Windows では W32TeX を利用するのがいいでしょう。

インストールには TeXインストーラ 3 が便利です。

Sphinx 本体の日本語向けの修正

LaTeX ではクラスファイルと呼ばれるファイルを利用することで、 文書の用途に応じてレイアウトなどを変更できます。

日本語用のクラスファイルは pTeX に付属する jarticle, jreport, jbook と 奥村晴彦氏によってメンテナンスされている pLaTeX2e 新ドキュメントクラス jsarticle, jsbook があります。 LaTeX では article, report, book はそれぞれ論文、報告書、書籍用というように 文書量、用途に応じてこれらが使い分けされます。

これらを利用するには conf.py で

language = 'ja' # 日本語 TeX を利用するのに必要
latex_docclass = {"howto": "jsarticle", "manual": "jsbook"}

の様に設定します。

howto, manual は Sphinx 独自のクラスファイルで、 おおまかには howto が短い文書、manual が長い文書用に利用されます。 上記設定を行うことで、howto, manual がそれぞれ jsarticle, jsbook を 拡張したクラスファイルとして利用されます。

もちろん jarticle や jreport も利用できますが (jbook は動作しません)

js クラスの方が細かい修正が加えられているので、特に理由が無い場合、js クラスを利用するのがいいでしょう。

ただ、Sphinx 1.1 以前ではこれらのクラスファイルでのマクロの定義が Sphinx のクラス、スタイルファイルと競合するため一部うまく表示されません。

そこで、Sphinx に LaTeX のクラスファイルを正しく動作させるための変更を加えています。 具体的な変更点については Sphinx への pull request: https://bitbucket.org/birkenfeld/sphinx/pull-request/33 を参照して下さい。

この変更によって以下の問題が解決されます。

  • 章の表示で「第1章」となるべきところ(章の初めのページやフッタ)で「第1」となる
  • 目次で「付録A章」のように「章」が表示され付録のタイトルとの間隔がつまる
  • jsbook でフッタと本文の間隔がつまる
  • jsbook で参考文献や索引が目次で二重に表示される
  • js クラスで 10pt 以外のフォントサイズを設定すると内容がページをはみだす
  • PDF のしおりの文字化け

これらの変更は以下のようにして、 \kanjiskip といった日本語クラスファイル特有の LaTeX コマンドが定義されているときのみ動作し、 日本語クラスファイル以外では動作しないようにしています。

\ifx\kanjiskip\undefined\else
    ...
    日本語クラスファイル向けの変更
    ...
\fi

フォントの設定

以下は LaTeX のフォントを変更する設定など、単純なビルドとは関係ない内容なので 興味の無い方は読み飛ばして構いません。

欧文フォント

たとえば、TeX ではこのようなフォントが使えるようです。 The LaTeX Font Catalogue – Front Page

例えば、Palatino フォントが使いたければ、conf.py に

latex_elements = {
    ...
    'fontpkg': r'\usepackage{palatino}'
    ...
}

と書きます。

TeX ディストリビューションにフォントパッケージが含まれていない場合は別途インストールが必要です。

和文フォント

PDF だけに限定すれば、dvipdfmx の設定によって埋め込むフォントを決めるのが一般的だと思います。

例えば、フォントを埋め込まない(環境によってフォントが変わります、ファイルサイズも若干小さくなる)場合は、 $TEXMFLOCAL/dvipdfmx/dvipdfmx.cfg に

f noEmbed.map

と書いて、 $TEXMFLOCAL/fonts/map/noEmbed.map に

rml  H !Ryumin-Light
gbm  H !GothicBBB-Medium
rmlv V !Ryumin-Light
gbmv V !GothicBBB-Medium

と書けば埋め込まれないはずです。 ! を書くと埋め込まれません。

IPA フォントを埋め込む場合には $TEXMFLOCAL/dvipdfmx/dvipdfmx.cfg に

f ipa.map

にして、 $TEXMFLOCAL/fonts/map/ipa.map に

rml  H ipam.ttf
rmlv V ipam.ttf
gbm  H ipag.ttf
gbmv V ipag.ttf

と書いて、 $TEXMFLOCAL/fonts/truetype/ 以下に ipam.ttf, ipag.ttf の名前でシンボリックリンクをはっておき、 管理者権限で

 # texhash

を実行すれば、以降 IPA フォントが埋め込まれた PDF が作成されるはずです。

$TEXMFLOCAL は TeX ディストリビューション等環境に依存して変わります。 例えば TeXLive 2010 では /usr/local/texlive/2010/texmf-local など。

参考情報