wrongwrongな開発日記

しんまいさんの忘備録

【LaTeX】マクロ機能\newcommandを使った文章作成効率化

まとめ

この記事の内容をまとめたサンプルです。いつもの\beginと\endが乱立する感じは無く、とてもシンプルに書けています。

\documentclass[dvipdfmx]{beamer}
\usetheme{Boadilla}

% コマンド定義
\newcommand{\EQ}[1]{\begin{equation}{#1}\end{equation}} % 等式
\newcommand{\MATRIX}[2]{\left(\begin{array}{#1} #2 \end{array} \right)} % 行列
\newcommand{\FRAME}[2]{\begin{frame}{#1} #2 \end{frame}} % フレーム
\newcommand{\BLOCK}[2]{\begin{block}{#1} #2 \end{block}} % ブロック

\begin{document}
\FRAME{さんぷる}{
  あああ
  \BLOCK{いいい}{
    \EQ{
      \MATRIX{ccc}{
        a & b & c \\
        d & e & f \\
        g & h & i
      }
    }
  }
}
\end{document}

出力結果は以下の通りです。
f:id:wrongwrongwrongwrong163377:20180421182411p:plain

背景

普通にLaTeXで文章作成をやっていると一々環境を書くのがめんどくさいです。例えば数式の環境は以下のようになります。

\begin{equation}
  e^{i \theta} = \sin \theta + i \sin \theta
\end{equation}

マクロ機能を使う

LaTeXにはこうした不便を解消するマクロ機能があります。
実際にマクロ機能で数式を定義してみた例が以下。

\newcommand{\EQ}[1]{\begin{equation}{#1}\end{equation}}

これをプリアンブル部に書いた上で数式を書くと以下のようになります。

\EQ{
  e^{i \theta} = \sin \theta + i \sin \theta
}

超シンプルになりましたね。

応用

Beamerのblockなどもこの方法で簡単化できます。

\newcommand{\BLOCK}[2]{\begin{block}{#1} #2 \end{block}}
\BLOCK{aaa}{
  bbb
}

行列のように書かなければならないパーツが多くて面倒なものも以下のように簡略化できます。

\newcommand{\MATRIX}[2]{\left(\begin{array}{#1} #2 \end{array} \right)
\MATRIX{ccc}{
  a & b & c \\
  d & e & f \\
  g & h & i
}
作法

個人的な作法ですが、自分で定義したマクロは大文字で書くようにしています。
小文字で書くとLaTeX本来の命令と混ざるのと、場合によっては使いたい名前が既に定義されている名前と被って使えなかったりするからです。

参考サイト

詳しい使い方は以下を参考にして下さい。
LaTeX入門/LaTeXマクロの作成 - TeX Wiki