LaTeX

卒論を LaTeX で書こう!

本記事は、U-TOKYO AP Advent Calendar 2017 の19日目です。
続編はこちら

目次
- 概要
- ローマン体とイタリック体: JIS に基づいた数式の書き方
- スペースの制御
続編の目次(参考)
-括弧
-行列
-スペースとハイフンについて

概要

計数工学科1の4年生が卒業論文の執筆にとりかかる時期になりました。
計数工学科では、卒論の書き方について、杉原 (2001, 第6章) に基づいた指導が行われています。
そこで、本記事では、学術論文の書き方に関連した $\rm\LaTeX$ tips を紹介します2

おことわり

本記事では、$\rm\LaTeX$ 文書の基本的な書き方は知っているものとして話を進めていきます。論文執筆で使えるコマンドを紹介していきますが、普段から $\rm\LaTeX$ で文書を作っている人にとっては基本的なコマンドを説明している箇所もあります。
主に数式モード中でのコマンドを紹介します。全体を通して必要なパッケージは amsmath です。他のパッケージが必要なコマンドはその都度説明します。
また、論文の書き方は分野や雑誌によって様々ですので、執筆する際にはまず投稿先の規定を確認してください。

お詫び
遅筆のため、一つ目のトピック「ローマン体とイタリック体: JIS に基づいた数式の書き方」のみをひとまず公開します。(2017/12/19)
二つ目のトピック「スペースの制御」を公開します。(2017/12/22)

ローマン体とイタリック体: JIS に基づいた数式の書き方

数理系の論文には

F(\omega) = \int_{-\infty}^{\infty} f(t) \exp(-\mathrm{i} \omega t)\, \mathrm{d} t \qquad \cdots (1)

といった数式が出てきます。
これを $\rm\LaTeX$ で打ってみましょう。\[ F(\omega) = \int_{-\infty}^{\infty} f(t) exp(-i \omega t) dt \] と打ってコンパイルすれば、

F(\omega) = \int_{-\infty}^{\infty} f(t) exp(-i \omega t) dt \qquad \cdots (2)

となるはずです3
最初の式(1)と見比べてみましょう。少し見ためが違っていますね。式(1)では、 exp や i, d t の d がまっすぐのローマン体になっています。
このように、(手書きではなく)印刷物に書かれる数式では、一部の文字を立てて書く決まりが JIS(日本工業規格)の中にあります。JIS Z 8201-1981「数学記号」(リンク: JIS検索 中の「JIS規格番号からJISを検索」の検索窓に「Z8201」と打って検索してください4。)に、

5. 印刷上の注意
印刷する場合の字体は,次のようにする。
(1) 数値が一般的に定められている定数の記号は,原則として立体とする。
(2) 演算の記号は,原則として立体とする。
(3) 変数の記号は,斜体とする。

とあります。手書きでは気にする必要の無いことですが、印刷する場合は、読みやすくするためにこれらの注意事項を守ると良いでしょう。
以下、スペース節約のため、ローマン体(アップライト体とも言います。)を立体、イタリック体を斜体と書きます。

変数の記号を斜体にする

まず(3)ですが、$\rm\LaTeX$ の数式モード中ではラテン文字を自動的に斜体にしてくれます。例えば、$f(x)$ と打てば $f(x)$ となります5
逆に、数式モード中に立体で表示したいときには \mathrm を使います。

  • $a b c$, $A B C$

    $a b c$, $A B C$

  • $\mathrm{a} \mathrm{b} \mathrm{c}$, $\mathrm{A} \mathrm{B} \mathrm{C}$

    $\mathrm{a} \mathrm{b} \mathrm{c}$, $\mathrm{A} \mathrm{B} \mathrm{C}$

以下、数式モードにするためのドル記号 $ は省略します。

ギリシャ文字について

数式モード中ではギリシャ文字のコマンドが使えます。

  • \alpha, \beta, \gamma

$\alpha$ $\beta$ $\gamma$

大文字もありますが、一つ注意しなければならないのは、デフォルトでは立体になっているということです。コマンドの始めに var を付け足すと、斜体のギリシャ文字大文字が表示できます。

  • \Gamma, \varGamma; \Delta, \varDelta

$\Gamma$, $\varGamma$; $\Delta$, $\varDelta$

ギリシャ文字のうちいくつかは大文字がラテンアルファベットと同じ形です。その場合、大文字のコマンドはありません。例えば、$\alpha$ の大文字は $A$ なので、単に $A$ と打てば OK です。

やわらかいファイ

数年前ですが、電磁気学の講義で先生が $\varphi$ を($\phi$ と区別して)「やわらかいファイ」と呼んでいました。$\rm\LaTeX$ には両者に対応するコマンドが用意されていて、$\phi$ が \phi, $\varphi$ が \varphi です。このように、一部のギリシャ文字小文字には変体が用意されています。\varepsilon, \vartheta, \varpi, \varrho, \varsigma, \varphi と打つと、それぞれ

\begin{align}
\varepsilon && \vartheta && \varpi && \varrho && \varsigma && \varphi
\end{align}

になります。

注意 両方のコマンドがあるからと言って、一つの論文中に var の付かないギリシャ文字と付くものを混在させるのはやめましょう。

演算の記号を立体にする

次に(2)です。
何も気にせずに sin x と打つと、$sin x$ と表示されます。普段は意識して見ていないかもしれませんが、斜体の 'sin' は滅多に見かけないと思います。ふつう見るのは $\sin x$ ですよね。
広く使われている関数や演算子の記号は立体にするのが原則です。よく使われる関数記号にはコマンドが用意されていて、
\sin x と打てば $\sin x$ になります。(ちなみに、 $\rm\LaTeX$ では原則としてスペースは無視されるので、最初の $sinx$ は $s \times i \times n \times x$ という意味になってしまいます。)
使いたい記号が用意されているかは、試しにコマンドを打ってみるのが一番早いです。もし打ったコマンドが存在しなくても、「(使いたい記号の名前) tex」で Google 検索すれば大抵の場合は見つかります。
微分の d も JIS に従うと6立体にする必要があります。例えば、$\frac{\mathrm{d}}{\mathrm{d}t} f \left( x \right)$ です。

ここまでのまとめです。

  • 悪い例:

$\DeclareMathOperator*{\itlim}{\mathit{lim}} \displaystyle \mu_x = \itlim_{\varDelta t \to 0}{\frac{l_x - l_{x + \varDelta t}}{l_x \varDelta t}} = -\frac{1}{l_x} \frac{d l_x}{dx} = -\frac{d \left(log\, l_x \right)}{dx}$

  • 良い例:

    \mu_x
    = \lim_{\Delta t \to 0} \frac{l_x - l_{x + \Delta t}}{l_x \Delta t}
    = -\frac{1}{l_x} \frac{\mathrm{d} l_x}{\mathrm{d}x}
    = -\frac{\mathrm{d} \left( \log l_x \right)}{\mathrm{d}x}

$\displaystyle \mu_x = \lim_{\Delta t \to 0} \frac{l_x - l_{x + \Delta t}}{l_x \Delta t} = -\frac{1}{l_x} \frac{\mathrm{d} l_x}{\mathrm{d}x} = -\frac{\mathrm{d} \left( \log l_x \right)}{\mathrm{d}x}$

本節のここから先(「*」の付いている小節・小々節)はかなりマニアックなことを書いているので読み飛ばして、次の節: スペースの制御に進んでも構いません。

演算の記号を自作する*

それでは、コマンドが無いときにはどうすれば良いのでしょうか。
コマンドが無いなら自分で作ってしまいましょう。\DeclareMathOperator で数学記号のコマンドを作ることができます。例えば、プリアンブルに \DeclareMathOperator{\grad}{\mathrm{grad}} と書いておいて、\grad と打つと $\DeclareMathOperator{\grad}{\mathrm{grad}}\grad$ が出せます。
これだけだとあんまり御利益が感じられないのですが、実は、\DeclareMathOperator で作った数学記号には、総和の記号 $\displaystyle\sum_{i=1}^n$ のように、(別行立てのときに)添字を上下に付けることができます。ただし、\DeclareMathOperator の後に * を挿入してください。例えば、\DeclareMathOperator*{\MO}{\mathrm{MathOperator}} として、 \MO_{i=1}^{\infty} と打てば $\DeclareMathOperator*{\MO}{\mathrm{MathOperator}}\MO_{i=1}^{\infty}$と表示されます。

定数の記号を立体にする*

最後に(1)です。これが厄介です。
式中に定数を表す文字が登場することがあります。例えば、円周率 π, 自然対数の底 e などです。
JIS によると6、定数の記号は立体にします。自然対数の底 e は約2.718と値の決まった定数ですから、単に e ($e$) と書くのではなく、\mathrm{e} ($\mathrm{e}$) とする必要があります。虚数単位 i(又は j)も同様に \mathrm{i} ($\mathrm{i}$), \mathrm{j} ($\mathrm{j}$) としなければなりません7

πを立てる*

円周率 π も立ててみましょう8
いくつかの方法がありますが、ここでは簡単な upgreek パッケージを使う方法を紹介します。
プリアンブルに \usepackage{upgreek} と書いて \uppi とするだけです。これで立体の π が表示されます。他のギリシャ文字についても、同様にコマンドの始めに up を挿入すれば OK です。
※記事中ではパッケージが使えないので、どのように表示されるかは載せていません。

∂も立てる*

ルール(2)によれば、偏微分記号 ∂ も立てた方が良いかもしれません。
こちらもさまざまな方法がありますが、Kp-Fonts パッケージを使う方法を挙げておきます。プリアンブルに \usepackage[partialup]{kpfonts} と書いておけば、\partial が自動的に立体になります9
ただし、この方法を使うと、数式中の欧文フォントがすべて変更されてしまいます。∂ だけを立てたい場合は、Stack Exchange のこちらを参照してください。

結局どうすればいいのか*

上記 JIS のルールだけだと判断に迷うケースも出てきます。投稿規定を確認するのが第一ですが、決まりがないときには自分で判断しなければなりません。そこで、ここまで扱ってきた JIS の方法以外の、立体にするか斜体にするか決める方法を紹介してこの節はおしまいにしましょう。(括弧の中は、各ルールに従った場合の表記例です。)

  • 1文字なら斜体 ( $f(x)$, $\varGamma(x)$), 複数文字なら立体($\sin x$)
  • 略語は立体 ($\sin$ (sine), $\exp$ (exponential), $\gcd(a, b)$ (greatest common divisor))10
  • 固有名詞的なものは立体、一般的なものは斜体 ( $f(x)$, $\exp x$, $\mathrm{E}[X] = \int_{\varOmega} X(\omega)\, dP(\omega)$)

それでも決められない*

微分の d は JIS によれば6立体 ($\mathrm{d}$) にする必要がありますが、積分 $\int f\, d\mu$ の d は演算子であるとは言えないのでどっちにするか迷います。TeX Wiki の 表記の哲学 でも別ページに分けて議論されるほど(闇が)深い話題です。

スペースの制御

数式をポチポチ打ってコンパイルしてみると、「こことここの間にもうちょっと隙間がほしいなあ」となることがあると思います。例えば、

\int_{-\pi}^{\pi} \sin x \mathrm{d}x = 0 \qquad \cdots (3)

という式は、 $\sin x$ の '$x$' と $\mathrm{d}x$ がくっついており、$\sin (x\mathrm{d}x)$ であるかのように見えます。

\int_{-\pi}^{\pi} \sin x\, \mathrm{d}x = 0 \qquad \cdots (4)

というように、$x$ と $\mathrm{d}x$ の間に隙間を入れることで、式が見やすくなります。
そこで、本節では、スペースの調整方法について説明します。

スペースのコマンド

数式中にスペースを挿入するコマンドを列挙します。

  • \, \quad, \,, \>, \;, \qquad
  • 負のスペース \!
  • \hspace, \hphantom

以下、各コマンドについて説明していきます。

スペースを挿入する

まず、半角スペースに相当するのが \␣(バックスラッシュの後に半角スペース)、全角スペースに相当するのが \quad です。\,, \>, \;, \qquad は、それぞれ \quad の 3/18 倍、4/18 倍、5/18 倍、2 倍です。つまり、スペースの大きさの順に並べると、

\begin{align}
 \text{\,} & < \text{\>} < \text{\;} < \text{\quad} < \text{\qquad}, & \text{\␣} & \fallingdotseq \text{\>}
\end{align}

です。式(4)の $\sin x\, \mathrm{d}x$ の $x$ と $\mathrm{d}$ の間には \, が挿入されています11

スペースを減らす

次に \! ですが、これは不要なスペースを削るときに使います。\!\quad の -1/6 倍のスペースを挿入します。
\int_{-\infty}^{\infty} \mathrm{d}x\int_{-\infty}^{\infty} \!\!\! \mathrm{d}y を比べてみます。

\int_{-\infty}^{\infty} \mathrm{d}x \int_{-\infty}^{\infty} \!\!\! \mathrm{d}y\, \frac{1}{2 \pi} \exp \left(\frac{x^2 + y^2}{2} \right) = 1

余談ですが、積分範囲を書かない場合は、\iint ($\iint$) 等のコマンドが予め用意されていますので、そちらを使いましょう。

特定の幅のスペースを作る

\hspace は、引数の長さ(横幅)のスペースを作るコマンドです。使える単位には、pt や cm, mm 等があります。

$a b$(上)、$a \hspace{10pt} b$(下)

$a b$
$a \hspace{10pt} b$

\hspace{-10pt} のようにすれば負のスペースを入れられます。また、縦にスペースを入れるには \vspace を使います。

\hphantom は、引数の文字列と同じ幅のスペースを作るコマンドです。\hspace は引数に長さ(10pt など)を取るのに対して、\hphantom はある文字と同じ分だけスペースを空けたいときに使います。

$A^{x y z}_{x y z}$, $A^{x \hphantom{y} z}_{\hphantom{x} y \hphantom{z}}$

\begin{align}
A^{x y z}_{x y z} && A^{x \hphantom{y} z}_{\hphantom{x} y \hphantom{z}}
\end{align}

縦にスペースを入れたい(特定の高さを確保したい)場合は vphantom を使います。

上段: \sqrt{g}, \sqrt{h}, \sqrt{g h}
下段: \sqrt{g \vphantom{h}}, \sqrt{\vphantom{g} h}, \sqrt{g h}

\begin{align}
\sqrt{g} && \sqrt{h} && \sqrt{g h} \\
\sqrt{g \vphantom{h}} && \sqrt{\vphantom{g} h} && \sqrt{g h}
\end{align}

上段では、根号の高さが自動で調節され、全て異なっています。下段では全ての根号の中身に g, h の高さが確保されているため、高さが同じになっています12

参考文献

  • 奥村晴彦・黒木裕介 (2013) 『[改訂第6版]$\rm\LaTeX2_{\varepsilon}$ 美文書作成入門』(技術評論社)
  • 杉原厚吉 (2001) 『どう書くか ―理科系のための論文作法―』 (共立出版)

続編「卒論を LaTeX で書こう!!」はこちら


  1. 東京大学工学部計数工学科。 

  2. 先日の数理演習で言われた注意点を振り返り、その実践方法を紹介します。 

  3. 【基本的な注意1】\[\] で囲まれた部分は別行立て数式になります。 

  4. ただしこれはダウンロードできないので、代わりに丸写しした HTML文書 を見ても良いでしょう。 

  5. 【基本的な注意2】本文中でドル記号「\$」で囲むと数式モードになります。 

  6. 「JIS に従うと」と強調しているのは、筆者が普段読む論文では定数が立体になっていないことの方が多いからです。 

  7. 虚数単位は $\sqrt{-1}$ を使うのも一つの手です。 

  8. 筆者は立体の π を使った本や論文を見たことがないので、これはやらなくていいとは思いますが、JIS Z 8201 を読むと、5(1)の例として、驚くべきことに π が挙げられています! 

  9. オプション ([partialup]) 無しでパッケージを入れると、\partial は斜体の、\partialup は立体の偏微分記号になります。 

  10. オーダー記法の Landau の記号 O 等もこれによれば立体にします。 

  11. \sin($\sin$) や \log($\log$) のような演算記号コマンドの前後には、デフォルトで適切なスペースが入るので基本的には自分でスペースを挿入する必要はありません。 

  12. コマンドの使用例として根号の中に \vphantom を入れましたが、論文執筆時に根号や括弧の高さを揃えなければならないという訳ではないです。