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

6 c++ latex noweb

我正在使用noweb来记录我的C++和C代码.在pdf文件中(在编织和使用pdflatex之后生成),一些代码略微偏离:

  • >><<转为适当的开启和关闭guillemets;
  • -- 变成了一个短划线.

我的编织命令是:

noweave -latex -delay -x foo.nw > foo.tex
Run Code Online (Sandbox Code Playgroud)

编辑:所以我可能需要使用一个漂亮的打印机.可用的那些做得太多了.我将调查它,如果我找到一个直接的解决方案,我将分享它.

小智 1

noweave作为 sed 脚本实现的过滤器,编织命令是:

noweave -x -delay -latex -filter c2nwtex foo.nw > foo.tex
Run Code Online (Sandbox Code Playgroud)

而c2nwtex是这样的:

#!/bin/sed -f
/^@begin code/ , /^@end code/ {
/^@text/ {
s/--/-\
@literal {}\
@text -/g
s/>>/>\
@literal {}\
@text >/g
s/<</<\
@literal {}\
@text </g
}
}
Run Code Online (Sandbox Code Playgroud)

请注意,这适用于 C、递减和移位运算符。C++11 现在允许模板声明带有右尖括号,且尖括号之间不带空格。您需要运行替代命令>>两次才能分解>长度超过 2 的序列。