我使用 brackett 包来使用 brackett 符号。它工作正常,但我使用该包编写张量积时遇到了一些问题。
笔者认为,内衣和胸罩之间总是存在很大差距\ket{x}\bra{x}
。所以我想让它像|x><x|
,又不像|x> <x|
。有谁知道这个问题,也许还有解决办法?
例子:
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{braket}
\begin{document}
\begin{align*}
\ket{x}\bra{x}
\end{align*}
\end{document}
答案1
\bra
这是“设计使然”。和的定义\ket
是
% braket.sty, line 31:
\def\bra#1{\mathinner{\langle{#1}|}}
% braket.sty, line 32:
\def\ket#1{\mathinner{|{#1}\rangle}}
并\mathinner
在建筑物的两侧增加了一个狭窄的空间。
如果你想删除这些额外的细小空间(顺便说一句,这不是一个坏主意),你可以重新定义它们,例如
\renewcommand\bra[1]{{\langle{#1}|}}
\renewcommand\ket[1]{{|{#1}\rangle}}
\langle
然而,和的侧边距\rangle
仍然会留下一个洞。
\documentclass[10pt,a4paper]{article}
\usepackage{braket}
\renewcommand\bra[1]{{\langle{#1}|}}
\renewcommand\ket[1]{{|{#1}\rangle}}
\begin{document}
\[
\ket{x}\bra{x}
\]
\[
\ket{x}\!\bra{x}
\]
\end{document}
您可以检查 a 是否\bra
紧跟 a \ket
:
\documentclass[10pt,a4paper]{article}
\usepackage{braket}
\renewcommand\bra[1]{{\langle{#1}|}}
\makeatletter
\renewcommand\ket[1]{%
\@ifnextchar\bra{\k@t{#1}\!}{\k@t{#1}}%
}
\newcommand\k@t[1]{{|{#1}\rangle}}
\makeatother
\begin{document}
\[
\ket{x}\bra{x}
\]
\end{document}
答案2
扩展egreg 的回答,如果你想在移动参数中使用无空格版本的命令,比如标题中的参数,你应该让它们变得健壮。所以
\documentclass{article}
\usepackage{graphicx}
\usepackage{braket}
\makeatletter
\DeclareRobustCommand\ket[1]{%
\@ifnextchar\bra{\k@t{#1}\!}{\k@t{#1}}%
}
\newcommand\k@t[1]{{|{#1}\rangle}}
\makeatother
\begin{document}
\begin{figure}[t]
\centering\includegraphics[width=\textwidth]{example-image-a}
\caption{My cool caption $\ket{a}\bra{b}$.\label{fig:a}}
\end{figure}
\end{document}