我最初在 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}