
我想知道如何將一個的輸出傳遞\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*
來自動調整大小(小心使用)。