我是否可以在不修改字体指标的情况下为“eV”声明一个新的自动字距?

我是否可以在不修改字体指标的情况下为“eV”声明一个新的自动字距?

“eV”(电子伏特)单位及其变体(“MeV”、“GeV”、“TeV”等)在核物理学和粒子物理学中被广泛使用。默认情况下,Computer Modern 和其他常见的 TeX 字体不包含预定义的字距来将“e”和“V”拉近,大概是因为这种组合从未出现在“正常”书面语言中。

虽然所需的字距量是字体特定的,当然也可以定义\eV宏等以在特定字体中使用,但许多物理学家并不这样做,因此最终导致他们的文档中的单位相当丑陋。甚至包也siunitx没有用负字距定义其“eV”单位(因为字体特定性)。

为了使问题不那么明显,但不能完美地解决所有字体的问题,我想知道是否可以在 LaTeX 样式/类/序言中定义默认的 eV-negative-kern,以便在标准模板中编写的文档将“自动”获得比默认 eV kern 更好的效果,而无需用户修改字体指标?也许在 LuaTeX 中?

答案1

这在文本模式下有效

\XeTeXinterchartokenstate=1

\newXeTeXintercharclass \eclass
\newXeTeXintercharclass \Vclass

\XeTeXcharclass `\e \eclass
\XeTeXcharclass `\V \Vclass

\XeTeXinterchartoks \eclass \Vclass = {\kern-.15em}

这是siunitx \eV单位

\DeclareSIUnit\electronvolt{e\kern-.15em V}

MWE(使用 XeLaTeX 编译)

\documentclass{article}


\usepackage{fontspec}

\XeTeXinterchartokenstate=1

\newXeTeXintercharclass \eclass
\newXeTeXintercharclass \Vclass

\XeTeXcharclass `\e \eclass
\XeTeXcharclass `\V \Vclass

\XeTeXinterchartoks \eclass \Vclass = {\kern-.15em}


\usepackage{siunitx}

\DeclareSIUnit\electronvolt{e\kern-.15em V}

\begin{document}

eV  

\SI{1}{\eV}

\end{document} 

输出

在此处输入图片描述

相关内容