
Estou me perguntando como definir um novo comando A
com outro novo comando B
(que tem um argumento x
) como o argumento de A
.
Aqui está um exemplo simples:
\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}
O resultado que eu queria é |Hc(5)>
, mas na verdade deu |Hc(5>)
. Muito estranho.
O que há de errado com o código acima?
Responder1
Você tem que agrupar (bem delimitar) o comando interno, que tem um argumento opcional, com {...}
, caso contrário, todo o comando se desfaz e o conteúdo dos argumentos é escrito na ordem errada!
Observação: Existe um braket
pacote para esses vetores de estado Dirac/Hilbert.
\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}