都市大YCの卒業研究概要集をMarkdownで快適に書くためのPandoc環境セットアップ備忘録

未分類

この記事はTokyo City University Advent Calendar 2021の3日目の記事です。

昨日の記事は @BOB さんによる 辻堂にバーガーキングができたらしい - bob563’s diary でした!

弘前の人のテンションと同じ感じで好きです。

はじめに

4年生の皆様は絶賛卒業研究中かと思われます。お疲れ様です。

さて、論文や概要集を書くにあたって、Wordで書いていくのはなんとなく嫌な人、いると思います。
Markdownで書いて、いい感じにしてくれれば・・・

そんなときにはPandocを使って変換していくのですが、環境構築がなかなかに面倒です。

とりあえず1月に提出するYC用フォーマットの卒業研究概要集を出力できるように整ってきたので、備忘録としてセットアップについて記載してきます。

(いろいろなところからの寄せ集め情報です。)

割と勘の状態でやっており、詳しい人からのツッコミがすごそうな記事なので、むしろそういう方からのツッコミをお待ちしています。よろしくおねがいします。
設定を複数箇所に渡って指定したりしていますが、何故かそうしないと動かなかったりするんです。助けてください。

環境について

本記事ではLinux(Debian/Ubuntu)環境を想定しています。
(筆者が実際に使っている環境はWSL1のUbuntu 20.04です。)
Windowsユーザーの人はこの記事通りに行いたい場合はWSL1で良いのでLinux環境を用意してください。多分Windowsネイティブでも出来るとは思いますが、なんにもわかりません。

macOS(M1, Monterey)でも試していますが、フォントの問題のみ解決できませんでした。ヒラギノでいいなら行けると思います。

環境構築

Linux/WSL(Debian/Ubuntu)

pandocのインストール

ここから最新版のpandocのdebを落としてきます。
執筆時はpandoc-2.16.2-1-amd64.debです。
Releases · jgm/pandoc

その他必要なパッケージを入れる

(フォントはとりあえずIPAexにしています。)

もろもろのテンプレデータ的物を入れるディレクトリを作る

このあたりは適宜好きなようにしてください

pandoc-crossrefを落とす

ここからpandoc-crossref-Linux.tar.xzを落として展開します。
Releases · lierdakil/pandoc-crossref

執筆時は0.3.12.1aでした。

これで~/markdownにpandoc-crossrefという実行ファイルが展開されます。

macOS(M1 + Montereyでテスト)

pandocのインストール

最新版のpandocのpkgを落としてインストールします(全てのユーザーに対してで良いかと)。
執筆時はpandoc-2.16.2-macOS.pkgです。
Releases · jgm/pandoc

その他必要なパッケージを入れる

texlive系のインストールはbrewだと思ったよりめんどくさそうなので、MacPortsを使います。

フォントを入れていきますが、macOSだとIPAex明朝ではレンダリングがコケる気がします。まぁインストールすると普通にIPAexフォントがインストールされるだけなのでとりあえず。

もろもろのテンプレデータ的物を入れるディレクトリを作る

このあたりは適宜好きなようにしてください

pandoc-crossrefを落とす

ここからpandoc-crossref-Linux.tar.xzを落として展開します。
Releases · lierdakil/pandoc-crossref

執筆時は0.3.12.1aでした。

これで~/markdownにpandoc-crossrefという実行ファイルが展開されます。

(以下Linux/macOS共通)pandocとpandoc-crossrefのバージョンを確認する

pandocとpandoc-crossrefのビルド元pandocバージョンは一致していないと動作しません。

上記の場合、pandocが2.16.2、pandoc-crossrefが「built with Pandoc v2.16.2」となっており、一致しています。

metadata.yamlの用意

図や表、コードなどのPrefixを設定したり、二段組を使う場合に設定したりします。
~/markdown/metadata.yamlとして保存します。

なぜここにTitleやAuthorが入っていないのか、という点については、冒頭部分のレイアウトを自分で制御したいからというのがあります(テンプレートを弄る気力がないので)。後述します。

make.yamlの用意

生成するときのオプションをまとめて書いておいたyamlファイルを用意して、生成コマンドが長くならないようにします。

macOSの場合、CJKmainfontをIPAexMinchoにしても読み込まれないことがあるので、luatexjapresetoptionsCJKmainfontをコメントアウトしてデフォルトのヒラギノ明朝にしたほうが良いかも知れません

フォントサイズが11ptになっていますが、だいたいこれで10.5ptと同じくらいです。
TeX を使った論文作成のノウハウ

header.texの用意

以下の内容を記載した~/markdown/header.texを用意します

コードブロックがない場合はコードブロックの色設定は必要ないですが、
最後のrenewcommandの行が無いと、図などのキャプションが英語のままになります。(さっきyamlで設定したのになんで?)

色設定等はPandocを使ってMarkdownでレポートを書いてみる - 屋根裏 より拝借しました。

図の位置については R Markdownでpdf出力する時の図の位置設定 | Nylog より拝借しました。

references.bibの用意

これは実際のMarkdownファイルがある場所に作ります。

参考文献を突っ込んでいくファイルです。

BiBTeX形式で記載します。
どんなものか、については BiBTeXとは - Qiita を参考にして下さい。

sist02.cslの用意

Zotero Style Repository からsist02.cslをダウンロードします(「SIST02 (日本語)」

これは参考文献のスタイルをいい感じにしてくれるものなのですが、リスト表記時や文章内の参照番号が「(1)」のように普通のカッコになってしまうので、これを[1]のようになるよう、書き換えます。

生成コマンド

hoge.mdをhoge.pdfにする、というものなのですが、実はPandocのバージョンの諸々で、参考文献が入っていると
\vadjust preというコマンドが挿入され、lualatexがエラーを吐きます。
( Error with \vadjust when loading luatexja package - Jgm/Pandoc )

色々検証してみたところ、一度pandocでPDFではなくtexファイルを出力し、当該部分を削除してlualatexでコンパイルするのが良さそうです。

ということで、いきなりですが生成関数を.bashrcや.zshrcに記載します。

(なんでtex出力なのにmake.yamlでpdf-engineを書いたんだ、という話になりそうですが、別に存在してても構わなそうなので許してください)

bash/zsh用function

使い方

  • 準備:
    上記コマンドを.bashrcや、.bashrcでsourceを使って読み込ませる別ファイル等に記載し、読み込ませます。
  • mdファイル、references.bib、画像等のディレクトリについて:
    どこでも構いませんが、

    • hoge.md
    • references.bib
    • 画像または画像が入ったディレクトリ
      は同じ位置に置いてください(画像に関してはresource-pathでmdファイルと同じ階層以下を指定しているので)
  • 実行方法
    1. mdtopdf hoge.mdと実行します
    2. hoge.mdと同じ場所にhoge.pdfが生成されます。

Markdownの書き方

基本はMarkdownなのですが、一部専用の書き方を行います。

冒頭について

PandocでTitleやAuthorをつけると自動でいい感じにタイトルや著者名をやってくれるのですが、


(これはWord)

こういうことをしたいので、自作します。

yamlで二段組を指定していますが、ここは一段組になるため、\twocolumn[]で囲って一段組にします。

(出力したPDF)

こんな感じです。

キャプション・参照について

画像

画像に関しては、

と挿入し、参照するときは

と記述することで行なえます。

参考文献参照

references.bibには以下のように記入します。(これはURLの例です。BibTex形式なので調べるとたくさん出てきます。)

Markdownにはこのように参照させます。

実演

Markdown

PDF

YCの卒業研究概要集をMarkdown+Pandocで書くセットアップについて書きましたが、セットアップに割いた時間をおとなしくWordで書くことに費やしていれば今頃7割位完成していたような気がします。

慣れない作業でめちゃくちゃ疲れましたが、いつか誰かの役に立てば・・・。

明日は@gitercccahuudさんによる「老害大学院生ツイッタラーが教える情報システム学科完全攻略法」です!

参考文献

Markdownで相互参照を使うならpandoc-crossref - DiaryException

Pandocを使ってMarkdownでレポートを書いてみる - 屋根裏

Pandocの比較的簡単なインストール方法 - Qiita

学位論文を書く準備 - プらチナの日記

TeX書式ノート - Qiita

TeX文書で, 本文は2段, 概要は1段で表示させたい - 300億円欲しい

Pandoc User’s Guide 日本語版 — 日本Pandocユーザ会

[Pandoc 2.8 新機能] 長いオプションをファイルにまとめるDefault file - Qiita

まだ Word で消耗してるの? 大学のレポートを Markdown で書こう - Qiita

Pandocで参考文献リストを処理する扱う方法 (PandocとZoteroで参考文献:後編)

BiBTeXとは - Qiita

BibtexでURLを参考文献にする方法 - 日々の報告書

6.2 LaTeX 出力の Pandoc オプション | R Markdown クックブック

メモ: Pandoc+LaTeXで気軽に日本語PDFを出力する - Qiita

TeXのセクションの大きさを変更する - Qiita

TeX を使った論文作成のノウハウ

(1) 角 征典/Masanori KadoさんはTwitterを使っています 「この変更でコンパイルが通らなくなったんだけど、何をしてるのかわからん。。。 https://t.co/8BUh8s84xm」 / Twitter

Error with \vadjust when loading luatexja package - Jgm/Pandoc

R Markdownでpdf出力する時の図の位置設定 | Nylog

コメント

タイトルとURLをコピーしました