偏个题.
看了一下 phyisics2, 只感觉重新发明了一堆轮子. 并没有比 physics 多出多少东西, 还比 physics 少了很多有用的东西, 文档写得也不好. 感觉健壮性不如 physics, 而且充满了会很快成为 abandonware 的征兆. 建议继续用 physics, 这样期望直接用 \expval{}
, 不用尖括号. latex 是排版语言, 在排版语言上无限追求数学可读性是一条邪路. 如果追求数学可读性, 应该用 mathtype 之类所见即所得的东西. 如果你觉得写 latex 的时候看不见数学不方便, 那可以用 org-elp 之类的包预览.
套用我的使用习惯解决一下你的三个问题:
-
我也习惯同时使用 rainbow-delimiters-mode 和 show-paren-mode, 但是我的尖括号不会被识别, 可能是因为我的 emacs 是自己从白板配置的. 你用 doom, 那么情况可能就是 doom 加了些奇怪东西, 这个上面已经有人说过了. 用 emacs 到最后, 可能都会从头配置吧, 这样才一切都在自己的掌控中. 当然你可以按照其他人的建议把尖括号识别关了, 然后用 physics 的
\expval{}
做期望即可. -
这可能又是一个 doom 的幺蛾子问题. 我的 emacs 中的
\{
是不会被识别为需要配对的括号的, 因为这是转义的花括号, 已经不能算是括号了. 但具体到你这个问题, 你的写法不是 best practice. 这里你需要用用\begin{cases} \end{cases}
环境, 具体看 amsmath 文档 (写数学所有人必用的默认香草包, 你肯定也用了) -
这可能是唯一真正的问题, 我感觉这本质上不是 regexp 可以解决的问题. 我的 emacs 也会报错, 只不过我个人从来遇不上这种不配对括号. 我个人的解决方案是, 当你需要输出
(a
以及b)
这种符号时, 是有意识知道它括号不配对的, 那么你可以写\lparen a
以及b \rparen
. 这两个 paren 命令并不是 latex 或 amsmath 自带的, 你可以加载 mathtools 包获得这两个命令(也是流行的大包, 用了不亏). 如果你不想为区区两个命令加载一个宏包, 那么自己定义即可:
\newcommand{\lparen}{(}
\newcommand{\rparen}{)}
把这两行写在 preamble 就行.
你这样自定义的小命令多了后, 完全可以全都放在自己的一个mystyle.sty
文件里, 放在你的 texmf tree 中, 这样你在 org 里写数学的时候, 一旦想用, 只需要\usepackage{mystyle}
就可以愉快地使用你的这些小命令了.
当然如果你要走自定义命令这条路的话, 你完全可以用更简单的语法来输出你的括号, 比如\lp
\rp
这些你就自行发挥了. 你想用配对花括号\lp{a}
来输出(a
, 这些也可以自己定义