CentOS4/CentOS5:doxygenでUTF-8日本語PDFのドキュメントを出力する
doxygenからUTF-8で日本語PDFファイルを作成する環境をCentOSに構築したのですが、予想以上にしんどい思いをしたので、まとめメモを作成しておきます。誰かの参考になれば幸いです。
背景
仕事で作ったプログラムの成果物のひとつとして、doxygenで出力したファイルを納品している。開発中は出力されたHTMLのままの方が何かと使い勝手も良いのだが、納品用のドキュメントとなると、PDFファイルとそれを印刷した紙のドキュメントが、やはりお客様には好まれるようだ。
doxygen自体は、導入してHTMLを出力させるだけであれば、簡単に使うことが出来る。graphvizをインストールすれば、関数の呼び出し関係やヘッダのインクルード関係など、ビジュアル的にも見栄えの良い図を生成することも出来る。ただし、PDFファイルへ出力しようとすると、日本語の処理でエラーが発生してしまい、うまく出力できない。
日本語でのPDFファイルを生成するには、UTF-8に対応した日本語LaTeX環境を整える必要があるので、早速インストールしてみた。
環境
- CentOS4/CentOS5.3
使用したツール、バージョン
ptetex
- ptetex3-20090610.tar.gz
- tetex-src-3.0.tar.gz
- tetex-texmf-3.0po.tar.gz
doxygenインストール
Doxygenの最新版を入手。
http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc
- doxygen-1.5.9.src.tar.gz
Doxyfile編集&HTML出力テスト
ここまでインストールできれば、コールグラフ入りのAPIドキュメントのHTMLは生成可能である。
なので、まずここで出力テストをしてみる。
Doxyfileの雛形作成
UTF-8で書かれたソースコードが、「sample_project」というディレクトリにあるという前提で。
「-g」オプションをつけてdoxygenを実行すると、設定ファイルの雛形を自動で生成してくれる。通常は、この雛形ファイルを編集して使うことになる。
$ cd sample_project
$ doxygen -g
$ vi Doxyfile
以下、設定ファイル上で編集した方が良さそうな項目をリストアップしてみる。ソースコード、出力形式ともにUTF-8を想定。
- PROJECT_NAME = Sample Project
- PROJECT_NUMBER = 1.0.0
- OUTPUT_DIRECTORY = doxygen
- OUTPUT_LANGUAGE = Japanese
- JAVADOC_AUTOBRIEF = YES
- TAB_SIZE = 4
- OPTIMIZE_OUTPUT_FOR_C = YES
- EXTRACT_ALL = YES
- EXTRACT_PRIVATE = YES
- EXTRACT_STATIC = YES
- SORT_MEMBER_DOCS = NO
- SOURCE_BROWSER = YES
- STRIP_CODE_COMMENTS = NO
- GENERATE_TREEVIEW = YES
- LATEX_CMD_NAME = platex
- PDF_HYPERLINKS = NO
- USE_PDFLATEX = NO
- HAVE_DOT = YES
- UML_LOOK = YES
ここまで設定すれば、HTMLとしてドキュメントが出力される。
$ doxygen
Doxyfileの置いてあるディレクトリ上でdoxygenコマンドを実行すると、指定した出力ディレクトリの「html」ディレクトリ配下にドキュメントが出力される。ブラウザ等でhtml以下のindex.htmlを開けば確認が出来る。
日本語LaTeX環境(teTeX用日本語パッチ)のインストール
日本語PDF化までもう少し。
ファイルを入手する
http://www.nn.iij4u.or.jp/~tutimura/tex/ptetex.html
- ptetex3-20090610.tar.gz
- tetex-src-3.0.tar.gz
- tetex-texmf-3.0po.tar.gz
それぞれ、最新の日付のファイルを使用する。
入手したファイルを、同一ディレクトリ上に保存する。
/ptetex3/ -+- tetex-src-3.0.tar.gz
+- tetex-texmf-3.0po.tar.gz
+- ptetex3-20090610.tar.gz
+- my_option(後から作る)
ファイル展開
$ cd ***/ptetex3
$ $ tar xvfz ptetex3-20090610.tar.gz
$ cd ptetex3-20090610
オプション指定
ここでの指定がよくわからなかったので、このサイトの情報を参考にした。
http://d.hatena.ne.jp/stdout/20090224/1235444757
また、こちらのサイトにも書いてあるが、XDVIオプションとPXDVIオプションを「echo」にしないと、make実行中にエラーが発生してしまうので、注意する。
2008-12-13
設定ファイルmy_option.sampleの雛形をコピーして、上位ディレクトリにmy_optionファイルとして保存する。
$ cp my_option.sample ../my_option
修正した項目はこちら。(※my_optionファイル自体のエンコーディングがISO-8859なので、viだと文字化けが発生するので注意)
### 日本語 pTeX 拡張あり (pdvips, pxdvi)
JAPANESE=international### ptex/platex コマンドの入出力文字コードを指定(ディフォルトは EUC)
### 'UTF8' は ptetex3 の独自拡張
KANJI_CODE=UTF8### kanji <=> unicode 変換に iconv を使う
conf_option --enable-kanji-iconv### make test で xdvi を除外する
XDVI=echo
PXDVI=echo
インストール実行
$ su
# make install
PATHの設定
/usr/local/teTeX/binにパスを通す。
$ PATH=/usr/local/teTeX/bin:$PATH; export PATH
確認後は、.bashrcなどに記入しておく。
テスト
簡単なtexファイルを作成してテストを行う。
$ vi test.tex
\documentclass{jsarticle}
\begin{document}
testtest
日本語テスト
\end{document}
dviへ変換。xdviコマンドではなく、ptetexでインストールした、日本語対応の「pxdvi」コマンドでファイルを閲覧してみる。
dviファイルをPostscriptファイルへ変換。dvipsコマンドではなく、「pdvips」コマンドを使用する。
$ pdvips test.dvi
$ ggv test.ps ## CentOS4の場合
$ evince test.ps ##CentOS5の場合
dviファイルをpdfファイルへ変換する。「dvipdfmx」コマンドを使用する。
$ dvipdfmx test.dvi
トラブルシューティング
ptetexのmakeが通るようになるまで、いくつか引っかかった点があったので、トラブルシューティングとしてまとめておく。
my_optionファイルの設定
We are NOT going to compile xdvi. We have two choices.
1. (with xdvi) Check if we have X11 headers.
2. (without xdvi) Set XDVI=echo in "my_option" to omit xdvi test.
こういったエラーが発生する場合は、my_optionファイルで設定を見なおす
### make test で xdvi を除外する
XDVI=echo
PXDVI=echo
xorg-x11-develの不足(CentOS4のみ?)
あと、こんなエラーも出てきた。
gmake[4]: Entering directory `/var/tmp/ptetex3/tetex-src-3.0/texk/pxdvik'
cd gui; gmake -w CC='gcc' CFLAGS='-g -O2 ' libgui.a
gmake[5]: Entering directory `/var/tmp/ptetex3/tetex-src-3.0/texk/pxdvik/gui'
gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../.. -W -Wall -Wunused -I.. -I./.. -DPS_GS -DXSERVER_INFO -g -O2 -c help-window.c -o help-window.o
help-window.c:29 から include されたファイル中:
../xdvi.h:131:20: X11/X.h: そのようなファイルやディレクトリはありません
../xdvi.h:153:59: X11/Xlib.h: そのようなファイルやディレクトリはありません
../xdvi.h:154:54: X11/Xutil.h: そのようなファイルやディレクトリはありません
../xdvi.h:155:21: X11/Xos.h: そのようなファイルやディレクトリはありません
../xdvi.h:157:24: X11/Xfuncs.h: そのようなファイルやディレクトリはありません
../xdvi.h:158:27: X11/Intrinsic.h: そのようなファイルやディレクトリはありません
../xdvi.h:179:49: X11/Xmd.h: そのようなファイルやディレクトリはありません
../xdvi.h:393:21: Xm/Xm.h: そのようなファイルやディレクトリはありません
In file included from help-window.c:29:
../xdvi.h:407: error: 文法エラー が "G_charset" の前にあります
../xdvi.h:407: 警告: `G_charset' の宣言で型がデフォルトの `int' とされました
(略)
どうも、x11関係のライブラリが入ってないっぽい。
yumでxorg-x11-develをインストールしてみると、このエラーは解決できた。
# yum install xorg-x11-devel
(略)
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
xorg-x11-devel i386 6.8.2-1.EL.52 base 5.1 M
Installing for dependencies:
fontconfig-devel i386 2.2.3-13.el4 base 233 k
freetype-devel i386 2.1.9-8.el4.6 base 533 k
Updating for dependencies:
freetype i386 2.1.9-8.el4.6 base 764 k
xorg-x11 i386 6.8.2-1.EL.52 base 13 M
xorg-x11-libs i386 6.8.2-1.EL.52 base 2.7 M
xorg-x11-xfs i386 6.8.2-1.EL.52 base 325 kTransaction Summary
=============================================================================
Install 3 Package(s)
Update 4 Package(s)
Remove 0 Package(s)
Total download size: 23 M
(略)
Xawライブラリの不足(CentOS5のみ?)
CentOS5系でも試していたところ、以下のようなエラーが発生した。
checking for X11/Xmu/Xmu.h... no
checking for T1_AddFont in -lt1... no
configure: warning: Standard T1 library not found. Compiling my own.
checking for Xaw library... not found
configure: error: Sorry, you will need at least the Xaw header/library files to compile xdvik.
configure: error: ./configure failed for pxdvik
configure: error: ./configure failed for texk
make[1]: *** [stage4] エラー 1
make[1]: ディレクトリ `/home/hanzawa/doxygen+latex/ptetex3/ptetex3-20090610' から出ますThose messages are stored in 'log-0707-1444'.
make: *** [all0] エラー 1
Xawライブラリが不足しているようだ。「yum list」で調べたところ、libXaw-develが該当しているっぽいので、インストールする。
$ yum install libXaw-devel
(略)
Dependencies Resolved=======================================================================================================
Package Arch Version Repository Size
=======================================================================================================
Installing:
libXaw-devel i386 1.0.2-8.1 base 68 k
Installing for dependencies:
libXmu-devel i386 1.0.2-5 base 21 k
libXpm-devel i386 3.5.5-3 base 31 k
libXt-devel i386 1.0.2-3.1.fc6 base 332 k
xorg-x11-util-macros i386 1.0.2-4.fc6 base 8.1 kTransaction Summary
=======================================================================================================
Install 5 Package(s)
Update 0 Package(s)
Remove 0 Package(s)Total download size: 460 k
(略)
libpng-develの不足(CentOS4のみ?)
さらに、こんなエラーも。
dvipdfmx-pdfdoc.o(.text+0x2788): In function `pdf_doc_end_page':
/var/tmp/ptetex3/tetex-src-3.0/texk/dvipdfmx/src/pdfdoc.c:96: undefined reference to `check_for_png'
collect2: ld はステータス 1 で終了しました
このエラーの解決には手こずってしまった。check_for_png は dvipdfmx の pngimage.c 内の関数なのですが、何故かリンクできない。
png関連のライブラリが怪しいと思い、yumでpng関連のライブラリを調べてみると、「libpng」はインストールされているが、「libpng-devel」がインストールされていない事が判明。これだ。
# yum install libpng-devel
再度makeを実行したところ、ようやくコンパイル完了。いやー、しんどいしんどい。
参考にしたサイト
本当にいろんなサイトを参考にさせていただきました。皆様、大感謝です。ありがとうございました。
TeX Wiki
ユーザホームページ移転のご案内
install platex from source (CentOS5.2) a1667203
CentOS:日本語platexをインストール « 仙人の心得
FrontPage - ptetex Wiki
CentOS 5.2 に TeX環境を - 情報網状組織の記録
http://blog.collectivemeta.com/2009/05/centos5-tex.html
UTF8でLaTeX(pLaTeX)を使う方法 - ラシウラ出張所 - coders
LaTeX環境
http://kano.feena.jp/?CentOS%2FLaTeX
FrontPage - ptetex Wiki
http://d.hatena.ne.jp/stdout/20090224/1235444757
2008-12-13
dvipdf で日本語 dvi ファイルを変換できない - reroの日記
http://d.hatena.ne.jp/stdout/20090224/1235444757
2008-12-13
Doxygen
Doxygen
doxygen - 忘れがちなあなたへ
ソースから継承図を作成する - ぱんくず
Doxygen+Graphvizでクラス図を自動生成する - 毛のはえたようなもの
DoxygenでHTML以外を出力したい。 - サイと旅する
だらろぐ: Doxygen
Let’s use doxygen!
楽天が運営するポータルサイト : 【インフォシーク】Infoseek