当記事は 物工/計数 Advent Calendar 2019 の3日目です.
概要
東大工学部計数工学科の卒業論文では学科から推奨のLaTeXテンプレートが配布されています.
Overleafで書こうとしている人がいると思いますがコンパイルを通すのにほんの少しだけ設定が必要なので書いていきます.
本当は自分の設定ファイルを全部GitHubか何かにあげて配布したいのですがいじって二次配布とかになるとちょっとアレなので手続きを書きます.
基本的にブラウザ上で動くものなのでOSには依らないと思います.Overleafでなく手元で作業したい人はこちら1に詳しく方法が書いてあります.
ちなみに本記事にしたがって(分割コンパイルを除く)作業をしたものを学科同期がテンプレートとしてここにUPしてくれました.
Overleafですぐ使えます.
ダウンロード
数理
https://www.keisu.t.u-tokyo.ac.jp/research/latex/
システム
https://www.keisu.t.u-tokyo.ac.jp/research/latex-system
上記URLの上の方にあるテンプレートをダウンロードします.
解凍したファイルのうち実際に使用するのは,数理の場合 skeleton.tex
と suribt.cls
だけ,システムの場合 skeleton_system_B_Japanese.tex
とsystemB.cls
だけだと思って良いです.
以下,数理コースのテンプレートを例にとって説明しますが,システムの場合も skeleton.tex
を skeleton_system_B_Japanese.tex
に, suribt.cls
をsystemB.cls
に読みかえれば大丈夫です(動作検証済).
文字コード変更
文字コードがShift-JISになっていてこのままだと日本語が文字化けする,また\と¥の使いわけでバグるので,学科側で直して配布してくれれば良いのにと思いながらUTF-8に文字コードを変換します.
方法はなんでも良いですが,例えばnkf
コマンドなんかが使えます.
インストールは適当に行なってください.
nkf -w -S --overwrite skeleton.tex
nkf -w -S --overwrite suribt.cls
他にもメモ帳で変換する方法とかWeb上の変換ツールとかあるみたいなので適当に.
Overleafでコンパイルまで
Overleafにログインしたら New Project
> Blank Project
で適当な名前でProjectoを作ります(自分は grad_thesis
という名前にしました).
自動作成されているmain.tex
はいらないのでDeleteして,文字コードを変換したskeleton.tex
とsuribt.cls
をアップロードしてください.
ここでコンパイルすると大量のエラーが出ます.テンプレートで指定されているpLaTeXというものを使用するために以下の設定2を行います.
まずNew File
でlatexmkrc
というファイルを作成して以下の内容をコピペしましょう.
$latex = 'platex';
$bibtex = 'pbibtex';
$dvipdf = 'dvipdfmx %O -o %D %S';
$makeindex = 'mendex %O -o %D %S';
$pdf_mode = 3;
その後,画面左上の Menu
をクリックして Compiler
をLaTeX
に,Main document
をskeleton.tex
に変更します.
ここまで行なってskeleton.tex上で Cmd + Sとかなんとかでコンパイルすると無事通り,こんな感じのPDFが表示されます.嬉しい!
BibTeX
ここまでで一応なんとなく書けるようになってはいますが,BibTeX(参考文献の記述ツール)はほぼ全員使うと思うのでついでに書いておきましょう.
New File
でreference.bib
というファイルを作成します.
例えば中身はこんな風に書いてみましょう3.
ちなみにBibTeXの.bib
ファイルに記述するテキストはGoogle Scholarから直接出力できる4ので文法等を覚える必要は基本的にありません.
@inproceedings{
KyTea,
title={Pointwise prediction for robust, adaptable Japanese morphological analysis},
author={Neubig, Graham and Nakata, Yosuke and Mori, Shinsuke},
booktitle={Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies: short papers-Volume 2},
pages={529--533},
year={2011},
organization={Association for Computational Linguistics}
}
skeleton.tex
も少し書き換えます.最初に \bibliographystyle{junsrt}
を付け足すのと,参考文献部分をコメントアウトしたりコメントアウト外したり.bib
ファイルのパスを入れたり.ちなみにjunsrt
をjplain
にすると著者名のアルファベット順に引用番号がつきます.
\documentclass{suribt}
\bibliographystyle{junsrt} % <----ココ
% ~~~~~~~~~ 省略 ~~~~~~~~~~
% \begin{thebibliography}{}%%%% 参考文献 %%%
% \bibitem{}
% \end{thebibliography}
% \bibliographystyle{}% BibTeX を使う場合
\bibliography{reference.bib}% BibTeX を使う場合
これで文章中の引用を入れたいところに,例えば今回のreference.bib
の例だと \cite{KyTea}
と入れれば引用番号が入ります.
Neubigらによる研究\cite{KyTea}では...
数式環境などのパッケージ追加
数式環境やコードの記述環境などを整備する際に追加のパッケージを利用することがあるかと思います.
例えば\begin{align*}
などを使うときにはamsmath
を利用します.
このようなパッケージの追加はプリアンブル(\begin{document}
の前)に usepackage
を書き足すことで行えます.
\documentclass[ipc]{suribt}
\bibliographystyle{jplain}
\usepackage{amsmath} % <------ ココ
% ~~~~~~ 省略 ~~~~~~~
分割コンパイル
Overleafではコンパイルに結構時間がかかります.
卒論くらいの規模になってくると全てまとめてコンパイルしたら数十秒はかかるため,章ごとに分割することをお勧めします5.
方法は簡単で,まずは章ごとにtexファイルを作成します.
自分はchapters
というフォルダを作成に,その中にchap1.tex
などを作成しました.
それぞれのファイルの中では以下のように記述します.
\documentclass[../skeleton]{subfiles} %このファイルからのメインファイルの相対パス(.texを除く)を[]内に書く
\begin{document}
\chapter{序論}
\section{ほげほげ}
本論文では...について論じる.
\end{document}
mainのtexファイルにsubfile
パッケージを追加して,以下のようにsubfile
を追加すると,全体に対して先ほどの小分けのファイルの内容が入れ込まれます.
\documentclass{suribt}
\bibliographystyle{junsrt}
\usepackege{subfiles} % <----- ココ
% ~~~略 ~~~
\mainmatter% ここから本文 %%% 本文 %%%%%%%%
\subfile{chapters/chap01} % <----- ココ
\subfile{chapters/chap02} % <----- ココ
\subfile{chapters/chap03} % <----- ココ
\subfile{chapters/chap04} % <----- ココ
\subfile{chapters/chap05} % <----- ココ
\backmatter% ここから後付
\subfile{chapters/acknowledgements} % <----- ココ
% ~~~ 略 ~~~
小分けのファイルを表示した状態でコンパイルすると,そのファイルの中身のみをコンパイルしてくれるのであまり時間がかかりません.
表示される章番号はズレますが,全体でコンパイルしたときはきちんと合うので無問題です.
その他
定理の証明環境とか必要になる可能性の高い細かいことはこのテンプレートを整備した過去の人々が色々書いてくれています6.
LaTeXで卒論書く場合の数式等での記法のTipsはこの辺り78が非常に参考になるかと思います.