在使用以下命令编译的文档中
noweave -tex -filter "elide comment:*" adocument.nw > documentation.tex
并尝试使用命令编译生成的文件
xetex -halt-on-error documentation.tex
我收到以下错误消息
! Undefined control sequence.
<argument> ...on}endmoddef nwstartdeflinemarkup
nwenddeflinemarkup
似乎无法识别nwstartdeflinemarkup。
如果我从文档中删除所有序列
nwstartdeflinemarkupnwenddeflinemarkup
文件编译正常。
问题出在哪里?
我认为问题是noweb分发中的一个错误,其中我认为应该同时支持TeX和LaTeX的几个命令实际上只适用于LaTeX。
一个简单的修复方法是在源文件的开头添加两行:
letnwstartdeflinemarkuprelax
letnwenddeflinemarkuprelax
这方面的一些背景信息。给定此源文件:
One line of documentation.
<<SomeChunkname>>=
// No real code
@ %
Second and last line of documentation.
运行noweave
,然后运行xelatex
:
noweave -tex adocument.nw > documentation.tex
xetex -halt-on-error documentation.tex
复制错误,这并不奇怪,因为nwstartdeflinemarkup
没有在nwmac.tex
中定义。现在,浏览nwmac.tex
的源文件,即ctan镜像站点中的support.nw
,可以发现nwstartdeflinemarkup
是为LaTeX定义的,而不是为TeX定义。