くろたんく雑記帳

日常とか、わんちゃんとか、機械学習とか、競プロとか、

MENU

論文執筆TeX環境

経緯

社会人ドクター生活も、4ヶ月経って結構バタバタしていたため完全ブログストップ状態。

blacktanktop.hatenablog.com

2021年4月に入ってすぐ、論文を書く流れになったもののTeXはよくわからんけどOverleafなら問題なく出来るよっていうことで、TeXを使い始めました。

www.overleaf.com

結果的に便利で、作法もなれては来たが、差分管理とかぐちゃぐちゃになりがちで(GitHub連携はカネがかかるし)仕方なくTeX環境をローカルに作ってGitHubで管理する。必要に応じてというか最終段階に入る頃にOverleafを使うのがいいんじゃんっていうところに行き着きました。

これは@hyper_pigeonさんも言っていることであながち間違いじゃないんだなぁというか共通認識を持っている方がいるということで、さっと環境を準備するかとなったという経緯です。 hyper-pigeon.hatenablog.com

環境構築

TeXの知識吸収

TeXの知識が殆どないので奥村先生のLaTeX2ε美文書作成入門読めよっていう話。こちらを読めば、今抱えている問題も解決しそう。マダ読み中

どうやるか

  • 絶対にローカルに環境をセットアップしたくないのでDocker一択
  • まぁ他に同じようにやっている人いるでしょう
  • というわけで、結論から言うと、 先程紹介した@hyper_pigeonさんのレポジトリ github.comTwitterでepsが変換できないとぼやいていたら神の一言で、「テンプレートあるよ」ってな感じで@meta1127さんのレポジトリを参考にしました。(ご本人からもeps自体の解決にはならないかもだけど、参考までにっていうことで。)

結論

ここでつぶやいている通り、以下のようになりました。

Overleafみたいにどんなフォーマットでも平気だぜみたいな感じにはならんので、

  • Docker imageは大きく2つ使い分ける

    • pman0214/docker-alpine-texlive-ja-epspdf
    • Paperist/docker-alpine-texlive-ja github.com github.com

    • 主に、英語はpman0214/docker-alpine-texlive-ja-epspdfを日本語はPaperist/docker-alpine-texlive-jaを使う。どちらでも平気なものもある。

    • 先程言及したepsをfigureやtemplate自体に使われている場合は前者を使うとできます。
  • .latexmkrcでいい感じに設定する

    • これは変換コマンドがテンプレートと合っていないといい感じに変換できないということのようで、きちんとは理解できていないですが、エラーが出たら適宜対応するとなんとかなりそうということがわかりました。
      • とりあえずエラーを読む。(よくわからん事が多い)
      • .latexmkrc の
      • $latex のpdflatexをupdflatex, platex, uplatexに変えたりする。(そんなようなコメントが出ているときがあるので気付けるはず)
      • $latex_silent 上と同じものに変更
      • bblとかリファレンス周りで変なことがおきていそうなら
      • $bibtex のupbibtexを pbibtexに変えたりする。
  • latexmkでpdf化まで持っていく

    • 複数のコマンドでゴニョゴニョやるのはむずい(めんどくさかった)ので latexmkコマンドで一発(ただし、.latexmkrcをつかって設定はコントロールする)
  • dockerコマンド長いからMakefileでタスクっぽく実行する
    • これは@hyper_pigeonさんのアイディアをそのまま使わせていただきました。後で示す私のレポジトリの場合はもっと簡略化してmake latexmkで動くようにしました。
  • GitHub Actionsも設定してバーション管理
  • これはどちらでも良かったのですが、せっかくなので@meta1127さんが教えてくれたものを参考にさせていただきました。ただGitHub Actionsやtagなどは使ったことがほぼなかったのでこちらも勉強しました。

成果物

こちらに最終的に挙動を一応確認したものをpushしておきました。

github.com

解決しました。単純に.gitignoreに*.pdfとしていてpushされてないということでした。!/figure/*.pdfなどとすることでpushできて問題なくbuildできました。

ただ、これには若干問題があり、figureのpdfなどをfig/というディレクトリに入れた状態で実行するとローカルではビルドできるけどGitHub Actionsではコケるという状態を確認しています。

.
├── Definitions
├── Makefile
├── figure
│   ├── fig1_XXX.pdf
│   ├── fig2_YYY.pdf
└── main.tex

イメージとしてはこんな状態のものです。解決法がわかる方がいたら教えてほしいです。

終わりに

この作業に2日位は費やしてしまったが、博士論文のフォーマットもその他のジャーナルのフォーマットも、とりあえず挙動が確認できたので、一旦、書くことに集中出来るという状態になりました。

環境系は疲れる。