使用noweb和LaTeX记录C或C++代码

6

我现在正在使用noweb来记录我的C++和C代码。在编织并使用pdflatex后生成的pdf文件中,部分代码略有偏差:

  • >><<会变成正确的左右尖括号;
  • --会变成n-dash。

我的编织命令是:

noweave -latex -delay -x foo.nw > foo.tex

编辑:我可能需要使用一个漂亮的打印机。可用的那些做得太多了。我会去研究一下,如果我找到一个简单明了的解决方案,我会分享出来。

1个回答

1

一个针对noweave的过滤器,实现为sed脚本,编织命令为:

noweave -x -delay -latex -filter c2nwtex foo.nw > foo.tex

而c2nwtex是这样的:

#!/bin/sed -f
/^@begin code/ , /^@end code/ {
/^@text/ {
s/--/-\
@literal {}\
@text -/g
s/>>/>\
@literal {}\
@text >/g
s/<</<\
@literal {}\
@text </g
}
}

请注意,这适用于C语言的减量和移位运算符。C++11现在允许模板声明中的尖括号之间没有空格。您需要两次运行替换命令来分解长度大于两个的>序列。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接