マークダウンで論文を書いてみる (検証編)

はじめに

前回のマークダウンで論文-準備編 に引き続き実際に変換が上手くいくか検証していきます。

実際にコードを走らせるにはファイルの準備などが必要ですので準備編を参照してください。。

Pandocを使ってMS Word形式のDocxへ変換

マークダウン形式のファイルをDocxへの変換は以下のコマンドでできます。今回はシェル・スクリプトに変換用の引数を書いてそれを実行する方法を取りました。

yamlファイルに変換用の引数を書いて、コマンド・ラインからyamlを指定して実行するのが一般的なようです。yamlの書き方が微妙に間違っているためだと思いますが、変換がうまく行かないことがあったのでこの方法にしています。

cd Documents/Manuscript
sh pandoc_md2docs.sh
引用文献の挿入

VS CodeでZotero Citation Pickerのエクステンションが入っている場合は以下の通りです。

  1. Zoteroを起動します。
  2. マークダウンのファイルの文献を引用したい場所にカーソルをおきます。
  3. コマンド・パレット(cmd-shift-P)を開き、ZoteroとタイプしてZotero Citation Pickerを選択してください。
  4. 文献選択ウィンドウが出るので、検索して探すかリストから文献を選択します。
  5. 複数の文献を選ぶには、一つの文献を選んだ後に引き続き文献を選ぶことによって引用文献の追加ができます。
  6. 文献の選択が終わったらリターン・キーを押すと文中に挿入されます。

それ以外のテキスト・エディタの場合は以下の通りです。VS CodeでZotero Citation Pickerのエクステンションが入っている場合は、ドラッグはできませんが、コピー・ペーストは使えました。

  1. まずZoteroを起動します。
  2. ライブラリーから文献を検索。
  3. ライブラリーをテキスト・エディタの文献を挿入したい部分にドラッグするか、command-shit-Cでコピーし、command-Vでペーストする。
  4. 複数の文献が同じ場所に必要な場合は、挿入された二つの文献の間の括弧をセミコロンに置き換えるといいです。

[@arifClinicallySignificantProstate2020]とこんな感じのサイテーション・キーが挿入されます。

文字の修飾

マークダウンの太字、イタリック、上付き文字、下付き文字、下線付き文字、取り消し文字の書き方は*, _, ^, ~の記号を使ったマークダウンのもともとの表記方法とhtmlのタグを使う表記方法があるのでそれぞれ試してみました。下線付き文字はもともとのマークダウンでは用意されていません。

マークダウン・ファイルでの表記
**strong** (**), __strong__ (__), <strong>strong</strong> (str)

*italic* (*), _italic_ (_), <em>italic</em> (em)

***str_ital*** (*), ___str_ital___ (_), <strong><em>str_ital<<em></strong> (st/em)
^13^C (^), <sup>13</sup>C (sup)

H~2~O (~), H<sub>2</sub>O (sub)

~~Not~~ (~~), <s>Not</s> (s)

<u>underline</u> (u), <ins>underline</ins> (ins)

上のがマークダウンでの実際の表記です。

VS Codeのマークダウン・プレビュー (default)
strong (**), strong (__), strong (str)

italic (*), italic (_), italic (em)

str_ital (***), str_ital,  (___), str_ital (str/em)

^13^C (^), 13C (sup)

H~2~O (~), H2O (sub)

Not (~~), Not (s)

underline (u), underline (ins)

VS Codeのプレビューでは上付き・下付き文字の^a^, ~a~は使えないけど、それ以外は全て使えました。Markdown ExtendedというエクステンションをVS Codeはに入れると上付き・下付き文字も^a^, ~a~で使えるようになりました。

MS Word変換後
strong (**), strong (__), strong (str)

italic (*), italic (_), and italic (em)

str_ital (***), str_ital,  (___), str_ital (st/em)

13C (^), 13C (sup)

H2O (~), H2O (sub)

Not (~~), Not (s)

underline (u), underline (ins)

MS Wordでは*, _, ^, ~の記号を使ったもともとのマークダウンの表記法は全て使えてましたが、htmlのタグを使う表記方法は全て使えませんでした。

論文を書く場合には、修飾文字は*, _, ^, ~の記号を使ったもともとのマークダウンの表記法を使いましょう。

表の挿入

マークダウンの表はPipe法で書きます。それぞれの列の間を縦線| (pipe)記号で分けます。右端・左端の縦線| は省くことができます。一行目と二行目の間は-(dash)記号で分けます。dashの両端に:(colon)記号をつけることによって右寄せ・左寄せ・中央揃えを指定できます。列の幅は通常は列の一番長いセルの幅に自動的になるようです。テーブルの幅がページ幅を超える場合には、一行目の列の幅に比例してそれぞれの列の幅が決まるらしいです。テーブルの幅より長いセルはマークダウンのプレビューでは自動的にラップされますが、MS Wordに変換するとラップされずに枠外の文字は消えてしまいます。またグリッド法と違ってセル内で改行したりリストを作ることはできません。MS Wordに変換後は横線一本だけの表になります。

VS Codeのエクステンション(Markdown Extended)が入っているとエクセルからマークダウンにコピー・ペーストするとこの形式でペーストされます。VS Codeのエクステンション(Markdown All in One など)を入れると列間の縦線がヘッダーの幅に合わせて整形することができます。

|  Right | Left  | Default  |   Center   |
| -----: | :---- | -------- | :--------: |
| orange | apple | melon    | strawberry |
|  horse | tiger | elephant |    bear    |
|      3 | 2     | 1        |     1      |

Grid法はVS Codeのマークダウン・プレビューでは正しく表示されませんが、PandocでMS Wordに変換すると正しく表示されます。表記法がすでに表になっているのでプレビューの形式の崩れは気にしなくても良いかもしれません。それぞれの列の間を縦線| (pipe)記号で分けます。それぞれの行の間は=(equal)と-(dash)記号で分けます。縦線と横線の交点は+(plus)記号です。=の両端に:(colon)記号をつけることによって右寄せ・左寄せ・中央揃えを指定できます。列の幅とは-/=の数と一致するようです。利点はセル内をリスト(-)、改行(\)してコントロールができます。MS Wordに変換後は横線一本だけの表になります。

+--------+-------+----------+-------------+
|  Right | Left  | Default  |    Center   |
+=======:+:======+==========+:===========:+
| orange | apple | melon    | strawberry\ |
|        |       |          | blueberry   |
+--------+-------+----------+-------------+
|  horse | tiger | elephant |     bear    |
+--------+-------+----------+-------------+
|    3   | 2     | 1        |      1      |
+--------+-------+----------+-------------+

単純な表ならPipe法で作成可能です。列の幅に収まらない場合は文字が途中で切れるので注意が必要です。Grid法なら改行を指定できるのでその点安心です。その場合マークダウンの正式な表記法ではないのでプレビューでは正しく表示されません。複雑な表はエクセルで作るのが良いと思います。

図の挿入

マークダウンに図を挿入するには図が保存されているパスを指定します。図の表示の大きさなどはうまく指定できませんでした。

### Figures

![](test.jpg)

**Figure 1A** This figure shows that.
Pandocを使ってDocxからマークダウンへの再変換

共著者に論文をレビューしてもらった後にMS Wordをコメントや変更部のトラック・チェンジを残したままマークダウンに戻せるとのことなので試してみました。

pandoc -s output_rev.docx -o output_rev.md

結論から言うと全くだめでした。

変更部分やコメントはカッコ内に表示されて問題ありませんでした。

文献を引用した部分[@arifClinicallySignificantProstate2020]のようなが引用キーに戻るのではなく、^3^のようにMS Wordでの表示が変換されただけでした。レファレンスのリスト、図の表示も同様です。可逆的な変換ではありません。当然といえば当然なのですが。

まとめ

マークダウンを使って論文を書く環境を試してどこまでできるか検証していみました。

引用文献の挿入、太字、斜体字、上付き・下付き文字などの修飾文字、図の挿入もMS Wordへの変換は問題なくできました。

テーブルの挿入もできますが、複雑なテーブルが必要な場合はエクセルなどで作り、最後にMS Wordに貼り付けるのが無難だと思いました。

共著者に論文をレビューしてもらった後の段階を想定してMS Wordからマークダウン形式への再変換も試しましたが、これは文献引用部が戻らないので無理でした。

 

最終更新日:2022年11月1日