2012-11-24 16 views
6

Używam nowychb do udokumentowania mojego kodu C++ i C. W pliku PDF (generowane po utkaniu i stosując pdflatex) część kodu jest nieco poza:Dokumentowanie kodu C lub C++ za pomocą nowychb i LaTeX

  • >> i << kolej na odpowiednie guillemets otwierania i zamykania;
  • -- zmienia się w n-kreskę.

Moja tkania jest komenda:

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

Edit: tak pewnie trzeba użyć PrettyPrinter. Te, które są dostępne, robią za dużo. Zajrzę do tego i jeśli znajdę proste rozwiązanie, podzielę się tym.

+4

+1 za tkanie. –

Odpowiedz

1

Filtr dla noweave zaimplementowany jako sed skryptu, tkania polecenia:

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

I c2nwtex to:

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

Uwaga, że ​​pracuje dla C, ubytek i przesunięcie operatorów. C++ 11 umożliwia teraz deklaracje szablonów z nawiasami zamykającymi bez spacji między nimi. Musisz dwukrotnie uruchomić polecenie zastępcze na >>, aby przedłużyć sekwencję o długości dłuższej niż dwie z następujących po sobie >.