如何在 LaTeX 中创建一组 kets?

如何在 LaTeX 中创建一组 kets?

我想定义一组 ket,这样定义集合的括号就可以与里面的内容一起缩放。我不知道该怎么做,因为我通常使用命令\Set,但如果集合中还有一个 ket,这会出错。以下代码说明了我的问题:

\documentclass[12pt,twoside]{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{braket}
\begin{document}
\begin{equation}
% This works, but the brakets don't scale with the contents inside.
\{ \ket{x} \in \mathcal{H} | \ket{x} = \sum_i c_i \ket{e_i} \}
% The following doesn't work:
%\Set{\ket{x}}
\end{equation}
\end{document}

错误如下:! Missing } inserted.

有没有办法做到这一点?

答案1

braket.sty我们在里面发现

\def\bra#1{\mathinner{\langle{#1}|}}
\def\ket#1{\mathinner{|{#1}\rangle}}
\def\braket#1{\mathinner{\langle{#1}\rangle}}
\def\Bra#1{\left\langle#1\right|}
\def\Ket#1{\left|#1\right\rangle}

并且在\Set宏中,|被激活。我不完全理解为什么\Set{\bra{x}}\Set{\ket{x}}会产生错误,而\Set{\Bra{x}}等不会,但解决这个问题的一个简单方法是重新定义\bra\ket使用其他等效的\vert而不是|

\documentclass[12pt,twoside]{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{braket}

\renewcommand\bra[1]{\mathinner{\langle{#1}\vert}}
\renewcommand\ket[1]{\mathinner{\vert{#1}\rangle}}
\renewcommand\Bra[1]{\left\langle#1\right\vert}
\renewcommand\Ket[1]{\left\vert#1\right\rangle}

\begin{document}

\begin{equation}
\Set{ \ket{x} \in \mathcal{H} | \ket{x} = \sum_i c_i \ket{e_i} }
\end{equation}

\end{document}

方程

答案2

答案没有提到错误消息“missing }”在这里的具体含义。让我解释一下。

TeX 基元\middle必须仅用于与\left和所界定的组相同的组级别\right。因此

$$ \left\{ xxx \middle| yyy \right\} $$

\middlebut的正确用法是

$$ \left\{ {xxx \middle| yyy} \right\} $$

不正确,\middle命令会报告“缺失 } 插入”和“\middle 再次读取”。当然,如果我们接受此处插入,则在处理}时会得到下一个错误“额外 },或忘记 \right” 。yyy}

扩展\Set{abc|def}(粗略地说)为

\left\{ {abc}\middle|{def}} \right\}, 

因为|被设置为数学活动字符(本地,在第一个内部组中)。它扩展为。这是: 在与外部组相同的组级别上}\middle|{的正确用法。但定义为\middle\ket{zzz}

\mathinner{|zzz}

并且因为\Set设置|为数学活动字符,所以\Set{\ker{zzz}}扩展为

\left\{ {\mathinner{ }\middle|{zzz}} \right\}

现在,\middle是在组级别较低时使用的。

相关内容