
Мне интересно, как определить новую команду A
с другой новой командой B
(которая имеет один аргумент x
) в качестве аргумента A
.
Вот простой пример:
\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{babel}
\begin{document}
\newcommand\ket[1][usedefault, addprefix=\global, 1=1]{|#1>}
\newcommand\hc[1][usedefault, addprefix=\global, 1=2]{Hc(#1)}
\newcommand\kc[1][usedefault, addprefix=\global, 1=3]{\ket[\hc[#1]]}
$$\kc[5]$$
\end{document}
Результат, который я хотел получить |Hc(5)>
, но на деле он показал |Hc(5>)
. Очень странно.
Что не так с кодом выше?
решение1
Вам необходимо сгруппировать (точнее, разграничить) внутреннюю команду, имеющую необязательный аргумент, с помощью {...}
, в противном случае вся команда развалится, и содержимое аргументов будет набрано в неправильном порядке!
Примечание: Существует braket
пакет для таких векторов состояния Дирака/Гильберта.
\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{babel}
\begin{document}
\newcommand\ket[1][usedefault, addprefix=\global, 1=1]{|#1\rangle}
\newcommand\hc[1][usedefault, addprefix=\global, 1=2]{Hc(#1)}
\newcommand\kc[1][usedefault, addprefix=\global, 1=3]{\ket[{\hc[#1]}]}
\[\kc[5]\]
\end{document}