VSCode + Zotero + BibTeXによる論文執筆ワークフロー
はじめに
\LaTeX は誰も教えてくれない
みなさん、 いつから
そのとき、 誰か今節丁寧に教えてくれましたか? 少なくとも、私の周りではそんなことありませんでした。誰も教えてないのに、みんな元から知ってたかのような顔をして、当たり前のように使っている。でも使い方について話題に上がることもないから、みんながなんとなくで使っている。そんな感じじゃないでしょうか。
BibTeXや文献管理ソフトはもっと教えてくれない
テンプレートを使いながら、コマンドをググればなんとか
この記事では、文献引用の自動化を主眼においた、
環境
ソフトウェア
使用するソフトウェアは
- Zotero (文献管理、 BibTeX出力)
-
Visual Studio Code (主に
のエディターとして)\LaTeX
どちらのソフトもWindows、 Mac、 Linuxで使えるためOSに関わらず使えるワークフローであると思います。[1] なお、 私の実行環境は以下の通りです。
- MacBook Pro 13-inch, 2017. MacOS Big Sur 11.4
なぜOverleafではないのか
近年
- Dropbox、 GitHubとの連携が有料である
- BibTeX、 図表の細かい修正を行う際にいちいちアップロードをするのが面倒 (特にGitHubで管理している場合、 その度にpushする必要がある)
- プロジェクトあたりのファイル数に上限がある (大きいプロジェクトの後半はおそらくキツい)
VSCodeを利用した場合、
- 無料であり、 なんの制限もない
- 後述するLaTeX Workshop Extensionが高機能で、 Overleafと遜色ない
- 他の言語のエディターとしても優秀なので、 同じUIでさまざまな作業が行える
などのメリットを感じています。
また、 ネックとなるTeXのインストールですが
- Macの場合、 Homebrewのコマンドで一発
- そもそも Docker + VSCode + Remote Containers でOSに依存しない環境構築できる[2]
などの理由で特に不便を感じておりません。
しかしながら、 本ワークフローを行うにあたっては、 BibTeXファイルが適切にアップロードされていれば、 Overleafを使っても問題ありません。
インストール (Mac)
Zotero もVSCodeもそれぞれのサイトからインストール可能ですが、 Macの場合はHomebrewを用いることもできます。 TeXのインストールもまとめて
brew update && brew install mactex-no-gui visual-studio-code zotero
のコマンドで一発です。おそらくTeXのパッケージ管理ツールであるtlmgr
のアップデートが必要なので、以下のコマンドも実行してください。
sudo tlmgr update --self
sudo tlmgr update --all
Homebrewとは?
MacOS用のパッケージマネージャーです。 ターミナルからコマンドで、 ソフトウェアのインストール、 アップデート、 削除ができるようになります。 Homebrew自体のインストールは、 Homebrewのサイト上のコマンドをコピーして、 ターミナルで実行するだけです。
ファイル構成
このワークフローに対応したレポジトリを用意しました。 ファイル構成の例としてご活用ください。[3]
また、VSCodeのRemote Containersを用いて、OSに依存しない完全な再現が可能です。Remote Containersとは?
Dockerを用いて仮想マシン上でVSCodeを実行する環境です。 仮想マシン上に同一の環境を構築することで、 OSによらず共通の環境で作業ができます。 Dockerについてはいずれ記事にする予定ですが、 少し説明が長くなるので、 ご存知ない方はここではとばしてください。
文献引用ワークフロー
論文中での適切なフォーマットでの引用と参考文献リストの作成を自動化します。
ポイントは
- 引用する可能性のある論文をZoteroで一ヶ所にまとめる(引用しなくてもいい)
- 引用する際にBibTeXのキーを使う
だけで、 文献引用のあらゆる面倒ごとから解放されるという点です。 ほとんど自動化されているので、 ミスもなくなります。
Zotero
1. プロジェクト用のcollectionを作成
2. 文献の追加
Zoteroにアイテムを追加するにはいくつか方法があります.
ドラッグ&ドロップ
これらの方法は、文献情報自体も自動で取得してくれるので便利なように見えます。しかし、私はあまりおすすめしません。理由は簡単で、文献情報が取得できないまたは間違いがある場合があるからです。
私がおすすめするのはやり方は以下です。
- 版元のウェブサイトから
.ris
ファイルまたは.bib
ファイルをダウンロードする - ZoteroのFile→Importから、ダウンロードしたアイテムを元にアイテムを作る
- 作成されたアイテムにPDFファイルを追加する
The Quarterly Journal of Economicsのウェブサイトからの.ris
ファイルのダウンロード
.ris
ファイルからアイテムの追加
PDFファイルをアイテムに紐付ける
.bib
ファイルの作成
3. - collectionのフォルダを右クリックして
export collection
をクリック -
exportOption.keepUpdated
を選択して[4]、OKをクリック -
main.tex
と同一のディレクトリに保存します[5]
BibTeX
natbib
の設定
1. 「著者名(年)」のような引用の形式を扱うためにnatbib.sty
を読みこみます。これは.bst
ファイルの依存にもよるので分野ごとに違う可能性があります。後述するecon-aea.bst
の前提となっているのがnatbib
のため、ここで読み込みます。
プリアンブルに以下を追加
\usepackage[longnamefirst]{natbib}
\bibliography{}
と\bibliographystyle{}
を設定する
2. BibTeXの設定は簡単で、
-
\bibliography{}
→.bib
ファイルの名前 -
\bibliographystyle{}
→ 参考文献や引用の形式。.bst
ファイル
の二つを.tex
ファイルに記述するだけです。[6]
\bibliography{bibtex-demo.bib}
\bibliographystyle{econ-aea.bst}
私の専門は経済学なので、ここではecon-aea.bst
を使います。それぞれの専門や投稿先に合わせて変更してください。ひとまずmain.tex
と同じディレクトリにおいておけば問題ありません。
econ-aea.bstとは?
American Economic Association (AEA)の出版するジャーナルに準拠した形式の.bst
ファイル。作者の武田史郎先生による解説を読むことをおすすめします。
経済学におけるBibTeXの利用
3. BibTeXのキーを用いて引用する
natbib
では引用の際に\citet
または\citep
を用います。この時使用するキーはZotero内の文献情報の一番上にあるCitation Key:
の部分です。
Piketty et al. (2018)のCitation Key
\citet{pikettyDistributionalNationalAccounts2018b}
なお、このキーはZoteroの設定によって出力形式を変えることができます。
(例:piketty2018b:distributional
)
BibTeXの便利な点として、文中で引用された文献だけが参考文献リストにのることです。したがって、Zoteroのcollectionには最終的な引用の可能性を考えずに関連する文献をどんどん追加しましょう。
補論: subfilesを使う場合
論文を書く際に、章や節ごとに.tex
ファイルを分けたいということがあるでしょう。その際、よく使われるパッケージがsubfiles
です。しかし、\bibliography{}
は一度しか宣言できないため、subfiles
とは相性が悪いです。これはifthen
文を用いれば解決できます。
\documentclass{article}
\usepackage{subfiles}
\usepackage{ifthen}
% BibTeX
\usepackage[longnamesfirst]{natbib}
\usepackage{hyperref}
\begin{document}
% For Subfiles with BibTeX
\newboolean{isMain}
\setboolean{isMain}{true}
% Body
\subfile{1_intro}
\subfile{2_body}
\subfile{3_concl}
% Reference
\newpage
\bibliography{bibtex-demo.bib}
\bibliographystyle{econ-aea.bst}
\end{document}
\documentclass[./main]{subfiles}
\newboolean{isMain}
\setboolean{isMain}{false}
\begin{document}
\section{Introduction}
% 中略
\ifthenelse{\boolean{isMain}}{ %pass
}{ %else
\bibliography{bibtex-demo.bib}
\bibliographystyle{econ-aea.bst}
}
\end{document}
これはsubfiles
において個別ファイルのプリアンブルが無視されることを利用して
- 個別ファイルのコンパイルでは
isMain
がfalse
なので、個別ファイル内の\bibligoraphy{}
が宣言される -
main.tex
のコンパイルではisMain
がtrue
なので、個別ファイルの\bibliography{}
は無視される
ことによって達成されています。
VSCode LaTeX Workshop Extension
VSCodeで
コード補完、マウスオーバー、スニペット機能。どれをとっても申し分ないです。また、SyncTeXに対応しているので、PDFをクリックするとコードの該当箇所に飛ぶ、なんていうことも可能です。subfiles
にも対応しているので、通常のコンパイルと同様にsubfiles
の個別ファイルをコンパイルすることも可能です。
公式のページの機能の紹介がかなり分かりやすいので、上記のリンクから見ることをおすすめします。
\LaTeX にGrammarlyを直接かける方法
Grammarlyといえば、言わずと知れた英文添削ソフトです。公式にはWordやGoogle Docsなどに対応していますが、実は非公式ながら
VSCodeの場合
以下のVSCodeの拡張機能を使うだけです。ログインにも対応しているので、有料会員の機能も使うことができます。詳しい使い方は以下のリンク先を参考にしてください。
Overleafの場合
Grammarly公式のChrome拡張である以下を入れた状態で
以下の拡張を入れます。 詳しい使い方は上記のChromeストアのOverleaf textareaのページを見てください。おわりに
以上が私が普段使っている
- 引用する可能性のある文献をZoteroに追加する
- 引用する際はBibTeXのキーを使う
を繰り返すだけです。また、英文添削も拡張機能を入れるだけで自動化することができます。みなさまの論文ライフが少しでも楽になれば幸いです。
Discussion