本文へ移動
EasyLaTeXDocs

定理・証明と高度な数式

amsthm で定理・補題・定義の環境を定義し、proof で証明を組版します。amsmath と amssymb は、よく使う演算子、集合用の書体、数学記号を提供します。

EasyLaTeX のコンパイラー設定:LuaLaTeX + ltjsarticle。amsmath、amsthm、amssymb を読み込みます。

定理環境を定義する

プリアンブルで \newtheorem を使って環境を宣言します。次の例では節ごとに番号を付け、「定理 1.1」のように表示します。

latex
\usepackage{amsthm}
\renewcommand{\proofname}{証明}

\newtheorem{theorem}{定理}[section]
\newtheorem{lemma}[theorem]{補題}
\theoremstyle{definition}
\newtheorem{definition}[theorem]{定義}

[section] は \section ごとに番号をリセットし、[theorem] は補題や定義で定理と同じ番号列を共有する指定です。文書の要件に合わせて一貫した方式を選び、途中で不用意に混在させないでください。

定理・補題・定義

宣言後は本文で対応する環境を使います。

latex
\begin{theorem}[三平方の定理]
直角三角形では、直角を挟む2辺の平方の和は斜辺の平方に等しい。
\end{theorem}

\begin{definition}
集合 \(A\) の要素数が有限なら、 \(A\) を有限集合と呼びます。
\end{definition}

角括弧内の定理名は省略可能です。amsthm の definition スタイルは通常、本文を立体で表示し、定義・例・注意書きに適しています。

証明環境

amsthm の proof 環境は、末尾に証明終了記号を自動で追加します。

latex
\begin{proof}
仮定より \(a=b\) の両辺に \(c\) を加えると \(a+c=b+c\)。
\end{proof}

証明が別行立ての数式で終わる場合、記号を数式内に明示的に置くことがあります。

latex
\begin{proof}
\[
  (a+b)^2 = a^2 + 2ab + b^2. \qedhere
\]
\end{proof}

\qedhere を使うと、記号を別の行に送らず数式の行末に配置できます。

よく使う演算子と集合

演算子名を斜体の文字列として入力せず、組み込みのコマンドを使います。

latex
\[
  \sin x + \log y = \lim_{n \to \infty} a_n.
\]

標準的な数の集合には \mathbb を使えます。

latex
\[
  \mathbb{N} \subset \mathbb{Z} \subset \mathbb{Q} \subset \mathbb{R} \subset \mathbb{C}.
\]

\mathbb は amssymb で利用できます。確率・期待値・階数など、表記が一意に定まらない概念は、初出時に意味を定義してください。

独自の演算子

繰り返し使う複数文字の演算子は、プリアンブルで \DeclareMathOperator により定義します。

latex
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator*{\argmax}{arg\,max}

星付きの形式では、別行立ての数式で添字が演算子の真下・真上に配置されます。

latex
\[
  \argmax_{x \in \mathbb{R}} f(x).
\]

\mathrm{rank} を繰り返して演算子を代用しないでください。本来の演算子とは空きや添字の配置が異なります。

よくある問題

環境が未定義になる

Environment theorem undefined や Environment proof undefined が出たら、プリアンブルで \usepackage{amsthm} を読み込み、本文の開始前に \newtheorem を宣言しているか確認します。

定理の見出しがテンプレートに合わない

大学や出版社のテンプレートと標準出力を比較してください。テンプレートに定理環境がある場合は同名で再定義せず、既存の名前と番号規則を使います。日本語の見出し名も例のように明示できます。

\mathbb が未定義になる

\usepackage{amssymb} を読み込みます。記号やコマンドが未定義の場合は、未知の設定をまとめてコピーせず、提供元のパッケージを調べてください。

完全な例

latex
\documentclass[a4paper,12pt]{ltjsarticle}
\usepackage{amsmath}
\usepackage{amsthm}
\renewcommand{\proofname}{証明}
\usepackage{amssymb}

\newtheorem{theorem}{定理}[section]
\theoremstyle{definition}
\newtheorem{definition}[theorem]{定義}
\DeclareMathOperator{\rank}{rank}

\begin{document}

\section{例}

\begin{definition}
もし \(A \subseteq \mathbb{R}\) なら、 \(A\) は実数の集合の部分集合です。
\end{definition}

\begin{theorem}
任意の実数 \(a\) と \(b\) について、 \((a+b)^2=a^2+2ab+b^2\)。
\end{theorem}

\begin{proof}
展開すると \((a+b)(a+b)\) より
\[
  (a+b)^2 = a^2 + 2ab + b^2. \qedhere
\]
\end{proof}

\end{document}