TL2022 中 pdftex 图形驱动程序、expl3 和 xparse 不兼容

TL2022 中 pdftex 图形驱动程序、expl3 和 xparse 不兼容

我遇到了一个奇怪的编译错误。考虑以下 MWE:

% file test.tex
\documentclass{article}

%\usepackage{mdframed}
%\usepackage{color}

\makeatletter
\input{pdftex.def}
\makeatother

\ExplSyntaxOn
\NewDocumentEnvironment{testenv}{s}
   {
     \IfBooleanT{#1}{true}
   }
\ExplSyntaxOff

\begin{document}
  \begin{testenv}*
    test
  \end{testenv}
\end{document}

尝试编译这个给了我

$ pdflatex test.tex
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./test.tex
LaTeX2e <2021-11-15> patch level 1
L3 programming layer <2022-04-29>
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/article.cls
Document Class: article 2021/10/04 v1.4n Standard LaTeX document class
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def)
(/usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def)
(./test.aux)
(/usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[LoadingMPStoPDFconverter(version2006.09.02).]
! Missing number, treated as zero.
<to be read again> 
                   \relax 
l.136 ...csname newcount\endcsname \scratchcounter
                                                  
?

我不知道问题是什么。

那么我是怎么遇到这种情况的?实际上,我尝试使用包mdframed,该包加载包color,而该包又输入pdftex.def(在处理文档时,pdflatex如输出所示。这\makeatletter是必要的,因为pdftex.def是颜色包的输入。这\ExplSyntaxOn是故意的,因为在我的用例中,我会在某些(自定义)包中声明这样的环境,expl3在本例中不相关。

我追踪到错误是上述 MWE。删除 或 即可消除错误\input{pdftex.def}\ExplSyntaxOn/Off此外,\NewDocumentCommand似乎在上述示例中有效。

因此,由于我不知道此错误是如何发生的,至少对我来说,我希望该示例能够正常工作,所以我被困在这里。我是否安装了错误/缺失的驱动程序?或者这是 TeXLive 中一些可重现的错误?

如果相关的话:我正在运行 Arch Linux 并使用 unix 安装脚本安装了 TexLive 2022。TeXLive 也已完全更新(tlmgr update --all)。

答案1

您缺少 的括号参数\NewDocumentEnvironment,这意味着\ExplSyntaxOff被当作参数。这意味着\beg{document} has\ExplSyntaxOn`,这意味着某些项目的空格标记错误。修复这个问题,问题就会消失。

相关内容