有使用带有 fontspec、luatex 的 silent 包的经验吗?

有使用带有 fontspec、luatex 的 silent 包的经验吗?

以下 MWE 对我来说不起作用:

% !TeX program = LuaLaTeX
% !TeX encoding = UTF-8
\documentclass{minimal}
\RequirePackage{silence}
\ErrorFilter*{fontspec}{The}
\RequirePackage{fontspec}
\setmainfont{DoesNotExist}
\begin{document}
It was a dark and stormy night.
\end{document}

我的目标是过滤掉上面fontspec提到的错误消息The font "DoesNotExist" cannot be found.,我使用“The”作为唯一的过滤词,因为我不确定它是否fontspec在消息中加入了不间断空格。从silence软件包文档中,我预计带星号的命令将在编译期间过滤错误消息。但结果并不理想。

可能是fontspec,或者luatex,或者expl3fontspec.sty 中使用的语法与不兼容silence?还是我做错了什么?

我的最终目标是捕捉fontspec特定字体的错误,并替换对我更有帮助的错误消息。

答案1

silence包对所生成的消息不做任何操作fontspec,而是使用这些expl3功能。

错误信息是

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! fontspec error: "font-not-found"
! 
! The font "DoesNotExist" cannot be found.
! 
! See the fontspec documentation for further information.
! 
! For immediate help type H <return>.
!...............................................  

如果您想消除警告或错误消息,有一个简单的重定向机制:

\documentclass{article}
\usepackage{fontspec}

\ExplSyntaxOn
\msg_redirect_name:nnn { fontspec } { font-not-found } { none }
\ExplSyntaxOff

\setmainfont{DoesNotExist}

\begin{document}

It was a dark and stormy night.

\end{document}

然而,这最终会导致较低级别的错误消息:

! Font \EU2/DoesNotExist(0)/m/n/10=DoesNotExist:mode=node;+tlig; at 10pt not lo
adable: metric data not found or bad.

相关内容