我遇到了一个奇怪的编译错误。考虑以下 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`,这意味着某些项目的空格标记错误。修复这个问题,问题就会消失。