如何渲染“双”ket

如何渲染“双”ket

我希望渲染出类似凯特(来自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}

在此处输入图片描述

相关内容