我有這個指令:
\newcommand{\name}[1]{\edef\name{#1}}
您首先將其稱為 in \name{Don}
,然後您可以使用 Don 來引用它\name
。這是表達只應設定一次的常數的可接受方式嗎?
答案1
我會使用不同的命令,一個用於保存名稱,另一個用於設定名稱。
在套件中,通常的做法是使用命令 ( \name
) 的外部版本來設定內部巨集 ( ) 的值\@name
。這就是課堂上的工作\author
方式。\title
article
\makeatletter
\newcommand{\name}[1]{\gdef\@name{#1}}
\makeatother
但如果使用不同類型的命令來指示不同的行為,那就會更清晰、更簡單。因此\name
擴展到名稱,並\setname
定義 的值\name
:
\newcommand{\setname}[1]{\gdef\name{#1}}
最好區分指示將要排版的材料的命令和定義常數的命令。在我看來,LaTeX 中的預設\author
和\title
命令實際上應該是\setauthor
and \settitle
,因為實際的排版僅在您發出命令時發生\maketitle
。
答案2
當然,為什麼不呢。您的使用,您的選擇。
根據特定的應用程序,您可能會考慮使用\xdef
take 使(擴展的)重新定義全局或\protected@xdef
適應名稱中的“奇怪的結構”...