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

Documenting C or C++ code with noweb and LaTeX

本文关键字:C++ 代码 记录 noweb LaTeX 使用      更新时间:2023-10-16

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

  • >><<变成适当的开合;
  • --变成 n 破折号。

我的编织命令是:

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

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

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 现在允许使用右尖括号的模板声明,它们之间没有空格。您需要对>>运行两次 substitute 命令,以分解长度超过两个的>序列。