![将带有一个参数的新命令传递给另一个新命令](https://linux22.com/image/330589/%E5%B0%86%E5%B8%A6%E6%9C%89%E4%B8%80%E4%B8%AA%E5%8F%82%E6%95%B0%E7%9A%84%E6%96%B0%E5%91%BD%E4%BB%A4%E4%BC%A0%E9%80%92%E7%BB%99%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%96%B0%E5%91%BD%E4%BB%A4.png)
我想知道如何定义一个新命令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}