この犠牲の命令は良い考えでしょうか?

この犠牲の命令は良い考えでしょうか?

このコマンドがあります:

\newcommand{\name}[1]{\edef\name{#1}}

まず のように呼び出し\name{Don}、その後 を使って Don を参照できます\nameこれは、一度だけ設定する必要がある定数を表現する適切な方法でしょうか?

答え1

名前を保持するためのコマンドと名前を設定するためのコマンドなど、異なるコマンドを使用します。

パッケージでは、コマンドの外部バージョン ( \name) を使用して内部マクロ ( ) の値を設定するのが一般的です\@name。これが、クラスでの\authorと の動作方法です。\titlearticle

\makeatletter
\newcommand{\name}[1]{\gdef\@name{#1}}
\makeatother

しかし、異なる動作を示すために異なるタイプのコマンドを使用する方が明確で簡単になります。したがって、 は\name名前に展開され、\setnameの値を定義します\name

\newcommand{\setname}[1]{\gdef\name{#1}}

タイプセットされる素材を示すコマンドと定数を定義するコマンドを区別するのは良いことです。私の意見では、LaTeX のデフォルト\authorの およびコマンドは実際には およびであるべきです。実際のタイプセットは コマンド を実行した場合にのみ実行されるからです。\title\setauthor\settitle\maketitle

答え2

もちろんです。使い方はあなた次第です。

特定のアプリケーションに応じて、\xdef(拡張された)再定義をグローバルにしたり、\protected@xdef名前の「奇妙な構造」に対応したりするために take を使用することを検討してください...

関連情報