Doxygenの設定メモ

今までpdf出力は文字化けがするので諦めていた。 以下のサイトを参考に色々と試したら、文字化けが治ったしフォントも綺麗になった。

残念ながら、今はもう紙の関数仕様書を要求する仕事は無いし、おそらくこれからも無いので単純に趣味の世界です。

で、作業メモ。

環境

環境は、macPortsで構築した。

  • macosx 10.12.4
  • xcode 8.3.1
  • MacPorts 2.4.1
  • TeX Live 2016/MacPorts 2016_4
  • doxygen 1.8.13

構築したと言っても以下の1行を入力しただけ。

$ sudo port install texlive +full

Doxyfileファイルの設定

最低限、以下の3項目を変更すれば良い。

OUTPUT_LANGUAGE = English
LATEX_CMD_NAME  = latex
USE_PDFLATEX    = YES

これらの項目を以下のように変える。

OUTPUT_LANGUAGE = Japanese
LATEX_CMD_NAME  = uplatex
USE_PDFLATEX    = NO

それぞれの意味は、参考にしたサイトに載っているので特にここでは書かない。

ソースコードの位置や出力ファイルの位置も各自に合わせること。

最初の出力

一度、doxygenコマンドを実行して、latexディレクトリを生成する。

生成されたmakeファイルを実行すると文字化けのするpsファイルやpdfファイルしか作成できない。

その壊れたlatexディレクトリ中のmakeファイルを修正する。

修正箇所は3箇所。

1. pdfの生成にはdvipdfmxを使う

PostScriptファイルから生成している箇所をdvipdfmxから生成するように変更するだけです。

以下の箇所を変更します。

refman.pdf: refman.ps
       ps2pdf refman.ps refman.pdf

変更後は以下のようになります。

refman.pdf: refman.dvi
       dvipdfmx refman.dvi

2. pdfの複数のページを1ページにまとめるにはpdfnupを使う

ps2pdfはうまく日本語が通らないようなので、pdfnupを使います。

以下の箇所を変更します。

refman_2on1.pdf: refman_2on1.ps
       ps2pdf refman_2on1.ps refman_2on1.pdf

変更後は以下のようになります。

refman_2on1.pdf: refman.pdf
       pdfnup refman.pdf
       mv refman-nup.pdf refman_2on1.pdf

3. 複数のpdfをまとめたファイルの後片付けをする

おそらく、doxygenの記載漏れ。clean時にrefman_2on1.pdfも含めるだけ。

以下の箇所を変更します。

clean:
       rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf

変更後は以下のようになります。

clean:
       rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf refman_2on1.pdf

pdfに目次を作る

ここまでの変更を行うとpdfの文字化けは治ります。ここから先は、大抵の人には関係ありません。

印刷時の目次はあります。ここで作る目次は、pdfのbookmarkと呼ばれる機能です。

リンクの色は黒。bookmarkはdvipdfmxに対応させる。

% Hyperlinks (required, but should be loaded last)
\usepackage{ifpdf}
\ifpdf
  \usepackage[pdftex,pagebackref=true]{hyperref}
\else
  \usepackage[ps2pdf,pagebackref=true]{hyperref}
\fi
\hypersetup{%
  colorlinks=true,%
  linkcolor=blue,%
  citecolor=blue,%
  unicode%
}

上記のコードを以下に置き換え。

% Hyperlinks (required, but should be loaded last)
% hyperrefをdvipdffmx用に決め打ち
\usepackage[dvipdfmx,
            pagebackref=true,
            colorlinks=true,
            linkcolor=darkgray,
            urlcolor=darkgray,
            bookmarks
           ]{hyperref}
\usepackage{pxjahyper} % 日本語で'しおり'したい

これで、目次も出来て、リンクも作成された。

見た目を整える

完全に趣味です。

本文を明朝体にして、章立てやラベルはゴシック体に変更する。

% Custom commandsの末尾にでも以下のコードを追加する。

\usepackage[uplatex,deluxe, expert]{otf}

% sectionの書体を"ゴシック体、サンセリフ体、太字"
\allsectionsfont{
\gtfamily\sffamily
\color{darkgray}
}

% labelの書体を"ゴシック体、サンセリフ体、太字"
\renewcommand{\DoxyLabelFont}{
\gtfamily\sffamily
\color{darkgray}
}

\renewcommand{\kanjifamilydefault}{\mcdefault} % 日本語書体を明朝体
\renewcommand{\familydefault}{\rmdefault} % 欧文書体をローマン体

また、細すぎるので表紙のタイトルはゴシック体のボールドにする。begin{titlepage}の次の行に追加。

\begin{titlepage}
\gtfamily\sffamily\bfseries % <-- これを追加

ヒラギノフォントを使っているかも

macPorts の場合以下のコマンドでヒラギノを有効にした記憶があるが定かでは無い。

$ cd /opt/local/share/texmf-texlive/scripts/cjk-gs-integrate
$ sudo perl cjk-gs-integrate.pl --link-texmf --force
$ sudo mktexlsr
$ sudo kanji-config-updmap-sys hiragino-elcapitan-pron

以下のコマンドではヒラギノが埋め込まれているように見える。

$ pdffonts refman.pdf

参考URL

次は、上記のサイトのように、スクリプトで自動化したい。