Fontspec 和 Adforn

Fontspec 和 Adforn

当我将 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'.

相关内容