![mhchem 中的奇怪箭头——包、字体或 LuaTeX 中存在错误?](https://linux22.com/image/374879/mhchem%20%E4%B8%AD%E7%9A%84%E5%A5%87%E6%80%AA%E7%AE%AD%E5%A4%B4%E2%80%94%E2%80%94%E5%8C%85%E3%80%81%E5%AD%97%E4%BD%93%E6%88%96%20LuaTeX%20%E4%B8%AD%E5%AD%98%E5%9C%A8%E9%94%99%E8%AF%AF%EF%BC%9F.png)
我在我的博士论文中使用了该字体系列mhchem
的包。Libertinus
使用 LuaTeX 排版时,表示反应的箭头会出现一些奇怪的问题。以下是重现我问题的 MWE。
%! TEX program = lualatex
\documentclass[varwidth=true, border=10pt, convert={size=640x}]{standalone}
\usepackage[version=4]{mhchem}
\usepackage{unicode-math}
\setmainfont[Numbers={Proportional},Ligatures={TeX, Common%, Historic, Contextual, Rare, Discretionary
}]{Libertinus Serif}
\setmonofont[Scale=0.8]{Libertinus Mono}
\setsansfont{Libertinus Sans}
\setmathfont{Libertinus Math}
\begin{document}
\ce{A <=> B + C}
\vspace{5mm}
\ce{A <-->[long forward]B + C}
\vspace{5mm}
\ce{X <-->Y + Z}
\end{document}
此代码生成以下 PDF 输出
在第一个方程中,请注意正向反应中奇怪的断裂。在第二个方程中,很明显箭头不是笔直的。正向反应箭头明显向上弯曲,而反向反应似乎也是由两个单独的箭头组成,存在重叠误差。第三个方程也显示了同样的问题,但你必须眯起眼睛才能看到问题。
我先尝试使用 TL2017,然后尝试使用 Tl2018-pretest,但两者中都存在相同的问题。问题的根源可能是什么?如何解决?
答案1
我认为字体是主要问题。右侧的鱼叉太高了。但如果 mhchem(使用 lualatex)使用箭头的可扩展版本,而不是尝试使用 amsmath 组装它们,那就更好了——但调整 mhchem 在这里无济于事,因为字体没有所有需要的箭头,而现有的箭头并非全部可扩展。
所以最好的办法是使用 pgf 箭头:
\documentclass[varwidth=true, border=10pt, convert={size=640x}]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usepackage[version=4]{mhchem}
\mhchemoptions{arrows=pgf}
\usepackage{unicode-math}
\setmainfont[Numbers={Proportional},Ligatures={TeX, Common%, Historic, Contextual, Rare, Discretionary
}]{Libertinus Serif}
\setmonofont[Scale=0.8]{Libertinus Mono}
\setsansfont{Libertinus Sans}
\setmathfont{Libertinus Math}
\begin{document}
\ce{A <=> B + C}
\vspace{5mm}
\ce{A <-->[long forward]B + C}
\vspace{5mm}
\ce{X <-->Y + Z}
\end{document}