経緯
社会人ドクター生活も、4ヶ月経って結構バタバタしていたため完全ブログストップ状態。
2021年4月に入ってすぐ、論文を書く流れになったもののTeXはよくわからんけどOverleafなら問題なく出来るよっていうことで、TeXを使い始めました。
結果的に便利で、作法もなれては来たが、差分管理とかぐちゃぐちゃになりがちで(GitHub連携はカネがかかるし)仕方なくTeX環境をローカルに作ってGitHubで管理する。必要に応じてというか最終段階に入る頃にOverleafを使うのがいいんじゃんっていうところに行き着きました。
これは@hyper_pigeonさんも言っていることであながち間違いじゃないんだなぁというか共通認識を持っている方がいるということで、さっと環境を準備するかとなったという経緯です。 hyper-pigeon.hatenablog.com
環境構築
TeXの知識吸収
TeXの知識が殆どないので奥村先生のLaTeX2ε美文書作成入門読めよっていう話。こちらを読めば、今抱えている問題も解決しそう。マダ読み中
どうやるか
- 絶対にローカルに環境をセットアップしたくないのでDocker一択
- まぁ他に同じようにやっている人いるでしょう
- というわけで、結論から言うと、 先程紹介した@hyper_pigeonさんのレポジトリ github.com とTwitterでepsが変換できないとぼやいていたら神の一言で、「テンプレートあるよ」ってな感じで@meta1127さんのレポジトリを参考にしました。(ご本人からもeps自体の解決にはならないかもだけど、参考までにっていうことで。)
よく使われていたTexLiveイメージ(若干TexLiveのバージョンは古い)https://t.co/sDVRku0RVS
— meta (@meta1127) August 6, 2021
GitHub ActionsでPDFビルドするテンプレート(Dockerイメージは上のもの)(自前)https://t.co/h3nvvsMK1w
結論
ここでつぶやいている通り、以下のようになりました。
フォーマット次第で
— くろたんく@激しく多忙 (@black_tank_top) 2021年8月7日
・Docker imageは大きく2つ使い分ける
・.latexmkrcでいい感じに設定する
・latexmkでpdf化まで持っていく
・dockerコマンド長いからMakefileでタスクっぽく実行する
・GitHub Actionsも設定してバーション管理
これで多分ほぼ解決なはず
型ができれば怖くない
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でいい感じに設定する
- これは変換コマンドがテンプレートと合っていないといい感じに変換できないということのようで、きちんとは理解できていないですが、エラーが出たら適宜対応するとなんとかなりそうということがわかりました。
latexmkでpdf化まで持っていく
- 複数のコマンドでゴニョゴニョやるのはむずい(めんどくさかった)ので latexmkコマンドで一発(ただし、.latexmkrcをつかって設定はコントロールする)
- dockerコマンド長いからMakefileでタスクっぽく実行する
- これは@hyper_pigeonさんのアイディアをそのまま使わせていただきました。後で示す私のレポジトリの場合はもっと簡略化して
make latexmk
で動くようにしました。
- これは@hyper_pigeonさんのアイディアをそのまま使わせていただきました。後で示す私のレポジトリの場合はもっと簡略化して
- GitHub Actionsも設定してバーション管理
- これはどちらでも良かったのですが、せっかくなので@meta1127さんが教えてくれたものを参考にさせていただきました。ただGitHub Actionsやtagなどは使ったことがほぼなかったのでこちらも勉強しました。
成果物
こちらに最終的に挙動を一応確認したものをpushしておきました。
解決しました。単純に.gitignoreに*.pdfとしていてpushされてないということでした。!/figure/*.pdf
などとすることでpushできて問題なくbuildできました。
ただ、これには若干問題があり、figureのpdfなどをfig/というディレクトリに入れた状態で実行するとローカルではビルドできるけどGitHub Actionsではコケるという状態を確認しています。
. ├── Definitions ├── Makefile ├── figure │ ├── fig1_XXX.pdf │ ├── fig2_YYY.pdf └── main.tex
イメージとしてはこんな状態のものです。解決法がわかる方がいたら教えてほしいです。
終わりに
この作業に2日位は費やしてしまったが、博士論文のフォーマットもその他のジャーナルのフォーマットも、とりあえず挙動が確認できたので、一旦、書くことに集中出来るという状態になりました。
環境系は疲れる。