将带有一个参数的新命令传递给另一个新命令

将带有一个参数的新命令传递给另一个新命令

我想知道如何定义一个新命令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针对此类 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}

在此处输入图片描述

相关内容