一般

LaTeX美文書作成入門 は持っておくと便利

Must read

  • 使ってはいけない LaTeX のコマンド・パッケージ・作法
  • 日本語 LaTeX の新常識 2021 - Qiita
  • 修士論文や夏の学校の集録や学振申請書を書く皆さんへ
    • 宇宙天文学という別分野であるため流派が違うこともあるが、わかりやすい表現を書くための基礎は共通しているのでためになる
    • 単位付き数字については siunitx を使うのがよい。詳しくは後述

    指導教員や先輩などに論文の添削をする前に、まずは最低限、ここに書かれていることを自分で直してから提出しましょう。論文の添削というのは全体の構成や論理展開、実験や考察の不足、間違いの指摘などを行うことが主な目的です。決して、「数字と単位の間にはスペースを入れるように」なんて下らない指摘をするために時間を浪費するためのものではありません。

    • ただしいのだが怖えよ

執筆中・添削時に便利なパッケージ

コマンドを検索する

自前でコマンドを定義するには

\NewDocumentCommand を使うのがよい

  • latex における昔ながらのやり方として newcommand があるが、NewDocumentCommand の方が高度なコマンドを作りやすいのでこちらで覚えてしまった方がよい
  • 書式は \NewDocumentCommand\命令名{引数仕様: s m o O{default}など}{命令内容}
  • より詳しくは この記事 を参照

数字・数式

Must read

工学系の卒論生のための数式記述入門 はとりあえず読む。
ここに書いていないことだと、

記法を検索する

  • arXiv に上がっている論文はだいたいソースコードを読めるので、出力を真似したい場合に便利
  • VLM に画像を投げる
    • これが一番楽かもしれない

下付・上付文字に言葉を書くのは避ける

とかのこと。できるだけ避ける。しかし最近の論文ではありがち( など)。

  • これを避けるための工夫として、バー・ハット・1 文字のシンボルで表す(頭文字など、直感的にわかるものであり、かつ被らないものを考える)などが考えられる。
    • 上の例では など
  • それらが難しく、英単語を使わなければならない場合でも、そのような言葉はローマン体にするべき。
    • 例えば上の pred とか adv は、\mathrm{} を使って , のようにするほうがマシ
    • 数式における基本ルールは「変数は イタリック体、それ以外の文字はローマン体」である

単位付き数字は 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 自体による数字のパースをオフにする

ほかにも多くの機能がある。例えば、表の type (r とか l とか c とか書くところ) に S と書くことで、その column に書かれたものを \num の引数として解釈し、さらに小数点をそろえることができる。
詳しくは ユーザーマニュアル を読む。

独立行数式も文章の一部

なので、数式で文を終わるときにはピリオドをつける。
その際には、ピリオドの前に適宜 \, などでスペースをいれる。数式の直後にピリオドをつけると空白が狭すぎて不自然になることがあるので

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 の前はニョロ空白にする。これは通常の空白と大きさは同じだが、改行を許可しない。

Dr. Mr. Mrs. e.g., i.e., の後など、つながりの強い語の間も改行しないほうがいいとされているので、 Dr.~Strange のようにニョロ空白にする。

センテンス間のスペースに注意

LaTeX 美文書

英小文字に . ! ? : のようなピリオド類(および,もしかしたら閉じ括弧類)が続くと,その直後のスペースはセンテンス間のスペースだと判断され,少し幅が広くなります。

  • ピリオド類が来ても文末としたくない場合は、スペースの前に \ をつける
    • 例: Conf.\ Comput.\ Vis.\ Pattern Recog.
  • 逆に大文字で文が終わる場合は、 I watch TV\@. のようにする
  • この機能は \frenchspacing で無効化できる(もちろん論文のフォーマットが決まっているときには勝手に無効化してはならない)

参考文献

Must read

.bib ファイルの入力

Google Scholar/論文誌/論文のプロジェクトページが提供している bibtex をコピーしてくれば大きな間違いは起きていないはず。とりあえず全部コピーしてきた上で、以下の要素を確認

文献の種類が合っているか

CV 分野の論文は大体この 3 つの中に収まるはず

必須欄が埋まっているか

@inproceedings, @article に関して、以下の要素が埋まっていなければ論文誌のページを見るなどして埋める。

  • 必須項目: title, author, year

  • さらに、@inproceedings では booktitle@article では journal が必須

    • CVPR などの bibtex フォーマットでは、@String(CVPR= {IEEE Conf. Comput. Vis. Pattern Recog.}) のように定義されているはずなのでそれに置き換える
  • 必須ではないがあるべきもの: 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 に聞く

User Input

この bib ファイルに何か問題がある場合は教えて。フォーマット自体に問題があるのはどうでもよくて、出力がおかしくなるような問題、例えば、タイトルがちゃんと大文字にできていないとか、ある論文と別の論文が同じ論文誌なのに別の表示をされてしまう可能性があるとか、そういうヒューマンエラー的なものを検出してほしい。論文がたくさんあるから時間がかかると思うけど、1 つずつ丁寧に確認して

黒魔術

\vspace{-1\baselineskip}
{\small text}