物理・数学でよく使う LaTeX のコマンドを \newcommand する [数式モード，括弧]

#動機

$\bullet$ TeX打ちを速くしたい．
$\bullet$ tex ファイルをきれいに仕上げたい．
$\bullet$ 分かりやすく，打鍵効率の良いコマンドを作りたい．

#\newcommand を省略する

まず,`\newcommand`は

```latex
\newcommand{\nc}{\newcommand}
```

のように定義しておきます．
前回の記事：[LaTeX の \newcommand を \newcommand してみる](https://qiita.com/Krypf/items/52d897cf4871364e2c5e)



#数式モードを \newcommand する


##コード全体

```latex:math_mode.sty
\usepackage{comment}
\newcommand{\nc}{\newcommand} %上で見た
\nc{\di}{\displaystyle}       %1つめの\newcommand
\nc{\ma}[1]{\(\di{#1}\)}      %2つめの\newcommand
\begin{comment}
Note that there is no auto-completion of math mode when typing.
打ち込み時数式環境扱いの自動補完がされないことに注意．
\end{comment}
\nc{\fr}[2]{\frac{#1}{#2}} %for \ma{} mode. %3つめの\newcommand
```

一つ一つ見ていきましょう．

##\di (コード3行目)
```latex
\nc{\di}{\displaystyle}   
```

`\displaystyle`の短縮です．equation 環境と同じ表示になります．

>example
$\text{textstyle: }\textstyle{\zeta(s) = \sum_{n = 1}^{\infty} \frac{1}{n^s}}$
$\text{displaystyle: }\displaystyle{\zeta(s) = \sum_{n = 1}^{\infty} \frac{1}{n^s}}$

##\ma (コード4行目)
```latex
\nc{\ma}[1]{\(\di{#1}\)}  
```

displaystyle の inline math mode です．例えば，
>The Riemann zeta function is`\ma{\zeta(s) = \sum_{n = 1}^{\infty} \frac{1}{n^s}}`.

と打てば，
>$\text{The Riemann zeta function is }\displaystyle{\zeta(s) = \sum_{n = 1}^{\infty} \frac{1}{n^s}}.$

のように出力されます[^1]．

[^1]: 視認の便宜上`\text{The Riemann zeta function is }`を数式の中に入れて表示しています．日本語の場合 uplatex + jsarticle + Atom なら数式の中に入れても問題ありませんが，外に出せるなら出すのが無難です．

##\fr (コード最終行)
`\ma{}`はただのコマンドなので Atom の数式モードの自動補完が無効になります．特に`\frac{}{}`が厄介です[^2]．そこで，

```latex
\nc{\fr}[2]{\frac{#1}{#2}}
```

としてしまいましょう．`\sum`などはそのままで良いでしょう．


[^2]: Atom で自動補完のパッケージを使うと`i + enter`を打てば inline math mode: `\(\)`が，その中で`fr + enter`を打てば自動で`\frac{}{}`が表示されます．しかし，数式環境以外で`fr + enter`を押すと (筆者の環境では)`\begin{figure}`が自動補完されてしまいます．`\(\di{}\)`と打つか，`\ma{}`と打つか，どちらがより効率的かは場合による，としか言えなさそうです．自動補完がない場合では，`\ma{}`に優位性があるでしょう，


##複数行のコメントアウト
```latex
\usepackage{comment}
```
を使うと複数行のコメントアウトができ便利です．プリアンブル (sty ファイル) でも使えます．

```latex
\begin{comment}
<comments>
\end{comment}
```
注意点はいくつかありますが，この記事の主眼ではないので今は触れないでおきましょう (作成予定)．






#括弧を \newcommand する
括弧には様々な種類があります．丸括弧 ( ) (parentheses)，三角括弧 $\langle\,\rangle$ (angle brackets)，角括弧 \[ \] (brackets)，波括弧（中括弧とも） { } (curly brackets) などです．
##コード全体
```latex:bracket.sty
\usepackage{mleftright}
\nc{\lr}[1]{\left(#1\right)}
\nc{\mlr}[1]{\mleft(#1\mright)}
%\mleftright %\left = \mleft, \right = \mright

\nc{\alr}[1]{\left\langle#1\right\rangle} %angle bracket
\nc{\blr}[1]{\left[#1\right]} %bracket
\nc{\clr}[1]{\left\{#1\right\}} %curly bracket
\nc{\amlr}[1]{\mleft\langle#1\mright\rangle} %angle bracket
\nc{\bmlr}[1]{\mleft[#1\mright]} %bracket
\nc{\cmlr}[1]{\mleft\{#1\mright\}} %curly bracket

```

これもひとつひとつ見ていきましょう．

##丸括弧 ( )

```latex
\nc{\lr}[1]{\left(#1\right)}
```

これがおそらく最も使う括弧でしょう．慣れると非常に便利です．`\lr`なんて既に存在していてもおかしくなさそうなコマンドですが，案外未定義なのです．

##mleftright
また，

```latex
\usepackage{mleftright}
```

を用いることで，

```latex
\nc{\mlr}[1]{\mleft(#1\mright)}
```

を定義することができます．これは特定の場合に周囲の空白を詰めた括弧を出力します．

ちなみに，

```latex
\mleftright
```

と宣言すると，自動的にすべての`\left`の出力が`\mleft`に，すべての`\right`の出力が`\mright`になります．`\left\right`と`\mleft\mright`を使い分ける必要がない，という方はこれを宣言するのも良いでしょう．元の定義に戻したいときには`\mleftrightrestore`を宣言します[]([^3])．

[](
[^3]: align 環境の中で宣言した場合は無効になりましたが，外で使うと有効でした．
)


##三角括弧 〈〉
```latex
\nc{\alr}[1]{\left\langle#1\right\rangle} 
\nc{\amlr}[1]{\mleft\langle#1\mright\rangle}
```

三角括弧です．`\mleft\mright`の機能は丸括弧の場合と同じです．


##角括弧 \[ \]
```latex
\nc{\blr}[1]{\left[#1\right]}
\nc{\bmlr}[1]{\mleft[#1\mright]}
```

角括弧です．
色が変になっているところは気にしなくて大丈夫です．tex ファイルでは問題なく出力されます．

##波括弧 { }
```latex
\nc{\clr}[1]{\left\{#1\right\}} 
\nc{\cmlr}[1]{\mleft\{#1\mright\}} 
```

波括弧です．

#まとめ

よく使う記号は新しく定義しておくと非常に便利です．特に上に挙げた`\ma{}`と`\lr{}`はよく使っています．短く書けるだけでなくシンタックスハイライトによって視認性が向上するという利点もあります．
便利になったコマンドをどんどん使っていきましょう．


#関連
[Brackets and Parentheses - Overleaf, Online LaTeX Editor](https://www.overleaf.com/learn/latex/Brackets_and_Parentheses)
[LaTeX表現集 [物理のかぎしっぽ] ー矢印と括弧](http://hooktail.sub.jp/nocategory/latexImpress/#id9)
[LaTeXの特殊文字・特別記号](http://www.ic.daito.ac.jp/~mizutani/tex/special_characters.html)