Умовні позначення абсолютних величин

Яка &quo ;найкраща практика LaTeX&quo ; для написання символів абсолютних значень? Чи існують пакети, які надають хороші методи?

Деякі варіанти включають |x| і \mid x \mid, але я не впевнений, який з них найкращий...

Рішення

Я використовував наведений нижче код з використанням \DeclarePairedDelimiter з пакету mathtools.

Оскільки я не думаю, що у мене є випадок, коли я не хочу, щоб це масштабувалося на основі параметра, я використовую https://tex.stackexchange.com/questions/23178/swap-definition-of-starred-and-non-starred-command, так що звичайне використання буде автоматично масштабуватися, а зірка версія не буде:

Якщо ви хочете, щоб було навпаки, закоментуйте код між \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}
Коментарі (9)

Зауважте, якщо ви просто використаєте |, ви отримаєте інтервал mathord, який відрізняється від інтервалу, який ви отримаєте від парних роздільників mathopen/mathclose або від \left/\right, навіть якщо \left/\right не розтягує символ. Особисто я надаю перевагу інтервалам зліва/справа від mathinner (навіть якщо @egreg каже, що я взагалі не правий:-)

\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}

Коментарі (0)

Можна також скористатися пакетом commath.

\documentclass{article}

\usepackage{commath}

\begin{document}
\[ \norm{a \vec{u}} = \abs{a} \, \norm{\vec{v}} \]
\end{document}

Коментарі (2)