options ASMmathAndMatotools - yarakos95/LaTeX-for-math GitHub Wiki

amsmath とmathtools のパッケージオプション

amsmath とmathtools を使う際に,数式に対していくつかのオプションを課すことが出来る.把握しておこう.

! amsmath パッケージのオプション

■ オプションの使い方

これらのパッケージオプションのいずれかを使用するには,\usepackage コマンドのオプション引数を入れる.以下のようにして,オプション名を入れる.

\usepackage[intlimits]{amsmath}

AMS ドキュメントクラスと,amsmath が読み込まれているクラスでは,必要なオプションは\documentclass に以下のように特定する.[^rare]

[^rare]: jscalasses やBXjsclasses ではamsmath を読み込まないので,これらを使用する際には無視してよい.

\documentclass[intlimits,tbtags,reqno]{amsart}

■ mathtools との併用

cf. The mathtools Package, §2 Package loading

mathtools はamsmath を自動的に読み込むため,以下のようにamsmath のオプションを設定することも可能だ.

\usepackage[fleqn,tbtags]{mathtools}

これは以下と同様である.

\usepackage[fleqn,tbtags]{amsmath}
\usepackage{mathtools}

しかし,他のパッケージも使用することを思えば,明示的に読み込んでおいた方が良いだろう.

○ 式番号の位置

デフォルトでは右側に式番号を置くようになっている.

Option
leqno 数式番号を左に置く
reqno 数式番号を右に置く

○ 数式の配置

Option
fleqn 数式の配置を文章幅の左右中央ではなく,左から一定の字下げの後で行う

○ split 環境に関して

split 環境での式番号の出力場所を指定する.

Option
centertags (デフォルト) split 環境に含まれる数式の高さの中央に配置する
tbtags ("Top-or-bottom tags") 式番号を右に置く時は最後の式の行に,式番号を左に置くときは最初の式の行に配置する

○ 総和記号 / 積分記号 等の大型演算子

ディスプレイスタイルの数式における総和記号や積分記号などの上限,下限を指定するような記号に対するオプション.

Option 積分記号 積分以外の記号
sumlimits (デフォルト) nointlimits sumlimits
nosumlimits nointlimits nosumlimits
intlimits intlimits sumlimits
nointlimits (デフォルト) nointlimits sumlimits

nointlimits がsumlimits と同一の出力になっているが,何が異なるのか分からない.

■ 手動で個々に変更したい

コマンド
右側から上下に変更する \limits
上下から右側に変更する \nolimits
% amsmath オプションはsumlimits(デフォルト)
\begin{equation*}
    \int\limits^\infty_0, \qquad    % インテグラルの上下に
    \sum\nolimits_X    % 総和記号の右側に
\end{equation*}

limit-nolimit.png

■ limits とnolimits を両方同時に利用したい

cf. The amdmath Package, 7.2 The \sideset command

sideset-example.png

上のようにしたい場合には\sideset を使おう.

\sideset{}{^A}\sum_{i > 0}^N A_i

\sideset の仕様は以下のようになっている.

\sideset{^1_2}{^3_4}\sum

sideset.png

このほかにもmathtools から提供されている\mathclap\smashoperator を用いることで同様の結果を得られるようだがここでは紹介しない.

○ 演算子

\det\inf\lim\max\min など[^operator]では,通常,下側に下付き文字を配置する.これを変更するオプションを紹介する.

[^operator]: \DeclareMathOperator で定義されているコマンドを指しているようだ.

Option 演算子
namelimits (デフォルト) namelimits
nonamelimits nonamelimits

ただし,\log はこのオプションの影響を受けない.

これらの演算子に関しては,「amsmath+mathtools と仲良くなろう#-自作で演算子を定義したい - Qiita」を参照するといいだろう.

○ aligned とgathered 環境

aligned と gathered 環境の左に空白を制御するための3つのオプションが追加された.[^thishistory]

[^thishistory]: 2017年以前には,これらの構造の左側には空白が追加されてたが,右側には追加されていなかったようだ.これは実装したときの偶発的な機能であると思われており,通常,環境の先頭に\! を付けることで逐次修正していたようだ.

新しいデフォルトの振る舞いは,ほとんどの場合,環境に細い空白が追加されないようにすることを目的としている.既存の文章に対しては,\!\begin{aligned} とすることで,前と同じように結果になる.

オプション
alignedleftspaceyesifneg (デフォルト) 環境が負の空白で調整されているときに限り\, を入れる
alignedleftspaceyes 常に\, を aligned と gathered の左に入れる
alignedleftspaceno \, を aligned と gathered の左に入れない

! mathtools パッケージのオプション

amsmath のバグ修正のみのようだ.これらのバグは修正されるべきバグなので,デフォルトのバグ修正を有効にしておいた方が良いと思われる. 以下で,どのようなバグを修正するのかを把握しておこう.

cf. The mathtools Package, §2.1 Special mathtools options

■ amsmath のバグ修正1

  • fixamsmath (デフォルト)
  • donotfixamsmathbugs

オプションfixamsmath (デフォルト)は,amsmath の2つのバグ[^amsmathbugs]を修正する.

[^amsmathbugs]: LaTeX バグデータベースから,AMS-$\rm\LaTeX$ のバグレポート3591および3614を参照.

この2つのバグは,amsmath をfleqn, leqno の2つのオプションを同時に使用すると以下のような結果を得てしまうというものだ.

amsmath-bugs.png

何らかの理由でこれらのバグを修正したくない場合 (タイプミスなしで実行できる場合)はオプションdonotfixamsmathbugs を追加する. ^donotfixamsmathbugs

■ amsmath のバグ修正2

  • disallowspaces (デフォルト)
  • allowspaces

以下のような

\begin{equation}
\begin{gathered}
    [p] = 100 \\
    [v] = 200
\end{gathered}
\end{equation}

このとき,"[p]" は意図せずに消えてしまう.これは,amsmath 内で"[p]" を引数だと判断して,"[c]" として判断したためである.(t,b 等の引数を付与するとこの現象はなくなる)

このバグ修正は"aligned", "gathered", "multlined", 拡張マトリックス環境に適応される.(あれ? "alignedat" 環境は?)

参考

追記

⚠️ **GitHub.com Fallback** ⚠️