ある \newcommand から別の \newcommand に戻り値を渡しますか?

ある \newcommand から別の \newcommand に戻り値を渡しますか?

\newcommand一方の出力を別の入力に渡す方法を知りたいです\newcommand。例:

\newcommand{\bra}[1]{$\langle{#1}|$}
\newcommand{\comm}[2]{$ \left[{#1},{#2}\right]={#1}{#2}-{#2}{#1}$}

\comm{\bra{X},\bra{Y}}返される値:

$\langle X|\langle Y| - \langle Y|\langle X|$

十分シンプルに思えますが、正しい構文がわからず、同様の質問を見つけることができません。

ご意見ありがとうございます。

ブライアン

答え1

カンマで区切られた引数リストを使用する場合は、\comm次のようにします。

\documentclass{article}
\newcommand{\bra}[1]{\langle{#1}|}
\newcommand{\comm}[1]{\tempcomm(#1)}
\def\tempcomm(#1,#2){\left[{#1},{#2}\right]={#1}{#2}-{#2}{#1}}

\begin{document}
\[
\comm{\bra{X},\bra{Y}}
\]
\end{document} 

ここに画像の説明を入力してください

答え2

考えられる定義としては

\newcommand{\bra}[1]{\langle#1\mathclose{|}}
\newcommand{\comm}[2]{[#1,#2]=#1#2-#2#1}

\documentclass{article}

\newcommand{\bra}[1]{\langle#1\mathclose{|}}
\newcommand{\comm}[2]{[#1,#2]=#1#2-#2#1}

\begin{document}

$\bra{X}$

$\comm{X}{Y}$

$\comm{\bra{X}}{\bra{Y}}$

\end{document}

ここに画像の説明を入力してください

注意:

\newcommand{\foo}[2]{...#1...#2...}

それを呼ぶ必要があります

\foo{first}{second}

および は使用しないでください。これらのコマンドの定義では を\foo{first,second}使用しないでください。これらは数式内で使用されることが想定されています。$

しかし、これにはもっと良い方法があります。

\documentclass{article}

\usepackage{mathtools}

\DeclarePairedDelimiter{\bra}{\langle}{|}
\DeclarePairedDelimiterX{\comm}[2]{[}{]}{#1,#2}
\newcommand{\commx}[2]{#1#2-#2#1}

\begin{document}

$\bra{X}$

$\comm{X}{Y}=\commx{X}{Y}$

$\comm[\big]{\bra{X}}{\bra{Y}}=\commx{\bra{X}}{\bra{Y}}$

\end{document}

\commおよびは、\bra区切り文字のサイズを変更するためのオプションの引数を受け入れることに注意してください。また、 および を使用して自動サイズ設定を行う\comm*こともできます\bra*(注意して使用してください)。

ここに画像の説明を入力してください

関連情報