编写绝对值符号的“最佳 LaTeX 实践”是什么?是否有任何软件包提供好的方法?
一些选项包括|x|
和\mid x \mid
,但我不确定哪个最好......
答案1
我一直\DeclarePairedDelimiter
在使用下面的代码mathtools
包裹。
由于我不认为我有一个不希望根据参数进行扩展的情况,因此我利用了交换带星号和不带星号的命令的定义这样正常使用就会自动缩放,而带星号的版本则不会:
如果您希望反过来,请注释掉之间的代码\makeatother...\makeatletter
。
\documentclass{article}
\usepackage{mathtools}
\DeclarePairedDelimiter\abs{\lvert}{\rvert}%
\DeclarePairedDelimiter\norm{\lVert}{\rVert}%
% Swap the definition of \abs* and \norm*, so that \abs
% and \norm resizes the size of the brackets, and the
% starred version does not.
\makeatletter
\let\oldabs\abs
\def\abs{\@ifstar{\oldabs}{\oldabs*}}
%
\let\oldnorm\norm
\def\norm{\@ifstar{\oldnorm}{\oldnorm*}}
\makeatother
\newcommand*{\Value}{\frac{1}{2}x^2}%
\begin{document}
\[\abs{\Value} \quad \norm{\Value} \qquad\text{non-starred} \]
\[\abs*{\Value} \quad \norm*{\Value} \qquad\text{starred}\qquad\]
\end{document}
答案2
请注意,如果您只是使用,您将获得 mathord 间距,这与从成对的 mathopen/mathclose 分隔符或即使不拉伸符号|
获得的间距不同。我个人更喜欢此处来自 mathinner 的左/右间距(即使 @egreg 说我通常是错的 :-)\left/\right
\left/\right
\documentclass{amsart}
\begin{document}
$ \log|x||y|b $
$ \log\left|x\right|\left|y\right|b $
$ \log\mathopen|x\mathclose|\mathopen|y\mathclose|b $
\end{document}
答案3
也可以使用commath
包。
\documentclass{article}
\usepackage{commath}
\begin{document}
\[ \norm{a \vec{u}} = \abs{a} \, \norm{\vec{v}} \]
\end{document}