![如何渲染“双”ket](https://linux22.com/image/443317/%E5%A6%82%E4%BD%95%E6%B8%B2%E6%9F%93%E2%80%9C%E5%8F%8C%E2%80%9Dket.png)
我希望渲染出类似凯特(来自braket
包),但每行都“加倍”。例如,类似这样的内容:
我希望它...
- 垂直拉伸以包含内容,
\ket{x}
就像 - 在其下方规定相同的位置放置下标
\ket{x}_n
。
以下是一些不充分的尝试(均使用braket
包中的命令):
\ket{\ket{x}}
。它看起来像这样:呸!
\| x \rangle!\rangle
。它看起来像这篇文章中的第一张图片,但它没有垂直扩展,并且没有将下标放在正确的位置。例如
\| \frac{x}{y} \rangle\!\rangle
看起来像看起来
\| x \rangle!\rangle_y
像\ket{\!\ket{x}\hspace{-2.7pt}}
.这将渲染好的,但行与行之间的间距随着内容的高度而变化。
我怎样才能实现视觉上类似\|x\rangle!\rangle
但垂直方向正确拉伸以包含其内容,并将下标置于与相同的垂直位置的功能\ket{x}
?这将专门用于数学环境。
答案1
amssymb
在和大多数其他包中,‖ 是,\Vert
它还有\lVert
和\mathopen{Vert}
的\rVert
别名\mathclose{Vert}
。
许多软件包将 ⟫ 数学符号定义为\rAngle
,少数软件包将其定义为\rrangle
。类似地,还有\lAngle
。这适用于unicode-math
,或参阅旧版 8 位软件包的综合 LaTeX 符号列表。您不想使用法式引号,因为它们在数学模式下无法正确缩放。
成对的、大小合适的分隔符的宏mathtools
对于此非常方便。
\documentclass{article}
\usepackage{mathtools}
\usepackage{newcomputermodern} % Or stix2, etc.
\DeclarePairedDelimiter{\Bra}{\lAngle}{\rVert}
\DeclarePairedDelimiter{\Ket}{\lVert}{\rAngle}
\begin{document}
\[ \Bra*{\frac{x^2}{2}} \; \Ket{y} \; \Ket[\big]{x_i^n}
\]
\end{document}
该newcomputermodern
包需要 LuaLaTeX 或 XeLaTeX,但您可以替换您选择的字体包。
如果你需要一个三参数双括号来缩放其内部分隔符,则有一个代码示例手册第 3.6 节mathtools
。
答案2
我从中得到了一些灵感这个很好的答案并提出了这种方法:
\documentclass{article}
\newsavebox{\mstrut}
\newcommand{\bbra}[1]{%
\sbox{\mstrut}{\(#1\)}%
\mathinner{\left\langle\kern-0.5\ht\mstrut\left\langle{#1}\right|\mkern-2mu\right|}%
}
\newcommand{\kett}[1]{%
\sbox{\mstrut}{\(#1\)}%
\mathinner{\left|\mkern-2mu\left|{#1}\right\rangle\kern-0.5\ht\mstrut\right\rangle}%
}
\begin{document}
$\bbra{x}_n$
$\kett{x}_n$
$\bbra{\frac{x}{y}}_n$
$\kett{\frac{x}{y}}_n$
\end{document}