该braket
包定义了 Dirac 的括号符号。为了在 Lyx 中使用它,我添加了以下行:
\usepackage{braket}
到 LaTeX 前言部分。然后 Lyx 将能够编译诸如\bra
和 之类的命令\ket
。问题是 Lyx 编辑器本身无法识别这些命令。
如果不使用braket
包,我已经为命令 、 等定义了数学宏\bra
,\ket
我可以告诉 Lyx 这些内容在编辑器中应该如何显示。也就是说,我可以告诉它在\rangle
参数之前放置一个(Lyx 知道如何绘制)并在其后放置一个|
。
有没有办法使用包中的\bra
、\ket
等命令braket
,同时仍然能够告诉 Lyx 这些命令在编辑器中应该如何显示?
编辑:发布后,我发现这问题,其中提到了 Lyx 的即时预览功能。虽然这在某种程度上解决了我的问题,但这并不是我想要的。我希望能够指定命令在编辑器中应该是什么样子,就 Lyx 已经识别的其他命令而言(在编辑器中),就像我对数学宏所做的那样。
答案1
放置\let\realket\ket
在您的前言中,然后\ket
使用 LyX 的新命令功能重新定义,为 LyX 提供要使用的 TeX 代码和要显示的 LyX 代码。
\let
,例如\def
,需要两个参数。当您说 时\let\realket\ket
,您指示 TeX 复制定义进入。这与 不同,因为本身在 的定义中没有提及(如果我没记错的话,它是单层深度复制),而只是“指向” ,其中s 的定义可能随时更改。由于from的定义保存在 中\ket
,因此您可以随意重新定义为您想要的任何内容 :)\realket
\def
\ket
\realket
\def\realket\ket
\realket
\ket
\ket
\ket
braket
\realket
\ket
答案2
这个不便之处终于在 LyX-2.4.0-beta3(格式 616)中得到解决。您只需填写 LyX 框来定义宏在 LyX 中的显示方式,并将 TeX 框留空,一切就会按预期工作。
正如 LyX 源代码中所写:
* Format incremented to 616: Do not output LaTeX for a macro if the LaTeX part is empty
- This allows the user to define the LyX display for LaTeX commands
that are already defined (e.g., in user preamble or a package).