
\newcommand
Ich würde gerne wissen, wie ich die Ausgabe eines an die Eingabe eines anderen weiterleiten kann \newcommand
. Beispiel:
\newcommand{\bra}[1]{$\langle{#1}|$}
\newcommand{\comm}[2]{$ \left[{#1},{#2}\right]={#1}{#2}-{#2}{#1}$}
\comm{\bra{X},\bra{Y}}
sollte zurückgeben:
$\langle X|\langle Y| - \langle Y|\langle X|$
Scheint einfach genug zu sein – ich komme nur nicht auf die richtige Syntax oder finde keine ähnliche Frage, die ich als Grundlage nehmen könnte.
Danke für deinen Beitrag.
Brian
Antwort1
Wenn Sie für Ihre Argumente eine durch Kommas getrennte Liste verwenden möchten, \comm
können Sie Folgendes tun:
\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}
Antwort2
Eine mögliche Definition wäre
\newcommand{\bra}[1]{\langle#1\mathclose{|}}
\newcommand{\comm}[2]{[#1,#2]=#1#2-#2#1}
Beispiel
\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}
Beachten Sie, dass Sie bei
\newcommand{\foo}[2]{...#1...#2...}
man muss es nennen als
\foo{first}{second}
und nicht als . Sie sollten in den Definitionen dieser Befehle \foo{first,second}
nicht verwenden , die in einer Formel verwendet werden sollen.$
Es gibt hierfür jedoch bessere Möglichkeiten.
\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}
Beachten Sie, dass „ \comm
und“ \bra
ein optionales Argument zum Ändern der Größe der Trennzeichen akzeptiert. Sie können auch „ \comm*
und“ \bra*
zur automatischen Größenanpassung verwenden (mit Vorsicht verwenden).