当我将 adforn 与我的文档一起加载时,我总是收到一个奇怪的错误。这归结为 fontspec 将编码从 U 更改为 TU,然后它抛出一个错误并自动用默认值更新编码。
我已通过在我的 texmf 中创建一个名为 TUOrnementsADF.fd 的新文件解决了这个问题,该文件包含与 Uornements 相同的内容。我想知道是否有更好的方法来解决这个问题。(或者这是否能让维护者修复这个问题)。
这真的让我很困扰,因为我使用 vim-latexsuite,它会自动将此视为错误并带我到错误来源的文件。顺便说一句。
MWE:
\documentclass{article}
\usepackage{adforn}
\usepackage{fontspec}
\begin{document}
Hi\adfast{1}
\end{document}
答案1
这个问题是 中的一个小错误adforn.sty
,它在开始时
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{adforn}[2010/07/25 v1.0 adforn CFR]
\RequirePackage{pifont}
\Pifont{OrnementsADF}
但最后一个调用应该用括号括起来。结果是OrnementsADF
成为当前字体并fontspec
尝试使用 TU 编码加载它,但任务失败。文档中的\adforn
或调用\adfast
不受影响。
解决方法:加载adforn
之后fontspec
(或其他依赖于它的包,例如polyglossia
),但这个问题应该像这样修复
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{adforn}[2010/07/25 v1.0 adforn CFR]
\RequirePackage{pifont}
{\Pifont{OrnementsADF}}
因此,当前字体的改变(只需要加载文件.fd
)不会在组端继续进行。
结尾处也采用了同样的策略pifont.sty
:
[...]
\newcommand{\ding}{\Pisymbol{pzd}}
\def\dingfill#1{\Pifill{pzd}{#1}}
\def\dingline#1{\Piline{pzd}{#1}}
\newenvironment{dinglist}[1]{\begin{Pilist}{pzd}{#1}}%
{\end{Pilist}}
\newenvironment{dingautolist}[1]{\begin{Piautolist}{pzd}{#1}}%
{\end{Piautolist}}
{\Pifont{pzd}}
{\Pifont{psy}}
\endinput
%%
%% End of file `pifont.sty'.