物理包很有用
我的许多 LaTeX 文档都大量使用了物理包。除了重载几个标准命令(例如\sin
,\abs
等)之外,它还使一些缩写变得非常方便(例如\order
)。它还使排版矢量微积分、普通/偏/变分导数、线性代数(括号符号和矩阵)和其他领域变得轻松得多。我认为可以肯定地说它填补了市场空白。
物理软件包不受欢迎
尽管我列出了使用该软件包的优点,但也存在一些缺点。它使用\xparse
可能会产生一些间距问题(这些通常是极端情况,但并不少见),并且语法可能违反直觉。因此,每当我(或其他人)发布涉及该软件包的问题时,一个常见的主题就是避开物理学:
- 考虑到实现的质量,解决此问题的最佳方法是不使用物理包,亨利·门克。
- 我最好的建议是远离物理学,例如。
(我确信外界对该套餐的负面评价可能会更多)。
还有什么替代方案?
我很好奇,大家认为哪些是好的替代品?我首先想到的是:
- 继续使用物理并希望宏得到改进(不太可能?)。
- 尝试重写我最常用的几个宏,但要更好(我怀疑我的实现是否会很棒)。
- 已经存在另一个等效的软件包可以解决这些问题,但我尚未找到。
- 将其全部输入出来并放弃对方便的数学宏的所有希望。
虽然最后一个选项有点夸张,但我认为最重要的问题是:“是使用不理想/有缺陷的受支持软件包更好,还是我应该尝试重新发明轮子?”这是我在考虑软件包时经常遇到的问题。我目前的理念是始终使用软件包/模块,永远不要重新发明轮子。更熟练/有经验的用户会推荐什么?
答案1
答案2
这很可能不会对你有帮助,我甚至不知道这是否是一个“好的”解决方案,但我只是从中复制了我需要的代码physics
作为第一个入口点(主要\bra
是\ket
量子物理学),然后查看了它。 的问题是由代码中毫无理由地出现的physics
空格引起的。举个例子:\vphantom
\ket
\DeclareDocumentCommand\ket{ s m }
{ % Ket
\IfBooleanTF{#1}
{\vphantom{#2}\left\lvert\smash{#2}\right\rangle} % No resize
{\left\lvert{#2}\right\rangle} % Auto sizing
}
只需删除它\vphantom
,它就可以正常工作。与此包的其他定义相同。
编辑(2022 年 10 月 9 日):我现在实际上使用的是(使用mathtools
包的更好的解决方案,当使用文档中的星号版本时,它具有自动调整大小等所有功能,甚至可以为特定大小的括号提供可选参数):
\DeclarePairedDelimiter{\bra}{\langle}{\rvert}%
\DeclarePairedDelimiter{\ket}{\lvert}{\rangle}%
\DeclarePairedDelimiterX\innerp[2]{\langle}{\rangle}{#1\delimsize\vert\mathopen{}#2}%
\DeclarePairedDelimiterX\braket[2]{\langle}{\rangle}{#1\delimsize\vert\mathopen{}#2}%
\DeclarePairedDelimiterX\braketOP[3]{\langle}{\rangle}{#1\,\delimsize\vert\,\mathopen{}#2\,\delimsize\vert\,\mathopen{}#3}%
\DeclarePairedDelimiterX\ketbra[2]{\lvert}{\rvert}{#1\delimsize\rangle\!\delimsize\langle#2}%
\DeclarePairedDelimiterX\outerp[2]{\lvert}{\rvert}{#1\delimsize\rangle\!\delimsize\langle#2}%
\DeclarePairedDelimiterX\projector[1]{\lvert}{\rvert}{#1\delimsize\rangle\!\delimsize\langle#1}%