Σύμβολα απόλυτης τιμής

Ποιες είναι οι "βέλτιστες πρακτικές του LaTeX" για τη συγγραφή συμβόλων απόλυτης τιμής; Υπάρχουν πακέτα που παρέχουν καλές μεθόδους;

Ορισμένες επιλογές περιλαμβάνουν |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 spacing, το οποίο είναι διαφορετικό από το spacing που θα παίρνατε από τα ζευγαρωμένα mathopen/mathclose delimiter ή από το \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)