我想知道一种有效的方法来生成内积符号,例如
\[
\langle\langle u, v \rangle\rangle
\]
(即双尖括号),或类似
\[
\lvert\lVert x \rVert\rvert
\]
(即三条杠)。当然,上面的例子很糟糕,不尊重空格。有没有一种有效的方法可以做到这一点,以便分隔符可扩展(与$\left$
和兼容$\right$
)?
我知道这个包裹纳特,但它与 amsmath 完全不兼容,并且会产生数千个错误,因此不是一个选项。我也尝试过使用“DeclareMathDelimiterX”数学模式,但无法让它像我希望的那样正常工作。
答案1
奇怪的是,解毒没用。另一个很好的来源是综合 LaTeX 符号列表,其答案如下:
对于第一个分隔符对,请使用包中的\llangle
和(如上文 Martin 的评论中所述)。对于第二对,您可以尝试使用。\rrangle
MnSymbol
\vvvert
mathabx
答案2
你可能想尝试unicode-math
使用合适的字体,因为 Unicode 有⟪双角⟫和⦀三条杠⦀。因此您可以写\left⦀
或\right⟫
,无需丑陋的黑客,间距也正确。为了增加趣味性,您可以使用mathtools
例如
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{unicode-math}
\setmathfont{XITS Math}
\DeclarePairedDelimiterX\innprod[2]{⟪}{⟫}{#1\delimsize|#2}
\begin{document}
$\innprod*{\frac{a}{ξ}}{b}$
\end{document}
答案3
先前对\llangle
和的回答\rrangle
都很好。
虽然这有点儿像 hack,但三重顶点的代码取得了良好的效果:
\makeatletter
\def\@tvsp{\mathchoice{{}\mkern-4.5mu}{{}\mkern-4.5mu}{{}\mkern-2.5mu}{}}
\def\ltrivert{\left|\@tvsp\left|\@tvsp\left|}
\def\rtrivert{\right|\@tvsp\right|\@tvsp\right|}
\makeatother
使用\left
和\right
使用\interleave
可能也会很好用;从未尝试过,因为在stmaryrd
字体可用之前我们就需要这些符号。