2012-11-24 18 views
6

Tôi đang sử dụng noweb để ghi lại mã C++ và C của mình. Trong file pdf (tạo ra sau khi dệt và sử dụng pdflatex) một số mã là hơi off:Tài liệu về mã C hoặc C++ với noweb và LaTeX

  • >><< lần lượt vào khai mạc và bế mạc guillemets thích hợp;
  • -- biến thành một dấu gạch ngang.

lệnh dệt của tôi là:

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

Chỉnh sửa: vì vậy tôi có thể cần phải sử dụng một prettyprinter. Những người có sẵn làm cách quá nhiều. Tôi sẽ xem xét nó và nếu tôi tìm thấy một giải pháp thẳng về phía trước, tôi sẽ chia sẻ nó.

+4

+1 để dệt. –

Trả lời

1

Bộ lọc cho noweave thực hiện như một kịch bản sed, dệt lệnh là:

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

Và c2nwtex là thế này:

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

Lưu ý rằng việc cho C, sụt lần và chuyển sang khai thác. C++ 11 cho phép bây giờ khai báo mẫu với các dấu ngoặc nhọn đóng mà không có khoảng cách giữa chúng. Bạn cần chạy lệnh thay thế trên >> hai lần để chia nhỏ chuỗi dài hơn >.