Atomでの論文執筆環境を整える

前回、AtomとGitHubが論文執筆ツールとしておすすめという記事を書きました。今回は、実際にAtomを論文執筆のエディターとして使うための設定を詳しく紹介します。

文章執筆に役立つパッケージのインストール

前回も書きましたが、インストールするテーマとパッケージは以下の通りです。

デフォルトの機能の設定

邪魔なSoft Wrapの目安線や、使わないプログラミング言語のパッケージなどはOFFにしておきます。

  • デフォルトPackageのOFF
    • wrap-guide = OFF:   Soft Wrapの目安線を非表示にします。
  • Editorの設定
    Soft Wrap=ON とすることで、文章がウインドウの端や指定した幅で折り返すようになります。これは、文章を書く場合には必須の設定です。

SoftWrapの設定

差分管理機能の実装: Gitのインストール

論文執筆には差分管理が多分必要です。 この世界には差分管理も置換も使わずに論文を書いていらっしゃる超人のような方が多数存在していますが、そのような超人はわざわざ検索してこのページにたどり着くことはないでしょう。 とにかく、私たちのような凡人には差分管理が必要です。特に、校正作業をする場合や共著の場合に活躍します。

話がそれましたが、Markdownはただのテキストファイルなので差分管理機能はありません。これを補うために、Gitを使います。

文章執筆にGitを使う話は、こちらが大変参考になります。
世の中の小説作家と編集者は今すぐ Word や G Suite を窓から投げ捨てて Git と GitHub の使い方を覚えるべきだ

Gitは基本的にコマンドラインで使うもの (らしい) ですが、私は上記の記事にあるとおりエンジニアではないので潔く諦めました。
幸いGitHub製のエディタであるAtomはGitの基本的な操作をAtom側から綺麗なGUIで行うことができます。

論文を書いているフォルダをAtomで開いたら、下の写真のように右下にあるGitというボタンをクリックして、ローカルリポジトリを作成します。

Atom-GItリポジトリ作成

文章を変更した場合は、左側のAtomのプロジェクトビューにてファイル名の色が変わり、さらに右側のGitウインドウに表示されます。こちらでファイルを選択すると前回のコミットからの差分を確認することができます。きりの良いところまで作業が進んだら、変更したファイルをStageして、コミットメッセージを入力してコミットしましょう。

コミットメッセージは作業ログになるので、丁寧に記載することを勧めます。私は、作業の名前・時間・進捗を1行目に、細かい内容やコメントをそれ以降に記載しています。

Atomからのコミット

より詳細に差分を比較したい場合は、Gitのクライアントソフトを使用します。Gitのクライアントソフトは複数ありますが、文章の差分管理が目的なのでシンプルで問題ありません。
インストールが簡単で使いやすい、GitHub Desktopをお勧めします。

また、最近GitHubでプライベートリポジトリが無料で作れるようになったそうなので、GitHubにプライベートリポジトリを作っておいても良いかもしれません。

Wordファイルへの出力

Atomを論文執筆ツールとして使う上で最も重要なのはPandocとの連携です。Pandocとは、一言で言うと文章を様々な形式に変換できるソフトウェアです。
今回はMarkdownからWord形式への変換が目標です。LaTeXはカバーしませんので悪しからず。

AtomのパッケージをPandocで検索するといろいろなパッケージがヒットしますが、私はmarkdown-preview-enhancedと言うパッケージをお勧めします。
markdown-preview-enhancedは、Pandocのオプションコマンドの指定が可能であるため、後述する図表番号の相互参照がプレビュー画面において可能になります。

Pandoc連携の設定

インストーラーを使ったPandocのインストール

最も簡単なPandocのインストール方法は下記リンクからPandocのインストーラーをダウンロードすることです。
Installing pandoc

Stackを使ったPandocのインストール

上の方法でも良いのですが、Pandoc-CrossrefをインストールするためにStackというHaskell環境のツールをインストールすることになるので、PandocもStackをインストールした後に、コマンドラインからインストールしても良いと思います。

Stackがインストールできている場合はコマンドラインにて次のようにインストールできます。

stack install pandoc

Pandoc-crossrefの設定

Pandoc Cross-Refをインストールすることで、Pandocにて文書を変換する際に、図表の相互参照を自動で連番に変換することができます。(WordやScrivenerにも同様な機能がありますね。)

Pandoc Cross-refはStackを用いてインストールします。細かい説明は私もよくわかっていないので省きますが、Stack→Cross-refの順番にインストールするということだけ押さえておけばOKです。

Stackのインストール

Windows: 公式Docsからインストーラーをダウンロードしてインストール。

Pandoc-crossrefのインストール

既にGitをインストールしている場合はコマンドプロンプトを開いて、以下のように入力することでPandoc-crossrefをインストールできます。

git clone https://github.com/lierdakil/pandoc-crossref.git
cd pandoc-crossref
git checkout <commit/tag/branch>
stack install

参考: pandoc-crossref filter

今回は相互参照の記法の解説は省くので参考ページだけリンクしておきます。
Markdownで相互参照を使うならpandoc-crossref

以上で必要なソフトのインストールは終了です。お疲れさまでした。

Markdown Preview Enhancedの設定

続いて、AtomにてMarkdown Preview Enhancedの設定をします。
重要なのは、Use Pandoc Parserにチェックを入れることと、Pandoc Optionsの設定です。
ここに、pandoc-crossrefのオプションを以下のように入れます。また、私はセクションに数字を振るオプションも使用しています。(下図参照)

--filter=pandoc-crossref

Crossrefの設定

Markdown Preview EnhancedでのプレビューとWordファイルへの出力

ここまで設定が完了したら、後はMarkdownで文章を執筆して”ctrl+shift+M”でプレビューを起動します。
無事に、相互参照などが適用されていれば成功です。

Markdown Preview Enhancedを使えばプレビューを右クリックすることでPandocを用いてWordファイルに書き出すことができます。ただし、Wordに出力したい場合はMarkdown文章の冒頭にYAMLという文章のメタ情報を書かなければいけません。

例えば、以下のように記述します。しかし、私の環境ではWordファイルへの出力は可能ですが、なぜかcross-refのオプションが適用されないので結局コマンドラインからPandocを用いて変換しています。

---
title: "タイトル"
author: "著者"
output: word_document
---

Markdown Preview EnhancedからPandocで出力

引用文献の挿入

Pandocには文中に引用文献を挿入し、末尾に引用文献リストを作る機能も付いています。しかし、私はEndonoteからUnformat 形式で引用文献をコピーし、Wordに出力した後にEndonoteプラグインを使用して引用文献をフォーマットしていますので、今回は解説は省略します。

トラブルシューティング: 日本語の長文を打つと、動作が異常に重くなる問題

一気に設定した後に快適に使用していたのですが、その後日本語の長文をAtomに入力すると動作が非常に重くなるという現象が発生しました。

こういう場合は大抵パッケージが原因なので、面倒ですが1つずつパッケージを無効化して確かめていったところ、原因はwordcountパッケージでした。
おそらく、単語の区切りがスペースとなっているため、日本語の長文が非常に長い単語と認識されてエラーを引き起こしたのだと思います。

日本語の長文を入力した際にAtomの動作が重くなった場合には、文字数カウント系のパッケージを疑ってみるといいと思います。
ただ、文字数カウントは必須なので、私は代替パッケージとしてほぼ同等の機能を提供するcounterを導入しました。こちらは今のところ日本語の長文を入力した際にも不具合なく正常に動作しています。

編集後記

ここまでで、ひとまずAtomの紹介は終了です。セットアップは若干大変ですが、無料でScrivenerなどの高機能ソフトウェアにも劣らない執筆環境を整えることができます。
余談ですが、Visual Studio Code (VS code)でもまったく同じセットアップが可能かつ、必要なパッケージの数はVS Codeの方が少ないので、VS codeの方が良いかもしれません。