为什么 newtxmath 无法与 pdflatex 和 libertine 一起使用

为什么 newtxmath 无法与 pdflatex 和 libertine 一起使用

newtxmath包和之间似乎存在某种不兼容性libertine-legacy;以下代码无法编译:

 \documentclass{article}
 \usepackage[libertine]{newtxmath}
 \begin{document}
 $a = 1$
 \end{document}

当通过编译时pdflatex,它会导致 latex 尝试查找Libertine-nu似乎不存在的字体:

kpathsea: Running mktextfm Libertine-nu
/usr/local/texlive/2012/texmf/web2c/mktexnam: Could not map source abbreviation L for Libertine-nu.
/usr/local/texlive/2012/texmf/web2c/mktexnam: Need to update /usr/local/texlive/2012/texmf-dist/fonts/map/fontname/special.map?
mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input Libertine-nu

我从以下位置安装了该软件包的最新版本:http://mirrors.ctan.org/install/fonts/libertine-legacy.tds.zip今天,之前没有尝试过,所以不知道这是否是最近的破损。

我宁愿继续使用,pdflatex因为该microtype软件包似乎还不能很好地与lualatex或配合使用xelatex。将软件包更改为使用该libertineotf软件包并进行编译xelatex确实有效。

答案1

我假设您使用的是最新版本的 newtx 软件包,它附带了 Libertine 字体的精简版。不幸的是,有一个小的打包错误:文件Libertine-nu.tfm的大小写错误。更改

/usr/local/texlive/2012/texmf-dist/fonts/tfm/public/newtx/libertine-nu.tfm

/usr/local/texlive/2012/texmf-dist/fonts/tfm/public/newtx/Libertine-nu.tfm

应该可以解决问题。

答案2

这确实是一个非常隐蔽的错误。我在nxlmia.vf虚拟字体文件中追踪到了它。

如果从 Bash shell 运行vftovp $(kpsewhich nxlmia.vf),输出将显示

(VTITLE )
(FAMILY UNSPECIFIED)
(FACE F MRR)
(CODINGSCHEME FONTSPECIFIC)
(DESIGNSIZE R 10.0)
(COMMENT DESIGNSIZE IS IN POINTS)
(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
(CHECKSUM O 24175074123)
(SEVENBITSAFEFLAG TRUE)
(FONTDIMEN
   (SLANT R 0.0)
   (SPACE R 0.25)
   (STRETCH R 0.3)
   (SHRINK R 0.1)
   (XHEIGHT R 0.478)
   (QUAD R 1.0)
   (EXTRASPACE R 0.06)
   )
(MAPFONT D 0
   (FONTNAME rfxlr-alt)
   (FONTCHECKSUM O 30127131230)
   (FONTAT R 1.0)
   (FONTDSIZE R 10.0)
   )
(MAPFONT D 1
   (FONTNAME Libertine-nu)
   (FONTAT R 1.0)
   (FONTDSIZE R 10.0)
   )
(MAPFONT D 2
   (FONTNAME txmia)
   (FONTCHECKSUM O 4141071701)
   (FONTAT R 1.0)
   (FONTDSIZE R 10.0)
   )
[...]

错误出现在指令中MAPFONT D1,其中请求的字体是不存在的Libertine-nu。所有其他需要它的虚拟字体都会调用LibertineZI-nu存在的字体。

临时解决方案

从 Bash shell 运行

cp $(kpsewhich libertine-tfm) Libertine-nu.tfm
vftovp $(kpsewhich nxlmia.vf) > nxlmia.vpl

跑步

vptovf nxlmia.vpl

nxlmia.tfm并将生成的文件保存nxlmia.vf在与您正在处理的文档相同的目录中Libertine-nu.tfm

如果您足够大胆,您可以移动这两个文件来替换 TeX Live(或 MiKTeX)提供的文件。当newtx更新以纠正此问题时,除了删除这三个文件外,无需执行任何其他操作。

相关内容