Документирование кода C или C++ с помощью noweb и LaTeX

Я использую noweb к документу мой C++ и C код. В pdf-файле (сгенерированном после плетения и использования pdflatex) часть кода немного выключена:

  • >> и << повернуть в правильное Открытие и закрытие guillemets;
  • -- превращается в Н-тире.

моя команда плетения:

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

Edit: поэтому мне, вероятно, нужно использовать prettyprinter. Те, что доступны, делают слишком много. Я займусь этим, и если я ... найдите прямое решение, которым я поделюсь.

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, decrement и shift. C++11 теперь позволяет объявлять шаблоны с заключительными угловыми скобками без пространства между ними. Вам нужно запустить команду substitute на >> дважды, чтобы разбить последовательность > больше чем два.