絶対値をその大きさを変えながら出力する際,\left| \right|
のように書くことがよくあるでしょう。しかし,\abs{}
のようにかくと,絶対値を出力してくれ,括弧の大きさを自動で調整してくれたり,もっと言えば括弧の大きさをカスタマイズできると嬉しいですね。
今回はそれができる,mathtools
パッケージに定義されている \DeclarePairedDelimiter
とその発展である \DeclarePairedDelimiterX, \DeclarePairedDelimiterXPP
について,その使い方を紹介します。
DeclarePairedDelimiterコマンドの基本的な使い方と具体例
DeclarePairedDelimiterコマンドの使い方
このコマンドは,プリアンブルに
\DeclarePairedDelimiter{\cmd}{<left_delim>}{<right_delim>}
の形で,括弧を定義できます。\cmd
は実際に数式内で使いたいコマンド,<left_delim>, <right_delim>
はそれぞれ左・右の括弧を表します。
これにより,数式中で以下のように使えます。
コマンド | 出力の種類 | 備考 |
---|---|---|
\cmd{} | 普通サイズの括弧を出力する | |
\cmd*{} | 自動調整サイズの括弧を出力する | |
\cmd[<size>]{} | <size>に指定したサイズの括弧を出力する | サイズには \big, \Big,\bigg,\Bigg 等を指定する |
具体例を挙げましょう。
DeclarePairedDelimiterコマンドの具体例
以下のようにプリアンブルに書くことで,絶対値を定義しましょう。\lvert, \rvert
は絶対値を表すタテの棒を指します。
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
すると,以下のように使えます。
コマンド | 出力 |
---|---|
\abs{\frac{a}{b}} | \displaystyle|\frac{a}{b}| |
\abs*{\frac{a}{b}} | \displaystyle\left| \frac{a}{b} \right| |
\abs[\big]{\frac{a}{b}} | \displaystyle\bigl| \frac{a}{b} \bigr| |
\abs[\Big]{\frac{a}{b}} | \displaystyle \Bigl| \frac{a}{b} \Bigr| |
\abs[\bigg]{\frac{a}{b}} | \displaystyle\biggl| \frac{a}{b} \biggr| |
\abs[\Bigg]{\frac{a}{b}} | \displaystyle\Biggl| \frac{a}{b} \Biggr| |
便利ですね。
DeclarePairedDelimiterコマンドの注意
注意ですが,このコマンドで定義した括弧は,\bm{\rbra{...}}
のように,bm
パッケージと一緒に使うとエラーになります。これに関しては,少々厄介です。
DeclarePairedDelimiterコマンドの定義の具体例
実際のコマンドの定義の例を挙げておきましょう。
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert} % | | absolute value
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert} % || || norm
\DeclarePairedDelimiter{\rbra}{\lparen}{\rparen} % () round brackets
\DeclarePairedDelimiter{\cbra}{\lbrace}{\rbrace} % {} curly brackets
\DeclarePairedDelimiter{\sbra}{\lbrack}{\rbrack} % [] square brackets
\DeclarePairedDelimiter{\abra}{\langle}{\rangle} % < > angle brackets
\DeclarePairedDelimiter{\floor}{\lfloor}{\rfloor} % floor function
\DeclarePairedDelimiter{\ceil}{\lceil}{\rceil} % ceil function
DeclarePairedDelimiterXコマンド
さらに発展的なコマンドとして \DeclarePairedDelimiterX
というものがあります。これは,さらに細かなコマンド指定ができます。
基本的な使い方と具体例
これは,
\DeclarePairedDelimiterX{\cmd}[<num args>]{<left_delim>}{<right_delim>}{<body>}
の形で使います。<num_args>
はこのコマンドがとる引数の個数,<body>
は括弧の中身の形式を指定します。たとえば,
\DeclarePairedDelimiterX{\rpair}[2]{\lparen}{\rparen}{#1, #2}
とすると,数式中で \rpair{a}{b}
と書くことで (a, b) を得ることができます。
他に,\rpair*{a}{b}, \rpair[<size>]{a}{b}
として括弧の大きさを変えられることは,\DeclarePairedDelimiter
のときと同様です。他に,たとえば
\DeclarePairedDelimiterX{\mybracket}[3]{\lparen}{\rparen}{#1, #2 \to #3}
とすると,\mybracket{a}{b}{x}
は (a, b \to x) となります。
delimsizeコマンドで<body>を括弧に連携
さらに <body>
の部分に,\delimsize
というコマンドを用いて,外の括弧の大きさに対応するシンボルを追加することができます。この際,たとえば
\DeclarePairedDelimiterX{\Set}[2]{\lbrace}{\rbrace}{#1\,\delimsize\vert\,#2}
(\,
は小さなスペースを指します) とすれば,数式中で \Set{\frac{p}{q}}{p, q \in \mathbb{Z}}
とすることで,
となり,\Set*{\frac{p}{q}}{p, q \in \mathbb{Z}}
とすることで,
と出力されます。集合の内包的表記を書くのに使えそうですね。
DeclarePairedDelimiterXPPコマンド
さらに進んだコマンドとして,\DeclarePairedDelimiterXPP
コマンドというのもあります。これは,括弧の前後に出力を追加できるもので
\DeclarePairedDelimiterXPP{\cmd}[<num args>]{<pre code>}{<left_delim>}
{<right_delim>}{<post code>}{<body>}
とすることで,
{<pre code>}{<left_delim>}{<body>}{<right_delim>}{<post code>}
の形の出力を得ることができます。たとえば,
\DeclarePairedDelimiterXPP\lnorm[1]{}{\lVert}{\rVert}{_2}{#1}
と定義すると \lnorm{f}
と書くことで, L^2 ノルムを表す括弧 \| f\|_2 を得ることができます。
括弧の大きさを変えれること等は,先ほどと同じです。