使用 TeXLive 和这个 MWE
\documentclass{article}
\usepackage{expl3}
\usepackage{l3regex}
\begin{document}
a
\end{document}
我收到未定义控制序列的错误
(/usr/share/texlive/texmf-dist/tex/latex/l3experimental/l3str/l3tl-analysis.sty
Package: l3tl-analysis 2011/12/08 v3039 L3 Experimental token lists analysis
(/usr/share/texlive/texmf-dist/tex/latex/l3experimental/l3str/l3str.sty
Package: l3str 2013/04/24 v4482 L3 Experimental strings
)
! Undefined control sequence.
<recently read> \__scan_new:N
l.54 \__scan_new:N
\s__tl
我估计是某些 L3 软件包不兼容(太旧)。但是,Debian 软件包过去在解决依赖关系方面表现得相当好。您能帮我一下吗?
答案1
问题中的文件版本:
Package: l3tl-analysis 2011/12/08 v3039 L3 Experimental token lists analysis
Package: l3str 2013/04/24 v4482 L3 Experimental strings
都“匹配”(这种组合应该没有问题)。因此问题一定出在其他地方。由于\__scan_new:N
未定义,我认为您l3kernel
安装的是旧版本,该版本早于“扫描标记”方法的引入。因此,解决方案是.log
仔细检查您的文件,了解expl3
各个组件包的加载位置和加载位置。它们都应该来自同一棵树。
答案2
在 2020 年,如果你遇到了这个问题,那是因为l3regex
已被纳入内核并且您从其他地方复制了使用 的代码\__scan_new:N
。
在里面LaTeX3 接口文档,此命令已被 取代\scan_new:N
,只需简单重命名即可解决此错误。此外,\usepackage{l3regex}
从文档中删除(如果它存在并且您的文档正在编译)。