amsmath とmathtools のパッケージオプション
amsmath とmathtools を使う際に,数式に対していくつかのオプションを課すことが出来る.把握しておこう.
! amsmath パッケージのオプション
■ オプションの使い方
これらのパッケージオプションのいずれかを使用するには,\usepackage
コマンドのオプション引数を入れる.以下のようにして,オプション名を入れる.
\usepackage[intlimits]{amsmath}
AMS ドキュメントクラスと,amsmath が読み込まれているクラスでは,必要なオプションは\documentclass
に以下のように特定する.
\documentclass[intlimits,tbtags,reqno]{amsart}
jscalasses やBXjscls などではamsmath を読み込まないので,これらを使用する際には無視してよい.
■ mathtools との併用
cf. The mathtools Package, §2 Package loading
mathtools はamsmath を自動的に読み込むため,以下のようにamsmath のオプションを設定することも可能だ.
\usepackage[fleqn,tbtags]{mathtools}
これは以下と同様である.
\usepackage[fleqn,tbtags]{amsmath}
\usepackage{mathtools}
しかし,他のパッケージも使用することを思えば,明示的に読み込んでおいた方が良いだろう.
○ 式番号の位置
デフォルトでは右側に式番号を置くようになっている.
オプション | 説明 |
---|---|
reqno (デフォルト) |
数式番号を右に置く |
leqno |
数式番号を左に置く |
○ split 環境における式番号の位置
split 環境での式番号の出力場所を指定する.
オプション | 説明 |
---|---|
centertags (デフォルト) |
split 環境に含まれる数式の高さの中央に配置する |
tbtags ("Top-or-bottom tags") |
式番号が右側のときは垂直最下,式番号が左側のときは垂直最上に配置される |
おりたたみにサンプルを置いておく.
○ 数式の配置
オプション | 説明 |
---|---|
fleqn |
数式の配置を文章幅の左右中央ではなく,左から一定の字下げの後で行う |
○ 総和記号 / 積分記号 等の大型演算子
ディスプレイスタイルの数式における総和記号や積分記号などの上限,下限を指定するような記号に対するオプション.
オプション | 積分記号 | 積分以外の記号 |
---|---|---|
sumlimits (デフォルト) |
||
nosumlimits |
||
intlimits |
||
nointlimits (デフォルト) |
nointlimits
とsumlimits
は同一の出力になる.
■ 手動で個々に変更したい
コマンド | 説明 |
---|---|
\limits |
右側から上下に変更する |
\nolimits |
上下から右側に変更する |
% amsmath オプションはsumlimits(デフォルト)
\int\limits_0^\infty, % インテグラルの上下に
\sum\nolimits_X % 総和記号の右側に
■ limits とnolimits を両方同時に利用したい
cf. The amdmath Package, §7.2 The \sideset command
下の図のようにしたい場合には\sideset
を使おう.
\sideset{}{^A}\sum_{i > 0}^N A_i
\sideset
の仕様は以下のようになっている.
\sideset{^1_2}{^3_4}\sum
○ 演算子
amsmath では事前に以下のような演算子が定義されている.
これらは通常,下側に下付き文字を配置する(namelimits 型).これを変更するオプションを紹介する.
ただし,\log
はこのオプションの影響を受けない.
オプション | 演算子 |
---|---|
namelimits (デフォルト) |
|
nonamelimits |
新たにこれらの演算子を定義したい場合には\DeclareMathOperator
を利用する.
一次的に利用したい場合には\operatorname
を利用する.
namelimits 型 | nonamelimits 型 |
---|---|
\DeclareMathOperator* |
\DeclareMathOperator |
\operatorname* |
\operatorname |
nonamelimits 型に定義した場合には\log
と同様にパッケージオプションの影響を受けない.
たとえば,勾配(gradient) を演算子\grad
として定義する場合には以下のようにする.
\DeclareMathOperator*{\grad}{grad}
\grad
を定義せずに利用したい場合には,以下のようにする.
\operatorname*{grad}
○ aligned とgathered 環境
aligned と gathered 環境の左に空白を制御するための3つのオプションが追加された.
新しいデフォルトの振る舞いは,ほとんどの場合,環境に細い空白が追加されないようにすることを目的としている.既存の文章に対しては,\!\begin{aligned}
とすることで,以前と同じような結果になる.
オプション | 説明 |
---|---|
alignedleftspaceyesifneg (デフォルト) |
環境が負の空白で調整されているときに限り\, を入れる |
alignedleftspaceyes |
常に\, を aligned と gathered の左に入れる |
alignedleftspaceno |
\, を aligned と gathered の左に入れない |
2017年以前には,これらの構造の左側には空白が追加されてたが,右側には追加されていなかったようだ.これは実装したときの偶発的な機能であると思われており,通常,環境の先頭に\!
を付けることで逐次修正していたようだ.
! mathtools パッケージのオプション
cf. The mathtools Package, §2.1 Special mathtools Options
amsmath のバグ修正のみのようだ.これらのバグは修正されるべきバグなので,デフォルトのバグ修正を有効にしておいた方が良いと思われる.
以下で,どのようなバグを修正するのかを把握しておこう.
これらのバグは修正されるべきで,修正しないと言う場合は無いだろうという思いから,ムズカシイ名前になっているようだ.
■ amsmath のバグ修正1
cf. LaTeX バグデータベースより.AMS-LaTeX のバグレポート#3591,#3614
-
fixamsmath
(デフォルト) donotfixamsmathbugs
オプションfixamsmath
(デフォルト)は,amsmath の2つのバグを修正する.
この2つのバグは,amsmath をfleqn
, leqno
の2つのオプションを同時に使用すると以下のような結果を得てしまうというものだ.
% In preamble
% \usepackage[leqno,fleqn]{amsmath}
% \usepackage[donotfixamsmathbugs]{mathtools}
\begin{flalign}
a & = b, & c & = d, & e & = g \\
A & = B, & C & = D, & E & = G
\end{flalign}
何らかの理由でこれらのバグを修正したくない場合 (タイプミスなしで実行できる場合) はdonotfixamsmathbugs
オプションを追加する.
■ amsmath のバグ修正2
-
disallowspaces
(デフォルト) allowspaces
以下のようにした場合,次のような結果を得てしまっていた.
% In preamble
% \usepackage{amsmath}
% \usepackage[allowspaces]{mathtools}
\begin{equation}
\begin{gathered}
[p] = 100 \\
[v] = 200
\end{gathered}
\end{equation}
このとき,[p]
は意図せずに消えてしまう.これは,amsmath 内で[p]
を引数だと判断して,[c]
として判断したためである.(引数を付与するとこの現象はなくなる)
このバグ修正は"aligned", "gathered", "multlined", 拡張マトリックス環境に適応される.(あれ? "alignedat" 環境は?)
参考
- amsmathパッケージユーザガイド (Version 2.1) [pdf]
- User’s Guide for the amsmath Package (Version 2.1) [pdf]
- The mathtools package [pdf]
- syntax - How to use limits and nolimits together? - TeX - LaTeX Stack Exchange
追記
- 2020/09/15 : 「limits とnolimits を両方同時に利用したい」を追加しました
- 2021/10/20 : いくつか画像を追加しました