以前書いた記事(DoxygenのLaTeX出力で日本語を使う: 2011年)もいい加減古くなってきたので、2015年版を書くことに決めました。

こんなふうに、doxygenで生成、sedで修正、make.batを実行の順でPDFドキュメントが生成されるようにしました。

doxygen
sed -f refmanu.sed -i refman.tex
sed -f make.sed -i make.bat
./make.bat

準備

まず必要なものです。

Doxygen
現在最新版の1.8.10.1を使っています。
pLaTeXまたはupLaTeX
今回もW32TeXを使いました。
wasysymパッケージ
Doxygenが生成したソースで使われています。CTAN: Package wasysymよりダウンロードして、share/texmmf-local/tex/latexに置きました。
sed
今回も生成されたファイルの修正に使っています。

前回と比べ、xcolorとlistengsは別途用意する必要が無くなりました。W32TeXの配布物に含まれるようになりました。

Doxyfileの編集

uplatexを使うよう指定します。

LATEX_CMD_NAME = uplatex

あるいはplatexを使うなら次のようにします。

LATEX_CMD_NAME = "platex -kanji=utf8"

これに加え、USE_PDFLATEX = NOに変更します。

このほかもちろん、GENERATE_LATEX = YESが必須です。

ファイル生成後の修正

ここまできたらdoxygenコマンドを実行します。そして、生成されたファイルに対する修正をsedで行います。

refman.tex

こんなファイルrefmanu.sedを用意し、sed -f refmanu.sed -i refman.texを実行します。

2a\\\usepackage[deluxe,jis2004,uplatex]{otf}
2a\\\usepackage[table,dvipdfmx]{xcolor}
2a\\\renewcommand{\\kanjifamilydefault}{\\gtdefault}
2a\\\DeclareFontShape{JY2}{hgt}{bc}{n}{<->ssub*hgt/bx/n}{}
2a\\\DeclareFontShape{JT2}{hgt}{bc}{n}{<->ssub*hgt/bx/n}{}
s/\\usepackage\[.*,pagebackref=true\]{hyperref}/\\usepackage[dvipdfmx,pagebackref=true]{hyperref}/g
s/  unicode%/  unicode=false%/g
s/\(\\hypersetup\)/\\usepackage{pxjahyper}\n\1/g
s/\\usepackage\[export\]{adjustbox}/\\usepackage[export,dvipdfmx]{adjustbox}/g
s/\\usepackage\[table\]{xcolor}/\\usepackage[table,dvipdfmx]{xcolor}/g
s/\\usepackage{graphicx}/\\usepackage[dvipdfmx]{graphicx}/g
s/\\usepackage{geometry}/\\usepackage[dvipdfm]{geometry}/g

やっていることの大雑把な説明を書いておきます。

otfパッケージを追加する
JISメトリクスの使用と、通常ウェイトと太字で別書体の割り当て(deluxeオプション)が目的です。deluxeが不要なら、otfではなくminijsで十分かもしれません。
本文をゴシック体にする

もともと\renewcommand{\familydefault}{\sfdefault}があるので、\renewcommand{\kanjifamilydefault}{\gtdefault}を追加します。
xcolorパッケージを最初のほうに読み込む
これがないと、dvipdfmxがこんな警告メッセージを出力して、文字色が効かなくなりました。

dvipdfmx:warning: Unrecognized color name: gray, keep the current color
dvipdfmx:warning: Unrecognized color name: rgb, keep the current color
見出しなどの和文書体をデフォルトの太字にする
DeclareFontShapeの2行です。もともとのrefman.texには\fontseries{bc}\selectfont%という行が2箇所あります。{bc}は太字かつCondensedの意味のようです。とりあえず普通の太字bxで代替させています。uplatexを使わないなら、{JY2}{JY1}にします。otfパッケージを使わないなら、{hgt}{gt}にします。
ドライバのオプションを持つパッケージに対して、dvipdfmxまたはdvipdfmを指定
対象はhyperref, adjustbox, xcolor, graphicx, geometryです。
PDFのしおり(ブックマーク)の対処

hyperrefパッケージのunicode=falseオプションとpxjahyperパッケージの追加です。pxjahyperはW32TeXに含まれています。

なお、2aとして2行目に追加している理由は、LATEX_BATCHMODEがYESでもNOでもうまくいくようにするためです。

otfパッケージのdeluxeオプションは、たとえばヒラギノのW3とW6を持っていれば有効活用できるでしょう。

make.bat

次はmake.batの修正です。これもsedスクリプトファイルmake.sedを用意しました。実行はsed -f make.sed -i make.batです。

s/dvips -o refman.ps refman.dvi/dvipdfmx -o refman.pdf refman.dvi/g
/gswin32c.*/d

dvipdfmxを呼び出すようにするだけです。

感想

DeclareFontShapeやdvipdfmxオプションの追加など、前回よりがんばりました。

次回試してみたいことが2つあります。

  • Condensedな書体として、Meiryo UIやYu Gothic UIを割り当ててみる。
  • refman.texを直接修正する代わりに、doxygen -w latexおよびLATEX_HEADERで対処してみる。

参考

Beamer は dvipdfmx をサポートするか否か? (2) – マクロツイーター: minijsなど、欧文前提のdocumentclassで和文書体を扱うことについて。

スポンサード リンク

この記事のカテゴリ