一般
LaTeX美文書作成入門 は持っておくと便利
Must read
- 使ってはいけない LaTeX のコマンド・パッケージ・作法
- 日本語 LaTeX の新常識 2021 - Qiita
- 修士論文や夏の学校の集録や学振申請書を書く皆さんへ
- 宇宙天文学という別分野であるため流派が違うこともあるが、わかりやすい表現を書くための基礎は共通しているのでためになる
- 単位付き数字については siunitx を使うのがよい。詳しくは後述
執筆中・添削時に便利なパッケージ
\usepackage{linen}- 行数が出力される
- CVPR のフォーマットでは review オプションを有効にすると行数が出るので不要
\usepackage{zebra-goodies}- コメント、TODO ノートなどをつけられる
- 天地有情 zebra-goodies --- 執筆のための便利なマクロのコレクション
\usepackage {skeldoc}- 「後で埋める予定だが今はまだ書いていないところ」を埋めるためのプレースホルダを作ることができる
- 天地有情 skeldoc –— 未完成のドキュメントのプレースホルダー
コマンドを検索する
- Latex cheat sheet
- 手書きLatex数式認識
- LaTeX美文書作成入門 を読む。電子版を持っているなら検索する
- 数年おきに改訂版が出ている
- LLM に聞く
自前でコマンドを定義するには
\NewDocumentCommand を使うのがよい
- latex における昔ながらのやり方として
newcommandがあるが、NewDocumentCommandの方が高度なコマンドを作ることができるのでこちらで覚えてしまった方がよい - 書式は
\NewDocumentCommand\命令名{引数仕様: s m o O{default}など}{命令内容} - より詳しくは この記事 を参照
数字・数式
Must read
工学系の卒論生のための数式記述入門 はとりあえず読む。
ここに書いていないことだと、
下付・上付文字に言葉を書くのは避ける
とかのこと。できるだけ避ける。しかし最近の論文ではありがち( など)。
- これを避けるための工夫として、バー・ハット・1 文字のシンボルで表す(頭文字など、直感的にわかるものであり、かつ被らないものを考える)などが考えられる。
- 上の例では など
- それらが難しく、英単語を使わなければならない場合でも、そのような言葉はローマン体にするべき。
- 例えば上の pred とか adv は、
\mathrm{}を使って , のようにするほうがマシ - 数式における基本ルールは「変数は イタリック体、それ以外の文字はローマン体」である
- 例えば上の pred とか adv は、
単位付き数字は siunitx で書く
\usepackage{siunitx} をプリアンブルに書いておく。
単位は変数ではないのでローマン体にしなければならなかったり、単位と数字の間に少しだけスペーシングを取る必要があったりとややこしいので、siunitx に任せてしまうのが一番楽だし美しくなる。
昔は \si \SI 等のコマンドを使って書いていたようだが、これは今は非推奨でありマニュアルからも削除されている。代わりに以下のコマンドを使う:
\qty{123d-4}{m}: になる.quantity の略と思われる\unit{m}: 単位だけを書く\num{123}: 数字だけを書く\num[group-separator={,}]{123456}: 3 ケタごとにコンマで区切り、 のように出力- このオプションを全体に適用するにはプリアンブルに
\sisetup{group-separator={,}}
- このオプションを全体に適用するにはプリアンブルに
\numproduct{123x456}かけ算を書く\qtyproduct{8x8}{m}: のように出力される\ang{60}: 角度を出力する.\qty[parse-numbers = false]{\sqrt{3}}{m}: 数字部分で数式を使いたい場合は、siunitx 自体による数字のパースをオフにする\num[separate-uncertainty=true]{3.14(217)}: のように出力- このオプションを全体に適用するにはプリアンブルに
\sisetup{separate-uncertainty=true}
- このオプションを全体に適用するにはプリアンブルに
ほかにも多くの機能がある。例えば、表の type (r とか l とか c とか書くところ) に S と書くことで、その column に書かれたものを \num の引数として解釈し、さらに小数点をそろえることができる。
詳しくは ユーザーマニュアル を読む。
独立行数式も文章の一部
なので、数式で文を終わるときにはピリオドをつける。
その際には、ピリオドの前に適宜 \, などでスペースをいれる。数式の直後にピリオドをつけると空白が狭すぎて不自然になることがあるので
記法を調べる・先行研究の記法を真似する
- arXiv に上がっている論文は latex ソースコードも読めるので、出力を真似したい場合に便利
- Detexify LaTeX handwritten symbol recognition
- VLM に画像を投げる
- これが一番楽かもしれない
表
tabularray package を使った例が latex 美文書入門 9 版では紹介されている。
とにかくbooktabsを使おう にあるように booktabs でもよい。
- この PDF には簡潔な表を書く方法がまとまっているので、booktabs を使わなくとも読む
tabularray の方が機能が豊富なので,こちらに合わせられるならこちらで書くとよい。
記入例
\begin{table}[t]
\centering
\begin{tblr}{@{}llll@{}}
\toprule
ヘッダ
\midrule
中身
\bottomrule
\end{tblr}
\caption{キャプション}
\label{ラベル}
\end{table}本文
つながりの強い単語の間はニョロ空白
Transformer~\cite{Vaswani2017_Transformer} のように、cite の前はニョロ空白にする。これは通常の空白と大きさは同じだが、改行を許可しない。
- 逆に言うと無理に 1 行に収めようとするということでもあるので、ニョロ空白としないほうがよいとする意見もある。
Dr. Mr. Mrs. e.g., i.e., の後など、つながりの強い語の間も改行しないほうがいいとされているので、 Dr.~Strange のようにニョロ空白にする。
- 同じ理由で、Fig. や Tab. などの後もニョロ空白。ただし図の参照は通常は cleveref でやるべき。
- 改行を許可したい場合は、下にあるセンテンス間スペースにならないように
Dr.\ Strangeのようにバックスラッシュをつける。
センテンス間のスペースに注意
LaTeX 美文書
英小文字に . ! ? : のようなピリオド類(および,もしかしたら閉じ括弧類)が続くと,その直後のスペースはセンテンス間のスペースだと判断され,少し幅が広くなります。
- ピリオド類が来ても文末としたくない場合は、スペースの前にバックスラッシュをつける
- 例:
Conf.\ Comput.\ Vis.\ Pattern Recog.
- 例:
- 逆に大文字で文が終わりセンテンス間スペースではないと判断されてしまう場合、
I watch TV\@.のようにすることで変更する
参考文献
Must read
.bib ファイルの入力
Google Scholar/論文誌/論文のプロジェクトページが提供している bibtex をコピーしてくれば大きな間違いは起きていないはず。とりあえず全部コピーしてきた上で、以下の要素を確認
文献の種類が合っているか
CV 分野の論文は大体この 3 つの中に収まるはず
- 学会論文:
@inproceedings- CVPR, ICCV, …
- 論文誌論文:
@article- TPAMI, IJCV, TOG, …
- arXiv:
@article - これら以外を引用する場合、上の Must read を読んで適当なものを選ぶ
必須欄が埋まっているか
@inproceedings, @article に関して、以下の要素が埋まっていなければ論文誌のページを見るなどして埋める。
-
title,author,yearが必須 -
@inproceedingsではbooktitle、@articleではjournalが必須 -
必須ではないが
pageは埋められるはず -
論文誌 (
@article) については(必須ではないが)volume,numberも埋められるはず -
必須欄が埋まっていなければ bibtex/latexmk の出力に警告が出ているはず。
Warningで検索する。例えば以下のようなものが出力されているはずDatabase file #1: main.bib Warning--empty note in LM Warning--empty publisher in SMPL (There were 2 warnings)- overleaf でも警告が出ているはず
文献種別ごとに必須欄が違うので、ほかの種別については美文書を確認する
タイトルの大文字小文字
論文誌の提供する bst ファイルがフォーマットを合わせてくれるので、bibtex に記入する内容については以下のルールに従うだけでよい。
LaTeX 美文書
欧文のタイトルでは、
- 必ず小文字にしたい文字は小文字で書きます。
- 大文字にするか小文字にするかを bst ファイルに一任する文字は大文字で書きます。
- 必ず大文字にしたい文字は {E}instein のように波括弧で囲んだ大文字にします。
要するに、できるだけ各単語の頭を大文字で書くようにします。ただし、冠詞(a、an、the)、強勢のない接続詞、前置詞(of など)は小文字です。タイトル、サブタイトルの最初の語は、例外なく大文字で始めます。
これに加え、手法名や数式も論文誌の指定より優先したいので、curly brace で囲う必要がある。 title={{EP$n$P}: An Accurate {$O(n)$} Solution to the {P$n$P} Problem}, とか。
しかし、Google scholar や論文の公式ページで提供されている bibtex がこれらのルールを守っていないことはしばしばあるので、ちゃんと確認する。
よくあるミスを検索する Vim のパターンを列挙する。
-
「語頭なのに小文字である文字」を探す。基本的に大文字にしてよい
\v<title.{-}(\s|-)<((a|an|the|to|from|for|in|with|of|on|and|by|as|via)>)@!\l/e -
「小文字の後に大文字が続いているパターン」を探す。通常の文章ではあり得ないパターンなので、著者がちゃんと大文字にして欲しがっている文字である可能性が高い。Curly brace で確実に大文字にする
\vtitle.{-}\l\u -
コロンを探す。論文の手法・データセットなどに名前をつけている場合、コロンがつくことが多いため。この場合、コロンより前全体が固有名詞と考えられるので、curly brace で確実に大文字にする
title.*: -
“3D” や人名など、確実に大文字にしなければならない単語を探す
\dD Gauss Newton Einstein ...
最後に
- 全体を目で探す
- LLM に聞く
黒魔術
どうしても規定のページ数に収まりきらないときは、図とキャプションの間隔を微妙に縮めるなどして無理やり入れることができるが、これは本来許されない黒魔術なのでこっそりやらなければならない。
……と思っていたのだが、CVPR/ICCV/3DVフォーマットのpreamble.tex でそんな黒魔術がオフィシャルなテクニックとして紹介されていたので拍子抜け。
以下の 3 つがそれにあたる。下 2 つについては数字を調節する。
\usepackage{microtype}
\renewcommand{\paragraph}[1]{\vspace{.5em}\noindent\textbf{#1.}}
\setlength{\abovecaptionskip}{.5em}こんなことしていいんだ……マニュアルをちゃんと読むのって大事。