將帶有一個參數的新命令傳遞給另一個新命令

將帶有一個參數的新命令傳遞給另一個新命令

我想知道如何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}

在此輸入影像描述

相關內容