使用带有 Lyx 的 brackett 包实现所见即所得的效果

使用带有 Lyx 的 brackett 包实现所见即所得的效果

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\ketbraket\realket\ket

答案2

这个不便之处终于在 LyX-2.4.0-beta3(格式 616)中得到解决。您只需填写 LyX 框来定义宏在 LyX 中的显示方式,并将 TeX 框留空,一切就会按预期工作。

lyx 宏截图

正如 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).

相关内容