1つの引数を持つ新しいコマンドを別の新しいコマンドに渡す

1つの引数を持つ新しいコマンドを別の新しいコマンドに渡す

A別の新しいコマンドB(引数が 1 つある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:このようなディラック/ヒルベルト状態ベクトル用のパッケージがあります。

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

ここに画像の説明を入力してください

関連情報