我使用这个包newpx
使用 pdflatex(在 Ubuntu 20.04 上,texlive 安装),我看到“字形‘section’未定义”错误。这是一个最小的工作示例和输出:
\documentclass{article}
\usepackage{newpx}
\showoutput
\begin{document}
a b \S a b § a b
Palatino
\end{document}
错误日志:
pdfTeX warning: pdflatex (file /usr/local/texlive/2023/texmf-dist/fonts/type1/public/newpx/zplr.pfb): glyph `section' undefined
我看到这里有很多问题报告了这个问题(示例 1,示例 2)。有些答案建议使用\pdfinclusioncopyfonts=1
)。有些答案建议在序言中此评论说
\pdfinclusioncopyfonts
是一种解决方法。[...] 真正的解决方案是修正内部字体名称。
如何纠正内部字体名称,或者如何检查它们是否存在问题?
在我的系统中,我只看到一个安装和使用的TeXGyrePagella
字体,所以我不明白“内部字体名称”是什么意思。zplr
newpx
我是否应该向 的维护者提交错误newpx
?
顺便说一下,这个newpxtext
包裹也发生过这种情况,但我不记得一年前发生过这种情况。
答案1
在低级 PostScriptpfbtopfa
上运行时会出现错误。zplr.pfb
所以这肯定是最新版本的一个错误zplr.pfb
。
临时解决方法:
\documentclass{article}
\usepackage{newpx}
\ExplSyntaxOn
\NewCommandCopy\latextextsection\textsection
\RenewDocumentCommand{\textsection}{}
{
\str_if_eq:eeTF { \use:c { f@family } } { \familydefault }
{
{\fontfamily{qpl}\selectfont\latextextsection}
}
{\latextextsection}
}
\ExplSyntaxOff
\begin{document}
a b \S a b § a b
Palatino
\textsf{a b \S a b § a b}
\end{document}
这将使用 TeX Gyre Pagella 来表示缺失的字形,但前提是字体系列是默认的。