我想用 TeX Gyre Schola 写一些科学文本,因为与 Latin Modern Roman 相比,我喜欢它增加的粗体。
不幸的是,我注意到变量和其直立下标之间的间距看起来非常奇怪。例如,和$v_{\mathrm{eff}}$
之间的距离太大。v
e
pdflatex
为了进一步调查,我将字体改回拉丁现代罗马字体,并比较了和之间的输出luatex
,发现下标来自luatex
比其对应方远一点pdflatex
。
那么问题是什么?luatex
字体系统真的很糟糕吗?还是我使用了错误的语法?或者,有简单的解决方法吗?
\documentclass[paper=a4]{article}
\usepackage{iftex}
% math
\usepackage{amsmath}
\ifPDFTeX
\usepackage{amsfonts}
\usepackage{amssymb}
\fi
% font
\ifPDFTeX
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\fi
\ifLuaTeX
\usepackage{fontspec}
\usepackage[math-style=ISO,bold-style=ISO]{unicode-math}
\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern Math}
%\setmainfont{TexGyre Schola}
%\setmathfont{TexGyre Schola Math}
\fi
\begin{document}
\begin{align}
v_{\mathrm{eff}}
\end{align}
\end{document}
答案1
在确定产出差异的来源/原因时需要小心谨慎。当然,
\documentclass{standalone}
\begin{document}
$v_{\mathrm{eff}}$
\end{document}
可以使用 pdfLaTeX 和 LuaLaTeX 进行编译。重要的是,无论使用 pdfLaTeX 还是 LuaLaTeX,它都会根据下标项的相对位置产生相同的结果。(我在运行 MacTeX2015/LuaTeX0.8 或 TeXLive2016-prerelease/LuaTeX0.95 的系统上进行了测试。)
您发现的差异的原因似乎是unicode-math
包,它已加载到您的示例代码中(但未加载到上面的迷你示例中)。具体来说,如果加载了包,LuaTeX 似乎会使用“非拥挤”样式对下标项进行排版unicode-math
,而如果未加载包,LuaTeX 会使用“拥挤”样式对下标进行排版(pdfLaTeX 也是如此)unicode-math
。我不知道为什么unicode-math
会产生这种效果。我也不知道这种效果是否是故意的。