
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}