What is the "best LaTeX practices" for writing absolute value symbols? Are there any packages which provide good methods?
Some options include |x|
and \mid x \mid
, but I'm not sure which is best...
I have been using the code below using \DeclarePairedDelimiter
from the
mathtools
package
[1].
Since I don't think I have a case where I don't want this to scale based on the parameter, I make use of Swap definition of starred and non-starred command [2] so that the normal use will automatically scale, and the starred version won't:
If you want it the other way around comment out the code between \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}
[1] http://www.ctan.org/pkg/mathtools\abs
yet. BTW, I like your "always is generally wrong" :-) - Peter Grill
\dfrac
instead of plain \frac
? - jamaicanworm
\dfrac
in this case to make a larger fraction in inline mode. This is not normally recommended in inline mode as it breaks paragraph spacing. I will update the solution to remove that. - Peter Grill
*
-version for the automatic resizing macro: always using \left
and \right
is wrong, in general. - egreg
\abs
and \norm
which no one seems to have mentioned: since the |
symbol has special meaning in the makeidx
context, trying to enter terminology using a bare |
within \index{...}
will result in (delayed) errors and a lot of hair pulling for someone not really familiar with that usage. commands like the ones shown here (or even just bare \vert
, \Vert
or \mid
) is a lot safer and worth becoming familiar with. - barbara beeton
*
. In my practice, I almost always need the automatic size changes of these delimiters. The great thing about the mathtools
versions is that it's easy to change from one version to another. In many cases, I use starred versions of environments and commands more often than unstarred ones. For example, I usually use equation*
or align*
in final versions of a paper or book. - Máté Wierdl
\abs
solutions here do not work with pandoc for now. Why isn't this basic math operator/function be implemented by default? - Minh Nghĩa
Note if you just use |
you get mathord spacing, which is different from the spacing you'd get from paired mathopen/mathclose delimiters or from \left/\right
even if \left/\right
doesn't stretch the symbol. Personally I prefer the left/right spacing from mathinner here (even if @egreg says I'm generally wrong:-)
\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}
One can also use commath
package.
\documentclass{article}
\usepackage{commath}
\begin{document}
\[ \norm{a \vec{u}} = \abs{a} \, \norm{\vec{v}} \]
\end{document}
\abs{}
of physics
is the better choice in my opinion. - fyaa
commath
package is fundamentally broken and should be avoided, see for example tex.stackexchange.com/questions/135944/commath-and-ifinner - David Carlisle
The
physics
[1] LaTeX package also implements abs
and norm
:
\documentclass{article}
\usepackage{physics}
\begin{document}
\[ c = \abs{-c} \]
\[ \vu{a} = \frac{\vb{a}}{\norm{\vb{a}}} \]
\end{document}
[1] https://www.ctan.org/pkg/physics?lang=enA simple, LaTeX native way of doing this is by using the \|
delimiter, with the standard \left
and \right
modifiers (
source
[1]).
For example:
\left\| \sum_{i=1}^{n} x^2 \right\|
gives
[1] http://www.maths.tcd.ie/~dwilkins/LaTeXPrimer/BracketsNorms.html|
delimiter (without the preceding backslash) inserts a single vertical bar. - pietrodn
\|+a\|
, as you can see this is wrong, and thus generally users should not just use |...|
or \|...\|
as they may accidentally come into situations where this is wrong. I'll leave it as an exercise why this happens. Plus in your example the fences does not need to be that tall. - daleif
\|+a\|
the spacing appears to be wrong, but with \left\|+a\right\|
it appears to be fine. - pietrodn
\left
and \right
should only be added when actually needed (which is actually not often). My complain to your answer is that it is not good in general, for reasons that are explained in comments to other answers in this thread. - daleif
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
%begin equation
\lVert w \rVert
%end equation
\]
\end{document}
For LyX users: maybe I have just overlooked how to do it correctly, but I couldn't find a way of doing this natively.
I thus used a 1x1-Matrix environment and set the kind to determinant. It might just be a hack, but it works fine in my usecase.
If you don't want to use any package, use \mid
.
\vert
doesn't require any package either, and the spacing isn't as awful as with \mid
. - Phelype Oleinik
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{esvect,commath}
\author{Nguyễn Văn Minh Hiếu}
\begin{document}
$\overrightarrow{AB}$\\
$\abs{\vv{AB}}$\\
$\abs[1]{\vv{a}}+\abs[1]{\vv{b}}=\abs[1]{\vv{c}}$\\
\end{document}
\usepackage{amsmath}...\(\lvert x\rvert\)
;\mid
denotes a relation symbol and is wrong for the absolute value. - egreg$\usepackage{mathtools}...\DeclarePairedDelimiter{\vert}{\lvert}{\rvert}
as per your answer to a previous question? tex.stackexchange.com/a/42274/9757 - jamaicanworm\vert
is not a good choice, as it's already defined. - egreg|
symbol? - jamaicanworm|
, but in some situations a certain care is needed. For instance\(|{-1}|=1\)
without the braces would come out wrong, while\(\lvert-1\rvert=1\)
surely gives correct output. - egreg\bigg\vert
Or any kind of combination of\big
,\Big
,\bigg
,\Bigg
and\vert
. - user29243physics
package, but when including a\frac
command, it spits out an error ;( - jjdbmathtools
is a good idea, but use\abs
for the name of the new delimiter, as in\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
- Máté Wierdl