我在我的博士论文中使用了该字体系列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}