对于某些自动化测试,我需要一个以完全相同的方式呈现简单数学的文档,一个有unicode-math
,一个没有。下标不同的问题目前正在阻止这种情况发生。
您能帮我设置两个文档,使之$a_b$
看起来简单到 100% 相同吗?
也许这可以通过使用存在两种变体的数学字体来实现。
\documentclass{minimal}
\begin{document}
$a_b$
\end{document}
\documentclass{minimal}
\usepackage{unicode-math}
\begin{document}
$a_b$
\end{document}
答案1
如果您使用 unicode-math,那么您正在使用不同的字体和不同的布局引擎(Unicode Math 字体和经典 Tex 数学字体的设置非常不同)但是,如果您对两者都使用拉丁现代字体,您可以预期字形相似,并且您应该能够使指标相似。
XeTeX 根据 OpenType 数学字体表设置字体参数,但我不知道如何稍后更改这些值(您可以更改 fontdimen 设置但它们没有效果)但是您可以将 PDFtex 设置为匹配 xetex。
a.pdf
是 pdftex 和b.pdftex
xetex 生成的
pdflatex --jobname=a file
xelatex --jobname=b file
哪里file.tex
\documentclass{article}
\ifx\Umathchar\undefined
\usepackage{lmodern}
\else
\usepackage{unicode-math}
\fi
\begin{document}
\showoutput
\sbox0{$x$}
\ifx\Umathchar\undefined
\fontdimen16\textfont2=2.47pt
\else
\fi
$a_b$
\end{document}
xetex 显示
....\TU/latinmodern-math.otf(1)/m/n/10 glyph#1296
....\hbox(4.86658+0.07013)x4.0202, shifted 2.47003
.....\TU/latinmodern-math.otf(1)/m/n/7.01236 glyph#1405
默认情况下,pdftex 会进一步降低下标,但通过设置 fontdimen 16 t0 2.47pt 您会得到:
....\OML/lmm/m/it/10 a
....\hbox(4.8611+0.0)x4.01666, shifted 2.47
.....\OML/lmm/m/it/7 b
看起来差不多一样......