大学の課題を書くのにwordからlatexに変えたら、良い感じになったので備忘録がてら書いてみました。
PCはMac OS(M2)を使用しています。
LaTeX
MacTexのインストール
homebrewからMacTex
のGUIアプリケーションを除いたものをインストールしました。
$ brew install --cask mactex-no-gui
pdfTeXというものを使っているみたいですね。
❯ latex -v
pdfTeX 3.141592653-2.6-1.40.26 (TeX Live 2024)
...
.latexmkrcの設定
どこかは忘れてしまいましたが、参考にした記事の内容をまるまるコピペして使っています。
参考元を忘れてしまったのでここは省略します...
VSCode
拡張機能のLaTeX Workshop
をインストールします。
この拡張機能の設定をすることで、保存すると自動でビルドしてくれたり、不要なファイルを削除してくれたりしています。
以下はVSCodeの設定の一部です。こちらも色々記事をみて参考にしました。
{
...
"latex-workshop.latex.tools": [
{
"name": "latexmk",
"command": "latexmk",
"args": ["-silent", "-outdir=%OUTDIR%", "%DOC%"]
}
],
"latex-workshop.latex.recipes": [
{
"name": "latexmk (tex to PDF)",
"tools": ["latexmk"]
}
],
"latex-workshop.view.pdf.viewer": "tab",
"latex-workshop.latex.clean.subfolder.enabled": true,
"latex-workshop.latex.autoClean.run": "onBuilt",
"latex-workshop.latex.clean.fileTypes": [
"*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.ist",
"*.fls",
"*.log",
"*.fdb_latexmk",
"*.snm",
"*.nav",
"*.dvi",
"*.synctex.gz"
],
"latex-workshop.latex.outDir": "out"
...
}
Makefile
LaTeX環境とは別にファイルの作成も手軽にしたかったので、Makefileを作成することにしました。
自分で思いついたかのように書いてますが、友人がそうしてたのを真似た感じです笑
突然ですが、以下は私の授業の課題を管理しているディレクトリです。
.
├── template // LaTeXのテンプレートを置くところ
├── 1-psp-0
│ ├── Compile
│ │ ├── Compile.tex
│ │ └── out
│ │ └── Compile.pdf
│ ├── DesignStatement
│ │ ├── DesignStatement.tex
│ │ └── out
│ │ └── DesignStatement.pdf
│ ├── RequirementsStatement
│ │ ├── RequirementsStatement.tex
│ │ ├── figure1.png
│ │ ├── figure2.png
│ │ └── out
│ │ └── RequirementsStatement.pdf
│ ├── TestResults
│ │ ├── TestResults.tex
│ │ ├── figure1.png
│ │ ├── figure2.png
│ │ ├── figure3.png
│ │ ├── figure4.png
│ │ └── out
│ │ └── TestResults.pdf
│ ├── document
│ │ └── ...
│ ├── repo
│ │ └── ...
│ └── submission
│ │ └── ...
├── 2-stds
│ ├── ...
...
色々ありますが、こんな感じの構成になっています
.
└── [各課題のディレクトリ]
├── [ファイル名]
│ ├── [ファイル名].tex
│ └── out
│ └── [ファイル名].pdf
├── document // 課題の資料を置くところ
│ └── ...
├── repo // ソースコードを置くところ
│ └── ...
└── submission // 最終的に提出するものを置くところ(複数回あるので)
└── ...
上記のうち[ファイル名]ディレクトリ
と[ファイル名].tex
をMakefileで生成してもらう感じです。
Makefileと、コマンドは次のようにします。
TEMPLATE=./template/template.tex
$(DIR)/$(NAME)/$(NAME).tex: $(TEMPLATE)
mkdir -p $(DIR)/$(NAME)
cp $(TEMPLATE) $@
$ make DIR=[課題のディレクトリ] NAME=[ファイル名]
これを実行すると、指定した課題のディレクトリ内にtexファイルを含むディレクトリが生成されます。
またこのtexファイルをVSCodeで編集して保存すると、texファイルのディレクトリ内に/out
という名前で勝手に出力してくれるるわけです。
すっごく手軽になりました!嬉しい!
余談ですがMakefileなんて授業でしか作成したことなかったので、たった数行ですがたくさん調べました。まだまだだなあ
GitHubで共有
元々WordからLaTeXに乗り換えた理由は、研究室のパソコン(Windows)でも作業がしたかったためです。
Wordをクラウドで共有すれば良いかと思いましたが、やっぱり毎回ダウンロードしたりアップロードしたりがめんどくさいと思ったこと && 良い機会だしLaTeX触れるようになりたいなあと思ったことがきっかけでした。
gitignore
上記では省きましたが、各ディレクトリで.DS_Store
が生まれること、.dvi
やsynctex.gz
がなぜか削除されない状態なので、それらを無視するようにしています。
また、documentディレクトリは資料(wordファイル)を含むため、submissionディレクトリは提出物の管理はする必要がないという理由で、gitignoreに追加しています。
これでtexファイルの共有も簡単になりとっても嬉しいです。
今後の展望
現在はVSCodeの拡張機能を使って自動ビルド等をしていますが、頑張れば.latexmkrc
でできるようになると(これまた友人から)聞いたので、やってみたいです。
最近ちまちまとterminalだったりNeoVimを整備したりしてるので、そちらでできるようになればかっこいいかな...と思ってます。
卒論までにlatexビギナーの山(?)は登りたいです。
ここまでご覧いただきありがとうございました🙌