我试着跑这个答案(使用 edmac) 与 optex 一起使用,但失败了。我知道 Optex 有宏\ttline
,但仍然找不到如何对文本行进行编号。
我开始创建一个简单的宏,它可以执行类似以下的操作
\newcount \linenum
\def\printlinenum{\advance \linenum by 1 \llap{\scalemain\typoscale[800/800]\the\linenum\kern.9em}}
但问题自然是它没有计算行数。
答案1
OpTeX 不支持这种编号类型的特殊宏,但您可以实现自己的宏。例如:
\newcount\firstlinenum
\newcount\linenumincrement
\def\pstart{\par \setbox0=\vbox\bgroup}
\def\pend{\par \global\tmpnum=\prevgraf \egroup
\multiply\tmpnum by\linenumincrement \advance\tmpnum by\firstlinenum
\firstlinenum=\tmpnum \advance\tmpnum by-1
\setbox0=\vbox{\unvbox0
\setbox2=\hbox{}
\loop
\unskip\unpenalty \setbox1=\lastbox
\ifvoid1 \else
\global\setbox2=\hbox{\llap{\printnum}\box1\penalty0\unhbox2}
\advance\tmpnum by-\linenumincrement
\repeat
}\noindent\unhbox2 \par
}
\def\printnum{\setfontsize{mag.6}\rm\the\tmpnum\kern.8em}
\hsize=3in
\firstlinenum=1
\linenumincrement=1
\pstart
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\pend
\bye
结果等于这个答案。
答案2
OpTeX可能类似于,但它并不基于纯 TeX;因此您可能会发现不兼容问题。您已收到警告。
因此,为了edmac
与 OpTeX 一起使用,您只需提前加载 Plain 宏。
\input plain
\input edmac
\hsize=3in
\firstlinenum=1
\linenumincrement=1
\beginnumbering
\pstart
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\pend
\endnumbering
\end
我想这就是你想要实现的目标。