我正在尝试评估使用 plain 包构建一个卷的可行性,该卷的一部分是使用 edmac 以纯 tex 编写的关键版本集,其他部分或多或少是常规 LaTeX。我在这里处理的是一个极其复杂的设置,即 1990 年代的遗产代码,它的创建者早已去世,但该项目的其他人一直在使用他的系统,从那时起制作了几卷,显然他们不会放弃它。印刷的书确实看起来很棒。前面的卷是通过首先生成版本章节的 pdf 来构建的,对于每个章节,都需要在 tex 源中手动设置书中的起始编号,然后将这些 pdf 包含在书的主 LaTeX 文件中。目录自然也必须手动创建。当然可以再次这样做,但我至少想看看是否还有其他更好的方法。正如我所说,这件事非常复杂,涉及一个两步预处理系统,从通过 perl 脚本输入自定义梵文编码的文件到 devnag 预处理器的 dn 文件,后者在第二步生成 tex 源文件,以及在 edmac 之上提供抽象层的样式文件。虽然我是使用旧系统创建最后一卷的技术人员,但这样做是可能的,而无需深入了解用于创建该版本的纯文本。由于没有接触过纯文本,我现在正在努力创建一个 MWE,然后我可以将其输入到 LaTeX 文件中,如果可能的话,用真实世界文件构建示例失败了,我当然试过了。
\input edmac.doc
\beginnumbering
\pstart
\text{lemma}\Afootnote{note}\
\pend
\endnumbering
\bye
给我
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019) (preloaded format=pdftex)
restricted \write18 enabled.
entering extended mode
(./mini.tex (./edmac.doc
EDMAC Critical edition macros.
Revision: 3.7 < Date: 31 Aug 1993 15:57:20 >.
) Section 1 (./mini.1)
Runaway argument?
\Afootnote {note}\^^M\pend \endnumbering \par
! Forbidden control sequence found while scanning use of \text.
<inserted text>
\par
<to be read again>
\bye
l.9 \bye
可能缺少某些设置,但也许这也是兼容性问题?我还没有找到任何其他 MWE,或者首先是可读的文档。我确实尝试了 edmac.doc 中包含的最后一个示例,因为它专门用于 devnag 预处理器,但它也没有构建。
答案1
首先,回答所提问题。简而言之,应该\text
以 结尾/
,而不是\
。
错误信息解释
请注意,错误消息提示“参数失控?”,如果您按“H”,则会详细说明:
Runaway argument?
\Afootnote {note}\^^M\pend \endnumbering \par
! Forbidden control sequence found while scanning use of \text.
<inserted text>
\par
<to be read again>
\bye
l.9 \bye
? H
I suspect you have forgotten a `}', causing me
to read past where you wanted me to stop.
I'll try to recover; but if the error is serious,
you'd better type `E' or `X' now and fix your file.
基本上,这意味着 的全部\Afootnote {note}\^^M\pend \endnumbering \par
,我认为 的一部分,以及\bye
(这个错误被捕获是因为\bye
被声明为\outer
),被视为 的参数\text
(这不是你的意图),这表明对 的调用出了问题\text
。
edmac
文档和MWE
的文档edmac
很难找到:texdoc edmac
只是节目1996 年的一封信readme
鼓励你从 TUG 购买印刷版文档(我认为地址已经过时了)。但是,听说过 edmac/ledmac/reledmac 后,运行它就texdoc reledmac
更有用了,并且显示了文档回顾历史,并提到
“edmac 概述:针对批判版本的纯 TEX 格式”,拖船 11(1990),第 623-643 页
可用的这里。
按照该文档,我们可以准备以下 MWE(使用文档中的示例,并将名称\afootnote
更新为\Afootnote
问题中的名称):
\input edmac
\firstlinenum=1
\linenumincrement=1
% Some hacks for narrow columns. Not needed in real documents.
\vsize=20em
\hsize=15em
\hyphenpenalty=0
\exhyphenpenalty=0
\doublehyphendemerits=0
\finalhyphendemerits=0
\pretolerance=9999
\tolerance=9999
\emergencystretch=\maxdimen
\beginnumbering
\pstart This is a sample paragraph, with lines numbered automatically. \pend
The lines of this paragraph are not numbered.
\pstart And here the numbering begins again. \pend
\pstart
I saw my friend \text{Smith}\Afootnote{Jones C, D.}/ on Tuesday.
\pend
\bye
结果是:
未经请求的建议:)
生成版本章节的 pdf,每个章节在书中的起始编号需要在 tex 源中手动设置,然后这些 pdf 会被包含在书的主 LaTeX 文件中。目录自然也需要手动创建。
请注意,这(手动指定每章的起始页码,并手动生成目录)也是 TeX 的创建者和25本书,也准备了他的许多书。考虑到你可能只在最后准备一次书的目录,这并不那么糟糕。自动化是不总是值得,记住这一点很有用总体框架何时这样做。
一套极其复杂的设置,20 世纪 90 年代的遗产代码,[...] 从那时起出版了几卷[...]。印刷的书确实看起来很棒。[...] 我至少想看看是否还有其他更好的方法。
我有时也尝试过类似的方法,但要知道,这可能最终会失败。请参阅此经典文章关于重写软件:传统代码“伤痕累累”,不得不遇到很多奇怪的情况和极端情况,如果从头开始做,你可能不会想到这些情况。制作一本看起来很棒的印刷书可能非常困难,这违背了使用 TeX(精美书籍)的主要目的。与其扔掉东西,从头开始想出更好的解决方案,我建议尝试从当前设置开始,逐步删除不再需要的东西,例如替换自定义编码/德夫纳格预处理器与其他东西(可能是不同的脚本),但始终比较“之前”和“之后”,以确保输出没有改变,或者至少没有以任何方式受到影响/变得更糟。
没有接触过纯文本
如果你只是想快速掌握 TeX 的实用思维模型,我强烈推荐这本书TeX 初学者指南作者:Seroul 和 Levy。(请参阅 Hans Hagen 的推荐在 ConTeXt 手册中。)花几天时间可能最终是值得的。但是,仍然要看上一点。
如果可能的话,我可以将其输入到 LaTeX 文件中
请注意ed-nfss.txt
(从 1994 年开始)“特别是,EDMAC 使用自己的输出例程,而不是 LaTeX2e 的,因此很多特定于 LaTeX 输出例程的东西(比如浮点放置)将不会被执行”,所以(如果仍然如此)将其输入到 LaTeX 文件中可能会产生令人惊讶的结果。