2012-11-24 4 views
6

Ich benutze Noweb, um meine C++ und C-Code zu dokumentieren. In der PDF-Datei (erzeugt nach dem Weben und unter Verwendung von pdflatex) einem Teil des Codes ist leicht ab:Dokumentieren von C oder C++ Code mit Noweb und LaTeX

  • >> und << wiederum in der richtigen Öffnen und Schließen guillemets;
  • -- verwandelt sich in einen n-Strich.

Mein Weben Befehl lautet:

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

Edit: also muss ich wohl einen Pretty verwenden. Die, die verfügbar sind, tun viel zu viel. Ich werde mich darum kümmern und wenn ich eine unkomplizierte Lösung finde, werde ich sie teilen.

+4

+1 für Weben. –

Antwort

1

Ein Filter für noweave als sed-Skript ausgeführt, das Weben von Befehl lautet:

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

Und c2nwtex ist dies:

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

Beachten Sie, dass die für C arbeitet, Abnahme- und Shift-Operatoren. C++ 11 erlaubt nun Template-Deklarationen mit schließenden spitzen Klammern ohne Leerzeichen zwischen ihnen. Sie müssen den Ersatzbefehl unter >> zweimal ausführen, um eine Sequenz von > länger als zwei aufzubrechen.