Pasar un nuevo comando con un argumento a otro nuevo comando

Pasar un nuevo comando con un argumento a otro nuevo comando

Me pregunto cómo definir un nuevo comando Acon otro comando nuevo B(que tiene un argumento x) como argumento A.

Aquí hay un ejemplo simple:

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

El resultado que quería es |Hc(5)>, pero de hecho se mostró |Hc(5>). Muy raro.

¿Qué hay de malo en el código anterior?

Respuesta1

Tienes que agrupar (bueno, delimitar más bien) el comando interno, que tiene un argumento opcional, con {...}; de lo contrario, todo el comando se desintegra y el contenido de los argumentos se escribe en el orden incorrecto.

Nota: Existe un braketpaquete para dichos vectores de estado de 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}

ingrese la descripción de la imagen aquí

información relacionada