レッスン 10

amsmathのさらなるアライメント環境

amsmathにはメインレッスンで紹介したalign*環境以外にも多数のディスプレイ数式環境を提供しています。そうした環境のうち、主なものとしてはアライメントが不要な複数行に渡るディスプレイ数式用のgather環境や、長い単一の数式を複数行に切り分ける(最初の行を左に、最後の行を右にアライメントする)ためのmultline環境があります。すべての環境について、*を付けるとデフォルトで数式番号の付与が省略されます。

\RequirePackage{plautopatch}
\documentclass[dvipdfmx]{jlreq}
\usepackage{amsmath}

\begin{document}

Gather環境
\begin{gather}
  P(x)=ax^{5}+bx^{4}+cx^{3}+dx^{2}+ex +f\\
  x^2+x=10
\end{gather}

Multline環境
\begin{multline*}
   (a+b+c+d)x^{5}+(b+c+d+e)x^{4} \\
    +(c+d+e+f)x^{3}+(d+e+f+a)x^{2}+(e+f+a+b)x\\
    + (f+a+b+c)
\end{multline*}
\end{document}

数式アライメントのカラム

amsmathのアライメント環境はカラムのペアを受け取って、それぞれの最初のカラムを右側に、2つ目のカラムを左側にアライメントするように設計されています。このため複数の数式を並べる際に、関係演算子を基準としてアライメントすることが可能です。

\RequirePackage{plautopatch}
\documentclass[dvipdfmx]{jlreq}
\usepackage{amsmath}
\begin{document}
アライメントされた数式たち
\begin{align*}
a &= b+1   &  c &= d+2  &  e &= f+3   \\
r &= s^{2} &  t &=u^{3} &  v &= w^{4}
\end{align*}

\end{document}

さらに、アライメントを行うディスプレイ数式環境にはedで終わるバリエーションもあります。これらはより大きなディスプレイ数式の中に入れて使用することができます。例えばalignedgatheredはそれぞれaligngatherの変種です。

\RequirePackage{plautopatch}
\documentclass[dvipdfmx]{jlreq}
\usepackage{amsmath}
\begin{document}
Aligned環境
\[
\left.\begin{aligned}
a&=b\\
c&=d
\end{aligned}\right\}
\Longrightarrow
\left\{\begin{aligned}
b&=a\\
d&=c
\end{aligned}\right.
\]
\end{document}

alignedtabularのものと似た位置指定を行うオプション引数を取ることができます。これはインライン数式を先頭行にアライメントするような場合に便利です。以下のコード例の2項目を比較してみてください。

\RequirePackage{plautopatch}
\documentclass[dvipdfmx]{jlreq}
\usepackage{amsmath}
\begin{document}
\begin{itemize}
\item 
$\begin{aligned}[t]
a&=b\\
c&=d
\end{aligned}$
\item 
$\begin{aligned}
a&=b\\
c&=d
\end{aligned}$
\end{itemize}
\end{document}

ボールド体の数式

LaTeX標準では数式内の記号をボールド体にする方法は2つあります。数式全体をボールド体にする場合は\boldmathコマンドをその数式の記述に入る前に宣言します。また\mathbfコマンドを使用すると独立の文字や単語を立体かつボールドなローマン体にすることができます。

\RequirePackage{plautopatch}
\documentclass[dvipdfmx]{jlreq}

\begin{document}


$(x+y)(x-y)=x^{2}-y^{2}$

{\boldmath $(x+y)(x-y)=x^{2}-y^{2}$ $\pi r^2$}

$(x+\mathbf{y})(x-\mathbf{y})=x^{2}-{\mathbf{y}}^{2}$
$\mathbf{\pi} r^2$ % \mathbfの誤った使い方
\end{document}

通常の太さの数式の中で太字の記号(\boldmath宣言時に出力されるもの)を使用したい場合にはbmパッケージが提供する\bmコマンドを用いることができます。\bmコマンドは=のような記号やギリシャ文字に対しても効果を発揮します(上のコード例では\mathbf\piに対しては効果を発揮していないことに注意してください)。

\RequirePackage{plautopatch}
\documentclass[dvipdfmx]{jlreq}
\usepackage{bm}

\begin{document}

$(x+\mathbf{y})(x-\mathbf{y})=x^{2}-{\mathbf{y}}^{2}$

$(x+\bm{y})(x-\bm{y}) \bm{=} x^{2}-{\bm{y}}^{2}$

$\alpha + \bm{\alpha} < \beta + \bm{\beta}$

\end{document}

Mathtools

mathtoolsパッケージは内部でamsmathパッケージを読み込んで多くの追加機能を提供します。一例を挙げると、amsmathの行列用の環境に各カラムのアライメントを指定するオプションを追加します。

\RequirePackage{plautopatch}
\documentclass[dvipdfmx]{jlreq}
\usepackage{mathtools}

\begin{document}

\[
\begin{pmatrix*}[r]
  10&11\\
   1&2\\
  -5&-6
\end{pmatrix*}
\]

\end{document}

数式のUnicode入力

レッスン14で扱うように、現代ではOpenTypeフォントを扱う拡張TeXエンジンが存在します。そうしたエンジンでも、デフォルトでは数式フォントについては古典的なTeXの数式フォントを使用します。unicode-mathパッケージを使用するとOpenTypeの数式フォントを利用することができます。このパッケージの詳細はこのチュートリアルの範囲を超えてしまうので、パッケージ文書を参照してください。ここでは小さなコード例を示すに留めます。

% !TEX program=lualatex
\documentclass{jlreq} % LuaLaTeX使用時はdvipdfmxは指定しない
\usepackage{unicode-math}
\setmainfont{TeX Gyre Pagella}
\setmathfont{TeX Gyre Pagella Math}

\begin{document}

いち、に、さん
\[
\log \alpha + \log \beta = \log(\alpha\beta)
\]

Unicodeの数学用英数字記号(Math Alphanumerics)
\[A + \symfrak{A}+\symbf{A}+ \symcal{A} + \symscr{A}+ \symbb{A}\]

\end{document}