我什么时候该用\DeclarePairedDelimiter
,什么时候该用\newcommand
?
例如我已经定义
%Ceiling function
\DeclarePairedDelimiter\ceil{\lceil}{\rceil}
%Floor function
\DeclarePairedDelimiter\floor{\lfloor}{\rfloor}
这是最好的方法吗?
答案1
\DeclarePairedDelimiter
是包中用于打开和关闭分隔符(例如圆括号、方括号、大括号)的一个非常特殊的命令mathtools
,您希望选项自动调整它们的大小。
例如,它允许您用...\lfloor
替换 ...并将...替换为... 。\rfloor
\floor{
}
\left\lfloor
\right\rfloor
\floor*{
}
其他常见示例包括:
\DeclarePairedDelimiter\paren{(}{)} % (parentheses)
\DeclarePairedDelimiter\ang{\langle}{\rangle} % <angle brackets>
\DeclarePairedDelimiter\abs{\lvert}{\rvert} % |absolute value|
\DeclarePairedDelimiter\norm{\lVert}{\rVert} % ||norm||
\DeclarePairedDelimiter\bkt{[}{]} % [brackets]
\DeclarePairedDelimiter\set{\{}{\}} % {braces}
与其他示例一样,我得到的命令具有固定大小,或者随表达式缩放。请参阅mathtools
文档有关此命令的更多信息。
\newcommand
但是, 更为通用,允许使用更广泛的快捷方式。例如,如果我正在撰写有关组合学的文章,那么我会输入combinatorics
很多内容。我可以通过写 来缩短它\newcommand{\cbs}{combinatorics}
,然后每当我\cbs
在文档中输入内容时,它都会扩展为combinatorics
。无需将其与分隔符相关联。[1]
您还可以声明带有参数的命令:例如,\newcommand{\dfr}[2]{d #1/d #2}
定义衍生命令;然后,我可以调用它\dfr{f}{x}
来获取自由度/解析并\dfr{f}{y}
得到自由度/靜。 看维基百科上的宏页面了解更多信息。
你可以使用\newcommand
来制作分隔符,例如\newcommand{\floor}[1]{\lfloor #1 \rfloor}
,但这样你就得不到可缩放的版本和不可缩放的版本。关键是\newcommand
比\DeclarePairedDelimiter
,但不能自动处理缩放。
最后,对于“这是最好的方法吗?”我想说,既然你想使用\DeclarePairedDelimiter
提供的功能,你也可以使用它,所以是的,你做得对。
[1]:一个更有用的示例是\newcommand
为某些内容定义一个,以后可能会返回并进行更改。例如,如果您有一个经常使用但尚未最终确定的符号,则为其定义一个\newcommand
意味着当您更改它时,只需更改一次。例如,在定义中,我将要定义的单词斜体化,这样我就可以使用\newcommand{\term}[1]{\textit{#1}}
然后调用。然后,如果我以后决定要为定义加下划线,我所要做的就是在文档中的一个位置\term{word being defined}
更新一个。\newcommand