
我正在嘗試評估使用 plain 套件建立一卷的可行性,其中一部分是使用 edmac 在 plain tex 中設定的關鍵版本,其他部分或多或少是常規 LaTeX。我在這裡處理的是一個極其複雜的設置,來自20 世紀90 年代的遺產代碼,其創建者早已去世,但該項目的其他人一直在使用他的系統,從那時起製作了幾卷,顯然他們不會放棄它。印刷版的書看起來確實很棒。前面幾卷是透過先產生版本章節的 pdf 來建構的,每個章節在書中的起始編號需要在 tex 來源中手動設置,然後這些 pdf 包含在本書的主 LaTeX 檔案中。 TOC 自然也必須手動建立。當然,可以再次這樣做,但我至少想看看是否有另一種更好的方法。正如我所說,事情非常複雜,涉及兩步驟預處理系統,從透過 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
首先,回答所提出的問題。簡短的版本是應該以, not\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
只是節目areadme
從 1996 年開始,鼓勵您從 TUG 購買印刷版文件(我認為地址已過時)。然而,在某處聽說過 edmac/ledmac/reledmac,運行texdoc reledmac
更有用,並且顯示文件進入歷史,也提到
“edmac 概述:適用於關鍵版本的 Plain 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 檔案中。 TOC 自然也必須手動建立。
請注意,這(手動指定每章的起始頁碼,並手動產生目錄)也是 TeX 的創建者和作者 Donald Knuth 的做法。25本書,也準備了他的許多書籍。考慮到您可能在一本書的最後只準備一次目錄,這並沒有那麼可怕。自動化是不總是值得,記住這一點很有用總體框架何時這樣做。
極其複雜的設置,20 世紀 90 年代的遺產代碼,[...] 從那時起生產了幾卷 [...]。印刷版的書看起來確實很棒。 [...]我至少想看看是否有另一種更好的方法。
我有時會以類似的精神嘗試一些事情,但要注意這可能最終會失敗。看到這個經典文章關於重寫軟體:傳統程式碼是「傷痕累累」的,必須遇到很多奇怪的情況和極端情況,如果你試圖從頭開始做,你可能不會想到這些情況。最終可能很難製作一本看起來同樣出色的印刷書籍,這違背了使用 TeX(漂亮的書)的主要目的。我建議不要扔掉東西並嘗試從頭開始提出更好的解決方案,而是建議嘗試從當前設定開始並逐漸刪除不再需要的東西,例如替換自訂編碼/德夫納格預處理器與其他東西(也許是不同的腳本),但始終比較“之前”和“之後”,以確保輸出沒有改變,或至少沒有以任何方式妥協/變得更糟。
沒有接觸過純文字
如果您只是想快速掌握有用的 plain TeX 心智模型,我強烈地推薦這本書TeX 初學者書籍作者:塞魯爾和利維。 (請參閱漢斯·哈根的推薦在 Context 手冊中.)花費幾天左右的時間可能會是值得的。但仍然請參閱上一點。
如果可能的話,我可以將 MWE 輸入到 LaTeX 檔案中
請注意ed-nfss.txt
(從1994 年開始)說“特別是,EDMAC 使用自己的輸出例程,而不是LaTeX2e 的,因此很多特定於LaTeX 輸出例程的內容(如浮動放置)將不會被執行”,所以(如果這是情況仍然如此)將其輸入到 LaTeX 檔案中可能會產生令人驚訝的結果。