
\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*