こんなふうに、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で和文書体を扱うことについて。
スポンサード リンク |
この記事のカテゴリ
- プログラミング一般 ⇒ DoxygenのLaTeX出力で日本語を使う(2015年版)