\newcommand で自分のコマンドを作る
プリアンブルに \newcommand{\name}{replacement} と書き、引数 #1 から #n を使うなら [n] を付けます。それ以降、\name は本文でも数式でもその定義に置き換えられます。
引数のないコマンド
コマンドを作ると入力の手間が省け、表記も統一できます。プリアンブルで一度定義すれば、どこでも使えます。
集合と製品名のショートカット
\documentclass{article}
\usepackage{amssymb}
\newcommand{\R}{\mathbb{R}}
\newcommand{\product}{Scissor LaTeX}
\begin{document}
Every $x \in \R$ has a square $x^2 \ge 0$.
This page was typeset by \product.
\end{document}引数と既定値
名前の後の [n] で、コマンドが受け取る引数の数を指定します。定義の中では、引数は #1、#2 などで表します。2 つ目の角括弧で最初の引数に既定値を与えると、その引数は省略可能になります。
引数と省略可能な最初の引数
\documentclass{article}
\newcommand{\vect}[1]{\mathbf{#1}}
\newcommand{\norm}[1]{\left\lVert #1 \right\rVert}
\newcommand{\greet}[2][Hello]{#1, #2!}
\begin{document}
The length of $\vect{v}$ is $\norm{\vect{v}}$.
\greet{Erika} \greet[Good morning]{John}
\end{document}既存のコマンドを変える
\renewcommand はすでにあるコマンドを置き換え、\providecommand はまだ存在しない場合に限ってコマンドを定義します。使用済みの名前に \newcommand を使うと TeX のインストール環境ではエラーになるので、その場合は \renewcommand を使ってください。
\renewcommand と \providecommand
\documentclass{article}
\renewcommand{\emph}[1]{\textbf{#1}}
\providecommand{\R}{\mathbb{R}}
\begin{document}
This is \emph{emphasised} in bold now, and $\R$ is defined.
\end{document}演算子名
sin や log のような関数名は、適切な間隔を取って立体で組まれます。\DeclareMathOperator(amsmath)で独自の演算子名を作れます。スター付きの形では、\max のようにディスプレイ数式で範囲が下に置かれます。
\DeclareMathOperator とスター付きの形
\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\Var}{Var}
\DeclareMathOperator*{\argmax}{arg\,max}
\begin{document}
\[
\Var(X) = \mathbb{E}\left[(X - \mu)^2\right],
\qquad
\hat{\theta} = \argmax_{\theta} L(\theta)
\]
\end{document}自分の環境
\newenvironment{name}[n]{before}{after} は環境を定義します。「before」のコードは \begin{name} で、「after」のコードは \end{name} で実行されます。引数は「before」の部分で使えます。
引数を取る環境
\documentclass{article}
\newenvironment{task}[1]
{\par\noindent\textbf{Task #1.}\ }
{\par}
\begin{document}
\begin{task}{44}
Measure the rainfall every morning.
\end{task}
\end{document}使えるもの
| コマンド | Scissor LaTeX での対応 | 備考 |
|---|---|---|
\newcommand, \renewcommand, \providecommand | 使えます | 引数は 9 個まで。最初の引数は既定値付きで省略可能にできます。スター付きの形も使えます。 |
\DeclareRobustCommand | 使えます | \newcommand と同じです。 |
\newenvironment, \renewenvironment | 使えます | 引数と既定値も使えます。 |
\DeclareMathOperator, \DeclareMathOperator* | 使えます | |
\def\name{...}, \gdef, \edef, \xdef | 一部 | 単純な定義と #1 形式の引数は使えます。\def\pt(#1,#2){...} のような区切り付きのパラメーターは照合されず、出力が崩れます。 |
\let\new\old | 使えます | |
\NewDocumentCommand, \RenewDocumentCommand (xparse) | 非対応 | 定義は取り除かれ、使われた場所でコマンドが不明と報告されます。 |
\DeclarePairedDelimiter (mathtools) | 使えます | |
\makeatletter, \makeatother | 受け付けます | 名前に @ を含むコマンドは実行されません。 |
定義は組版の前に展開されるので、コマンドは本文、数式、キャプション、節のタイトルで使えます。無限ループを防ぐため、展開は安全上の上限で止まり、「問題」タブにメッセージが表示されます。
xparse のコマンド
xparse の \NewDocumentCommand は読み込まれません。定義は取り除かれ、コマンドが使われた場所では、名前がメッセージとともに飛ばされ、引数はテキストに残ります。
\NewDocumentCommand には対応していません
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\pair}{m m}{(#1, #2)}
\begin{document}
The pair \pair{a}{b} loses its parentheses and comma.
\end{document}「問題」タブ: Skipped 1 unknown command: \pair
直すには、同じコマンドを \newcommand{\pair}[2]{(#1, #2)} で書きます。省略可能な引数については、既定値付きの \newcommand でよくあるケースに対応できます。
TeX のインストール環境との違い
xparse と mathtools のマニュアルは CTAN にあります:xparse、mathtools。演算子と関数名については、総和、積分、関数名もご覧ください。
よくある質問
LaTeX で新しいコマンドを定義するにはどうすればよいですか?
プリアンブルに \newcommand{\name}{text} と書きます。引数を 2 つ取るなら名前の後に [2] を付け、テキストの中で #1 と #2 を使います。
\newcommand と \def の違いは何ですか?
\newcommand は名前が使われていないかを確認し、省略可能な引数にも対応します。\def は低水準の TeX のコマンドで、確認せずに上書きします。\newcommand と \renewcommand を使うことをおすすめします。
Scissor LaTeX で \NewDocumentCommand は使えますか?
いいえ。そのようなコマンドは \newcommand で書き直してください。必須の引数と 1 つの省略可能な引数に対応できます。
このページの例はすべて、サイトのビルド時に Scissor LaTeX で組版されています。 最終更新:2026-11-07