PR

【LaTeX】数式番号に関するあれこれ

LaTeX
記事内に広告が含まれています。

\LaTeX における,別行立て数式環境の「数式番号」に関して,その基本的な知識やテクニックを紹介します。

本記事では amsmath パッケージを読み込んでいることは前提とし,さらに随所で mathtools パッケージも用います。プリアンブルに以下のように記述しておくとよいでしょう。

\usepackage{amsmath}
\usepackage{mathtools}

mathtools は,内部で amsmath を読み込むため,2行目があれば実は1行目はなくてもよいですが,可読性のため,記述しておくとよいでしょう。

  • 出力するか否かと出力位置について
  • 出力形式について

を分けて解説します。

数式番号の出力とその位置について

まずは数式番号の位置について扱います。

そもそも数式番号を出力するには

そもそも数式番号を出力するには,どうすればよいかについて,記述しておきましょう。これは,別行立て数式環境のうち,* がつかないものを使用すればよいです。

番号あり数式環境番号なし数式環境説明
equationequation*1行の別行立て数式
alignalign*位置合わせ可能の別行立て数式
alignatalignat*スペースの入らない位置合わせ可能の別行立て数式
flalignflalign*両端揃えによる位置合わせ可能の別行立て数式
gathergather*中央揃え可能の別行立て数式
multline (綴りに注意)multline*1つの数式を複数行に配置

関連記事:【LaTeX】数式環境まとめ【amsmath】

参照するところのみ番号を出力し,それ以外は消す方法

本文中の別の場所で参照する数式のみに自動で番号を振り,そうでない数式には番号を振りたくない場面があるでしょう。そんなとき,わざわざ手動でやる必要はありません。

これは,mathtools パッケージを用いて,プリアンブルに

\mathtoolsset{showonlyrefs=true}

のようにすればよいです。これで,\begin{equation} ... \end{equation}\begin{align} ... \end{align} などの環境において,参照部以外で番号を振らないようにできます。

なお,途中で切り替えることも可能です。その度に本文中に

\mathtoolsset{showonlyrefs=false}

などと書けばよいです。

なお,数式を参照するには,まず数式に \label{} で名前を付け,その名前を \eqref{} で参照します。これについては,後で解説します。

注意ですが,これは cleveref パッケージとは一緒に使うことができません。このパッケージを使いつつ,今回のようなことをしたい場合は,autonum パッケージを用います。今回は,これらのパッケージについては解説しません。

また,このコマンドを用いると,数式が横に長い際に働くはずの,数式番号の位置自動調整機能が働かなくなるバグがあります。今のところ,一つ一つ目で確認し,数式が横長でないかの確認をするほかありません。

notagコマンドで一部のみ番号を消す

ほんの一部の番号を消したい場合は,その行に \notag コマンドを用います。

\begin{align}
  f(x) &= \sin x  \\
  g(x) &= \cos (-x) \notag \\
  h(x) &= \tan(1/x)
\end{align}
notagによる出力例

このように,\notag を指定した行は番号が消えます。

1つの数式が複数行にわたるとき

1つの数式が複数行にわたるとき,たとえば数式番号が

\begin{align} f(x) &=\frac{1}{2\pi} \int_0^\infty \frac{e^{-x}}{\sqrt{1+x^2+x^4}}\, dx \\ &\qquad \times \sum_{n=1}^\infty \frac{e^x \cos x}{1+x^2+2x^4} f_n(x) \end{align}


のようになっているのであれば,そもそも使う数式環境を間違えています(上は誤って align 環境を使いました)。

このようなときは,

\begin{equation}
  \begin{split} % alignedでもOK
    <contents>
  \end{split}   % alignedでもOK
\end{equation}

や,\begin{multline} ~~~ \end{multline} 環境の使用を検討すべきです。すると

\begin{equation} \begin{aligned} f(x) &=\frac{1}{2\pi} \int_0^\infty \frac{e^{-x}}{\sqrt{1+x^2+x^4}}\, dx \\ &\qquad \times \sum_{n=1}^\infty \frac{e^x \cos x}{1+x^2+2x^4} f_n(x) \end{aligned}\end{equation}


のように,正しく数式番号が付くはずです。

数式番号を左側にする

番号は,デフォルトでは右側につきます。これを左側にしたい場合は,最初のドキュメントクラスのオプションに

\documentclass[leqno]{jsarticle}

などと,leqno を指定すればよいです。これで,全ての数式番号が左側になります。

raisetagコマンドによる位置の微調整

数式が長すぎるなどで,数式番号の位置がうまく出力できない場合は,\raisetag{} コマンドで調整できます。たとえば,\raisetag{6pt} とかけば,6pt 上にできます。負の値を指定すれば,下にすることも可能です。

ただし,これはあくまで番号の位置が変わっている場合に使うものですから,もともとちゃんとした位置に出力されている場合は,本コマンドは無効です。

数式番号の形式について

つづいて,数式番号の形式を変える方法を紹介します。

(2.3)のように,セクション番号も出力する方法

デフォルトでは,数式番号は (1), (2) のようにつきます。これを,セクション番号を追加して (1.1), (1.2) のようにしたい場合は,プリアンブルに

\numberwithin{equation}{section}

と書けばよいです。サブセクション番号まで入れたい場合は,section の部分を subsection に変え,本の場合は chapter にしてもよいでしょう。

番号の形式をもっと細かく指定したい場合は,

\renewcommand{\theequation}{\thesection.\arabic{equation}}
\makeatletter
\@addtoreset{equation}{section}
\makeatother

のような感じにします。前半部分のかき方を変えると,スタイルを変えることが可能です。後半は,セクションが変わると,式番号もリセットする命令です。

tagで個別に番号の形式を指定する

\tag{} コマンドで,独自のタグを作ることができます。

\begin{equation}
  S = \sum_{n=1}^\infty a_n \tag{foo}
\end{equation}
\begin{equation} S = \sum_{n=1}^\infty a_n \tag{foo} \end{equation}
\begin{equation}
  S = \sum_{n=1}^\infty a_n \tag*{foo}
\end{equation}
\begin{equation} S = \sum_{n=1}^\infty a_n \tag*{foo} \end{equation}

\tag*{} とすると,括弧で囲われません。このとき,参照する際に \eqref{} を用いると,括弧で囲われてしまいますから,代わりに mathtools パッケージで定義されている \refeq{} を用いてください。

subequations環境により小番号をつける

\begin{subequations} ... \end{subequations} としてから,その中で数式環境を用いると,番号のつけ方を変えることができます。subequation 環境自体は数式環境ではなく,あくまでいくつかの数式環境をグルーピングするものです。とにかく例を見てみましょう。

\begin{equation}
  f(x,y)=5x+5y
\end{equation}
とし,$m,n$を整数とする.

\begin{subequations}
  \begin{align}
    f(m,n) &= 5m+5n \\
           &= 5(m+n).
  \end{align}
  よって,ある整数$k$が存在して,
  \begin{equation}
    f(m,n)=5k.
  \end{equation}
\end{subequations}
subequations環境による出力結果の例

出力は,上のセクション番号も出力する方法を用いて, (1.1) のようになっているとします。subequations 環境に囲まれた部分の,数式番号の付き方が変わっているのが分かりますね。

newtagformによる新しいタグ形式を指定

mathtools パッケージで定義されている,

\newtagform{<name>}[<inner_format>]{<left>}{<right>}
\usetagform{<name>}

を用いることで,数式番号の括弧などの形式を変えることができます。以下に例を挙げましょう。

\newtagform{bbracket}[\textbf]{[}{]}
\usetagform{bbracket}
\begin{equation}
  E = m c^2
\end{equation}
newtagformコマンドによって番号の形式を変えた出力例

出力形式には,あらかじめ上で解説した「セクション番号も出力する」命令が施されているとします。

番号を途中から変える

本文中で,

\setcounter{equation}{0}

などとすると,数式番号を途中から変えることができます。上の場合,数式番号をリセットしたことになっています。

数式の参照方法

数式の参照方法をまとめておきましょう。数式を参照する際は,まず \label{} コマンドで数式に名前を定義し,それから参照したい場所で,\eqref{} コマンドを使用します。数式番号に括弧をつけずに参照したい場合は mathtools パッケージの \refeq{} コマンドを用います。

LaTeXには,標準で \ref{} コマンドもありますが,数式には用いる必要はないでしょう。\eqref{}, \refeq{} の方が,斜体(イタリック体)の補正があって便利です。

正しく参照番号を出力するためには,複数回実行する必要があります。

例を挙げましょう。

\begin{equation}
  f(x) = \lim_{x\to\infty} \int_0^x g(t)\,dt \label{eq:f-inf}
\end{equation}
である。\eqref{eq:f-inf}式はすなわち,〇〇を意味する。
eqrefコマンドによる参照例

なお,cleveref パッケージを使う方法もありますが,今回は解説しません。

関連する記事

参考

  1. amsmath – AMS mathematical facilities for LATEX
  2. mathtools – Mathematical tools to use with amsmath