niszetの日記

細かい情報を載せていくブログ

引用文献のスタイルを指定したPandocでの変換は可能ぽい(メモ)

単純な話だった。

Pandocは--csl=FILEの形式でCSLを与えることが出来る。そのため、単純に出力ファイルでの引用文献の体裁がCSLに定義されていれば(かつciteprocがちゃんと動けば。日本語版だと駄目とかがあったらすみません)これを使って出力すれば良い。これはdocxに出力する場合でも同様である。

pandoc.org

この時に生成されたdocxでは、引用箇所(1とか2とか年で書く奴ね)につけるものは本文スタイルを使用している。(上付きなどの装飾はそれぞれ対応しているようであるが、専用のスタイルではない) また、その番号から末尾の論文一覧の箇所へのInternal Linkとかはなく、完全に地の文である。LaTeX出力では違うかも知れないが、未検証。すみません。

斜体や太字なども適用され、末尾の論文一覧のところも対応していることを、Journal of Crystal GrowthJapanese Journal of Applied Physicsのそれぞれで確認した。あとデフォのAPAでも。

末尾の論文情報は文献目録スタイルが適用されている。仮にdocxから文献情報を引っこ抜きたい場合、この末尾部分はstyle情報から文献だと判断できるが、地の文に埋め込まれた[1]などは頑張ってパースする必要があるので、文書中のそういう参照構造のようなものを保持したい場合はこの方法では不完全で、Zoteroの機能を使ったフィールドの埋め込みが必要となる。とはいえ、Zoteroで文献情報を集中管理していれば、Wordのここにある情報を引っこ抜かないと困るんです・・・ということはないと思うのだが。ないよね?とはいえ、Pandocなどで作ったドキュメント以外(Word上でZoteroのアドイン機能を使って手で挿入した物とか)の場合はそういうこともあるかもしれない。ただ、場当たり的にやらずにマスターデータをどこにするかはちゃんと考えた方がよい。

なお、末尾の~と書いたが実際には以下のrefsの記法を使うとその記述のある場所に文献情報を入れるコトが出来るので、必ずしもファイル末尾ではないが。余談。

pandoc.org

また、CSLのファイルはZoteroにあるものはここから入手出来る。

www.zotero.org

rmarkdownからPandocへ伝えるには、word_document下のpandoc_argsに以下のようにcslファイルを指定すれば良い。ファイルの場所はドキュメントと同じ場所想定になってるが、適宜場所に応じて変えてください。ファイル名も適宜変えて。

output: 
  word_document: 
    pandoc_args: ["--csl=japanese-journal-of-applied-physics.csl"]

rmarkdownの場合はbibが指定されていればciteprocが使われるのでこれでCSLが有効になるはず。VEでやる場合はこれで良いかな。

この記事のここまでの話は別にZoteroを使ってなくてもよくて、適切なCSLファイルと、RStudio IDEのVisual Editorで生成したreferences.bibだけあれば良いです。Zoteroはあくまで文献の中央管理だと思った方がよいかな。もちろん、VEのcitation機能で文献情報を検索してbibに追加した物をZotero側に戻して管理とかも良いですが、泣き別れにならないように注意だ。私はそれをよくやってしまう。ただ、bibファイルさえちゃんと管理していれば泣くことはないだろう。Wordに直接書いてしまったりしては泣きを見るが、この方法なら情報が残ってさえいれば、書式の設定だけで対応出来るので。大事なので上の方にも書いたがまた書いた。

また、この記事と話がちょっとはずれますが、RStudioでZoteroを使う方法はShoeiさんの記事が参考になります。

plaza.umin.ac.jp

plaza.umin.ac.jp

現状、とりあえず出来る範囲だとこれが一番かなというところが見えてきました。また別途BBT使用して作る方法についても書きますが、RStudio IDE/Visual Editor/rmarkdown/Pandocを使用しての、docx向けの参考文献の扱いについてはこのあたりが落とし所かなぁというところです。もう少し良い方法や別解があり次第記事を書いていきます。