サイトの再構築にあたって,数式を整形するために使うプラグインを見直すことにした.ネットで調べると「このプラグインを使うと数式が組み込める」という紹介記事はたくさん見当たるのだが,数あるプラグインを比較している記事が見つからず,結局ひとつずつドキュメントを見たりインストールしたりして最適なプラグインを探すことになった.せっかくなので,いろいろ検討した結果をこの記事にまとめておく.
タグ別アーカイブ: LaTeX
LaTeX で png のバウンディングボックスが読み込まれない
latexでpng画像を使う場合,xbbなどのツールを使ってバウンディングボックスを生成する必要がある.platexを実行したときに自動的にxbbを実行するには-shell-escapeを指定すればよいが,これをつけてもエラーになる場合があることがわかった.ディレクトリを見てみると,xbbから出力されるxxx.xbbは正しく生成されている.
$ platex -shell-escape xxx.tex ... ! LaTeX Error: Cannot determine size of graphic in xxx.png (no BoundingBox). ...
結論を言うと,pngのファイル名にドットが含まれる場合に,xbbファイルが読み込まれないようだ.ファイル名に含まれるドットをハイフンなどの別の文字に変えると,問題なく読み込むことができた.texが古いシステムであることを実感した気分.
hyperref を使うと右と下の余白が切り詰められる
hyperrefをインポートしていると,右と下の余白が切り詰められるのを発見. 原因を調べてみると,余白が切り詰められているのではなく,用紙サイズが変わっているのでした. TeX で PDF 作成の注意点 – Iranoan
hyperrefの内部指定はdvipdfmxの用紙サイズ指定オプションより優先されるので,パッケージのインポート後に設定を上書きするしかない模様.
\usepackage[dvipdfmx]{hyperref} \special{papersize=210mm,297mm}
dvipdfmx で Unknown token “SDict”
dvipdfmx で dvi を pdf に変換するとき,次のようなログが大量に出た.
** WARNING ** Unknown token "SDict"; ** WARNING ** Interpreting PS code failed!!! Output might be broken!!! ** WARNING ** Interpreting special command ps: (ps:) failed. ** WARNING ** >> at page="1" position="(74.617, 697.04)" (in PDF) ** WARNING ** >> xxx "ps:SDict begin H.R end" ** WARNING ** >> Reading special command stopped around >>begin H.R end<<
原因はhyperref,captionなどのパッケージをインポートするときに,出力先を指定していなかったため.出力先を指定しない場合はdvipsが使われるので,dviから変換するときにpsのコマンドがないと言って叱られる模様.
%% \usepackage{caption} %% \usepackage{hyperref} \usepackage[dvipdfmx]{caption} \usepackage[dvipdfmx]{hyperref}
わかってみれば単純で恥ずかしいくらいだけど,見事にハマってしまった.