
\defineThisCommand
新しいコマンドを定義し、それをローカルで呼び出すマクロを作成します\TheCommand
。コードは次のようになります。
\defineThisCommand{}{
\newcommand \ThisCommand{
#1
}
\ThisCommand
}
\begin{document}
\defineTopicOne{Some text printed}
\defineTopicTwo{and this too}
\end{document}
最後に出力を生成する
Some text printed
and this too
この問題を解決する方法を提案していただけますか?
答え1
答え2
TeX が制御シーケンスを見つけると\foo
、まず区別すべき 2 つのケースがあります。TeX がマクロ展開を行っているか、行っていないかのどちらかです。後者のケースは状況によっては問題にならないので、前者のケースで何が起こるかを見てみましょう。ケースは次のとおりです。
- 制御シーケンスに意味が割り当てられている、または
- 制御シーケンスは未定義です。
最初のケースでは、TeX はコンテキストに適した意味を使用します。\foo
マクロの場合はマクロが展開され、トークンの場合は\chardef
対応する文字が印刷される、などとなります。
2番目のケースでは、TeXは停止し、エラーメッセージを表示し、無視する未定義のトークン。
したがって、事前にマクロをいくつか定義しておかない限り、望むようなことはできない。
\newcommand\defineThisCommand[1]{\newcommand\ThisCommand{#1}\ThisCommand}
\defineOtherCommand
必要なすべてのローカル コマンドに対して。これは明らかに意図に反しています。以前に定義していない場合は、使用できません。
使用する戦略は、汎用マクロを用意することです。二引数:
\newcommand\define[2]{%
\newcommand#1{#2}% define the local command
#2% and also use it now
}
これにより、
\define\ThisCommand{whatever}
やりたいことをやる。