Latexとpandocで共著者のストレスフリー

英語能力が低いのにlatexで論文書いて共著者に展開するダメ人間の備忘録.


はじめに

pandocを使うとlatexからwordの変換がかなりの精度で変換できる. これまで

  1. PDFファイルをwordに変換
  2. latex2html
  3. その他もろもろ

を試してきたが, pandocを用いた方法が一番互換性が高い.

インストール

pandoc install と調べると, 良心的な解説サイトが多々存在する.
また, バイナリ形式でダウンロードできる(Haskellというプログラミング言語ツールのひとつだが, pandocのみでも入手できる).
"pandoc"と"pandoc-citeproc"も同時にインストールされる(あるversionから統合された?).
"pandoc-crossref"のwindows版は別途ダウンロードできた.

プリアンブル

全体的に最小構成にする
サポートされていないものはskipしてくれる
documentclassも要らないようだ(マイナーなものを使っているとうまく動作しなくなるみたいなので,コメントアウトする)

概要

\begin{abstract}
\end{abstract}
でくくる

数式

かなり精度よく再現してくれる. これだけでpandocの便利さがわかる.

数式内の文字を変数としての斜字ではなくテキストにしたい場合, {\rm hoge} では式がめちゃくちゃくなった.
\text{hoge} (latexでcompileする場合は\usepackage{amsmath,amssymb} が必要)にすると上手くゆく.

図/画像

図のうしろに余計な\\はいれない. captionがでなくなった
figure* はうまくさばいてくれないので
sed -e 's/figure\*/figure/g'
でごまかす. table*も同様に.

図を無理やりminipageで分割して並べると, 図のナンバリングや相互参照がうまくいかなくなる.
windowsではpdf画像をwordに埋め込んでも,見ることが出来いようである.
sed で.pdfを.pngにしつつ, pdfをpngに変換する.
例えば
pdftoppm -singlefile -png pdffile > pngfile
をする. svgの場合は
pdftocairo -svg pdffile svgfile
などとする. svg

表示は出来るが, 表のナンバリングは出来ない. version 2.9.2 で問題が解決されてpandoc-crossrefを使うと問題なく変換出来るようになりました. ありがとうございました.

参考文献/引用

オプションとして --citeproc --bibliography=bibfile --csl=cslfile
を加えると文章内での引用や参考文献リスト生成が特に問題なくできた.

相互参照

\refの中でアンダーバー_を使うとうまくナンバリングできなかった.ハイフン-だったらうまくうごいた.
pandoc --filter pandoc-crossref (pandoc -F pandoc-crossref) で問題なく動くと, 図(tbl)と表(fig)のcaptionにナンバリングしてくれた.
version 2.19.2 ではうまくfilterを出来なかった.ただ, pandoc input.tex -t json| pandoc-crossref --pipe json | pandoc --citeproc -f json -o output.docx とすると動いてくれた. 式の参照は, デフォルトではまだ対応が難しそうだ.
ただし, 自力でfilter処理をすると, 数式ナンバリング(labelがあるもののみ)がpandoc-crossrefで出来る.
数式番号としての相互参照も難易度が高い. なので latexのauxファイルを使ってtexファイルの\ref{eq:fuga}を直接filterさせることで誤魔化して対応している.

テンプレートファイル

pandocのdocxデフォルトテンプレートを変えれば変換したdocxファイルの体裁もカスタマイズできる.
pandoc --print-default-data-file reference.docx > reference.docx
とするとテンプレートを出力保存できるのでそのファイルを修正する. そしてオプション --reference-doc=reffile を加えればよい

最後に

pandocを使ってlatexをwordに変換しようとする人は少数派です. なので細かなところまで望むのは野暮です.
目的は論文ドラフトの共著者展開なので, 共著者がドラフトを確認するためにストレスを与えない程度に作成できれば問題解決です.
少しマニュアルが入りますが, これまでの苦労を思えば大した問題ではありません.
1) pandocでうまく動くようにオリジナルに少し修正いれる
2) pandocに流し込み, 直接docxに出力してもよいがjsonで中間出力させて独自のfilter処理をする
3) 出力したdocxファイルでスペルチェックや共著者へのお願い, 英文校正などに使う
4) コメントや英文校正の結果は, 改訂したtexで1)-2)を行ってdocxファイルに変換しdocxファイルの差分機能で確認する
5) 必要ならばlatexdiffを使って差分をとる
という流れが可能となります!!!
これで論文執筆が進まない理由がひとつ減りました.


[Return]