这是 fancyvrb、fancyhdr 和 fontspec 的错误吗?

这是 fancyvrb、fancyhdr 和 fontspec 的错误吗?

考虑以下(希望是最小的)非工作示例并使用luatex(TeXlive 2016)进行编译:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{texgyrebonum-regular.otf}
\usepackage{fancyvrb}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyfoot[C]{{\addfontfeature{Numbers = SlashedZero}0}}
\begin{document}
\begin{Verbatim}[frame = single]
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
  Test
\end{Verbatim}
\end{document}

我们可以在首页的页脚中看到这一点:

在此处输入图片描述

显然有些地方出了问题。这是 bug 还是我做错了?

答案1

这是发行版中的 fontspec/lua 问题。文件 .../texmf-dist/tex/latex/fontspec/fontspec.lua 的第 29/30 行有以下代码

local function tempswatrue()  tex.sprint([[\FontspecSetCheckBoolTrue ]]) end
local function tempswafalse() tex.sprint([[\FontspecSetCheckBoolFalse]]) end

但是,此代码使用的是当前的 catcode,而不是标准 LaTeX catcode。这两行应该替换为

local latex = luatexbase.registernumber("catcodetable@latex")
local function tempswatrue()  tex.sprint(latex,[[\FontspecSetCheckBoolTrue ]]) end
local function tempswafalse() tex.sprint(latex,[[\FontspecSetCheckBoolFalse]]) end

它使用标准 LaTeX 代码。当然,这应该在官方发行版中更改。

https://github.com/wspr/fontspec/issues/230

相关内容