在编写数学课作业解答之类的内容时,我经常会遇到一个尴尬的情况。每个问题都会有一些惯用的函数,这些函数很麻烦,而且很容易重写。例如,
f(x)=\sup_{\xi\in\mathcal{A}}\sum_{k=1}^\infty \phi_k(x,\xi)
为了避免重写右侧,一种解决方案是
\newcommand{\f}[1]{\sup_{\xi\in\mathcal{A}}\sum_{k=1}^\infty \phi_k(#1,\xi)}
这样,当我不需要操作表达式的子部分时,我就可以完整地写出右侧,并且出现拼写错误的可能性更小,从而使代码更简洁。但是在某些情况下,函数f
在不同的问题中可能具有不同的定义,因此我经常需要重新定义它。
有没有办法将定义限定在代码的某个部分,这样,如果我忘记重新定义变量,重新定义就不会影响代码的其他部分?如果格式化函数需要一些手动间距调整,而这会使代码变得混乱,那么这一点就尤其重要。
答案1
将重新定义分组以使其成为本地定义(使用{
...}
或\begingroup
...\endgroup
或\bgroup
... \egroup
,或在数学组本身内$
... $
)。当然,您还可以合并可选参数来指定对函数的一些更改,以使更改更具通用性(这样您就不必通过整个重新定义来将其本地化):
\documentclass[12pt]{article}
\newcommand{\func}[2][\xi]{\sup_{#1\in\mathcal{A}}\sum_{k=1}^\infty \phi_k(#2,#1)}
\begin{document}
$\func{x}$ \par% Default definition
$\renewcommand{\func}[1]{f(#1)} \func{x}$ \par% Entire redefinition (localized)
$\func[\psi]{x}$% Localized "redefinition"
\end{document}
这可能完全取决于您概括所使用的功能的方式。