从 TeX Live 2020 开始,lgrind.dtx 不再编译,新的 latex3 核心可能存在问题?

从 TeX Live 2020 开始,lgrind.dtx 不再编译,新的 latex3 核心可能存在问题?

我最初在 tldistro 邮件列表上提出了这个问题(我是 OpenBSD 的 TeX Live 包维护者),Karl Berry 建议我在这里发布。

lgrind.dtx不再构建(它使用 TeX Live 2019 构建)。

编译步骤如下:

  • latex lgrind.ins
  • latex lgrind.dtx(两次)

这应该会生成lgrind.dvi

以下是 TeX Live 2020 的功能:

$ latex lgrind.ins
... (this bit works fine)
$ latex lgrind.dtx
This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020-OpenBSD_Ports) (preloaded format=latex)
 restricted \write18 enabled.
entering extended mode
(./lgrind.dtx
LaTeX2e <2020-02-02> patch level 5
L3 programming layer <2020-03-06>
(/usr/local/share/texmf-dist/tex/latex/base/ltxdoc.cls
Document Class: ltxdoc 2019/09/16 v2.0y Standard LaTeX documentation class
(/usr/local/share/texmf-dist/tex/latex/base/article.cls
Document Class: article 2019/12/20 v1.4l Standard LaTeX document class
(/usr/local/share/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/share/texmf-dist/tex/latex/base/doc.sty
(/usr/local/share/texmf-dist/tex/latex/tools/multicol.sty)))
Writing index file lgrind.idx
Writing glossary file lgrind.glo
(./lgrind.dtx
(/usr/local/share/texmf-dist/tex/latex/l3backend/l3backend-dvips.def

! LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.2 %% T
        his is file `l3backend-dvips.def',

显然, thereT出现在序言中,这才是导致此错误的原因,但为什么呢?看起来注释删除得过于频繁了?也许是一个错误?

(lgrind-3.67 的来源是这里

答案1

源文件确实

\NeedsTeXFormat{LaTeX2e}[1996/06/01]
\documentclass{ltxdoc}
\CodelineIndex
\RecordChanges
\DocInput{lgrind.dtx}
\end{document}

并隐藏\begin{document} 里面 \DocInput。这意味着%在 期间不是注释字符\begin{document},这会弄乱任何加载其他文件的操作。它显示出来是因为l3backend现在已加载到那里,但实际上它无论如何都不“正确”。最好的解决方案是将.dtx改为

\NeedsTeXFormat{LaTeX2e}[1996/06/01]
\documentclass{ltxdoc}
\CodelineIndex
\RecordChanges
\begin{document}
\DocInput{lgrind.dtx}
\end{document}

删除\begin{document}下面的行

% \GetFileInfo{lgrind.dtx}

相关内容