我想定义一个包含一些可在本地更改的文本的变量。以下代码给出了我正在寻找的功能的一个示例。
\documentclass{article}
\newcommand{\someSpecialText}{A text that can be changed locally...}
\newcommand{\testIt}{The value of someSpecialText is : ''\someSpecialText''.}
\begin{document}
% The default behavior.
\testIt
% Here I would like to change the definition of `\someSpecialText`
% or anywhere else in the document.
\testIt
\end{document}
答案1
您可以使用标准\renewcommand
来修改文本:
\documentclass{article}
\newcommand{\someSpecialText}{A text that can be changed locally\ldots}
\newcommand{\testIt}{The value of \texttt{someSpecialText} is : ``\someSpecialText''.}
\begin{document}
% The default behavior.
\testIt
% Here I would like to change the definition of `\someSpecialText`
% or anywhere else in the document.
{% Start of group
\renewcommand{\someSpecialText}{A text that \textit{was} changed locally\ldots}
\testIt
}% End of group
% The default behavior.
\testIt
\end{document}
在上面的例子中,被\renewcommand
放置在一个由括号和定义的组中,{
以}
局部化重新定义。如果不希望出现这种情况,只需删除括号即可从该点开始使重新定义成为全局的。
当然,你也可以用宏形式来写,这样会比较“简短”,并且带有一些默认值。下面是一个例子:
\documentclass{article}
\newcommand{\testIt}[1][A text that can be changed locally\ldots]{The value passed to \texttt{testIt} is : ``#1''.}
\begin{document}
% The default behavior.
\testIt
% Here I would like to change the definition of `\someSpecialText`
% or anywhere else in the document.
\testIt[A text that \textit{was} changed locally\ldots]
% The default behavior.
\testIt
\end{document}
\testIt
设置为输出具有默认值的内容。但是,您可以提供一个可选参数来修改默认行为。