パラメータの新しい値をテストするための「ヘルパー」マクロを作成することに時間を費やしました。それ以外の場合は、既存の値を使用します。すべてのパラメータ位置にデフォルト値が存在します。
私は書くことができるようにしたかった:
\foo{left}{nil}{}{20pt}
2 番目のパラメーターは現在の値を使用しますが、3 番目の値は値の空の文字列になります。私は表記法を使いたかった:
\edef\pA{\isnil{#1}{\pA){#1}} % one for each parameter
\isnil を次のように定義しました。
\def\nil{nil}
\def\isnil#1#2#3{%
\edef\nilTest{#1}%
\ifx\nilTest\nil#2\else#3\fi
}
しかし、実行しようとすると、TeX は \nilTest が未定義の制御シーケンスであると不平を言いました。もちろんそれは本当ですが、 \pA に値のレシピではなく値を保持させたいので、 \edef でなければなりません。これは、すべてのマクロ テストが展開されることを意味しますが、 \edef は \ を保護しません。 nilTest -- これは \noexpand を使用する場所ですか -- 私にはうまくいきませんでした。
編集: \cs 名に数字はありません (ええ、私はそれを知っていました。)