将 hepparticles 与 breqn 结合使用

将 hepparticles 与 breqn 结合使用

我想在同一个文档中同时使用这两个包hepparticles和。但是包似乎不能很好地与配合使用。这是一个最小的不工作示例。breqnhepparticlesbreqn

\documentclass{article}
\usepackage{hepparticles}
\usepackage{breqn}
\begin{document}
This is the notation for an electron neutrino \HepParticle{\nu}{e}{}.\\
This is the notation for an electron anti-neutrino \HepAntiParticle{\nu}{e}{}.
\end{document}

使用 pdflatex 进行编译会显示希腊字母的奇怪符号\nu,尽管下标“e”显示正常。

在此处输入图片描述

不使用时,该\HepParticle命令工作正常breqn。有没有办法可以同时使用包hepparticlesbreqn

答案1

一个真正最小的例子实际上并不需要hepparticle

\documentclass{article}
\usepackage{breqn}

\begin{document}

$\mathit{\nu}$

\end{document}

如果你尝试一下,你会看到和你的代码一样奇怪的符号,这是斜体字体的环形重音。事实上,最终\HepParticle{\nu}{e}{}想要做的

\mathit{\nu}

这样的命令只会生成一个标准的 nu 字母,带有默认的 LaTeX 设置;hepparticles使用它来将字母变为斜体,但不使用数学斜体。

但是,breqn(或者,更好的是flexisym)改变了 的含义,\nu因此如果 是 的参数,它本质上会给出一个随机结果\mathit。出于非常奇怪的原因,希腊字母被重新声明为flexisym类型 7 而不是 0,因此它们遵循当前的数学组。

您可以修复\nu,但其他字符可能也会有类似的问题。查看cmbase.sym并复制有问题的定义,将其更改VarOrd,就像我对 所做的那样\nu

\documentclass{article}
\usepackage{hepparticles}
\usepackage{breqn}

% Fix the wrong assignment to \nu
\DeclareFlexSymbol{\nu}{Ord}{greek}{17}

\begin{document}
Electron neutrino \HepParticle{\nu}{e}{}.

Electron anti-neutrino \HepAntiParticle{\nu}{e}{}.
\end{document}

在此处输入图片描述

这显然是 的一个错误flexisym;但我通常建议不要使用它breqn。这个想法不错,但根本行不通。


另一方面,至少这个例子似乎可以正常工作unicode-math。使用 XeLaTeX 进行编译:

\documentclass{article}
\usepackage{hepparticles}
\usepackage{breqn}
\usepackage{unicode-math}

\begin{document}
Electron neutrino \HepParticle{\nu}{e}{}.

Electron anti-neutrino \HepAntiParticle{\nu}{e}{}.
\end{document}

在此处输入图片描述

答案2

现在有了一个 breqn 的替代方案:自动断线最近发布了一个软件包。它不如 breqn 复杂,例如,它要求您在可能的断点处放置换行符。但是,根据我的经验,它与其他软件包的冲突较少。

相关内容