2010-04-15 30 views
13

Tôi cần cung cấp "Tài liệu mã nguồn w/Số dòng", về cơ bản chỉ là PDF của mã nguồn có tô sáng cú pháp và số Dòng. Có bất kỳ công cụ dòng lệnh hiện có nào cho các cửa sổ mà tôi có thể gọi từ tập lệnh dưới dạng tập lệnh "phiên bản phát hành phiên bản" không?Có dòng lệnh chuyển đổi C++ sang PDF với cú pháp tô sáng không?

Hiện tại tôi đang thực hiện thủ công bằng VC++, thậm chí không phải là môi trường mã dành cho bộ vi xử lý TI và trình điều khiển máy in PDF, có một cửa sổ bật lên cho mỗi tệp tôi in.

+0

Tôi bối rối, tại sao bạn muốn in toàn bộ nguồn của mình? –

+1

Yêu cầu của khách hàng. "Tài liệu mã nguồn bao gồm cả số dòng." Tôi chỉ muốn một cái gì đó để tự động tạo ra các tập tin. (Tôi có thể viết kịch bản.) – NoMoreZealots

+0

Có vẻ như câu trả lời không hoạt động cho bạn, phải không? – baol

Trả lời

22

Hai tô sáng cú pháp tôi sử dụng là enscriptsource-highlight.

Đầu tiên có thể xuất ra PostScript (mà bạn có thể chuyển đổi sang PDF bằng ps2pdf), thứ hai tạo ra đầu ra ở định dạng HTML, LaTeX và các định dạng khác.

Cả hai nên có sẵn thông qua Cygwin

EDIT: Trên hệ thống của tôi lệnh sau đây sẽ in tất cả các tập tin cpp trong cây con hiện nay.

find . -name "*.cpp" | xargs enscript -Ecpp -fCourier8 

Trong khi những điều sau đây sẽ tạo ra một tập tin code.pdf với cùng một nội dung

find . -name "*.cpp" | xargs enscript -Ecpp -fCourier8 -o - | ps2pdf - code.pdf 

PS: và cung cấp cho các --color=1 cho ra màu sắc và -C cho số dòng.

find . -name "*.cpp" | xargs enscript --color=1 -C -Ecpp -fCourier8 -o - | ps2pdf - code.pdf 
+2

'enscript' sử dụng kích thước phương tiện mặc định A4. Nếu bạn muốn sử dụng kích thước chữ cái, hãy thêm '-M Letter' vào tùy chọn' enscript'. –

3

Tôi sử dụng tính năng này. Nó tạo ra .ps. Sau đó, bạn có thể chạy ps2pdf.

# Copyright 2004 Rutger E.W. van Beusekom. 
# Distributed under the Boost Software License, Version 1.0. (See 
# accompanying file LICENSE_1_0.txt or copy at 
# http://www.boost.org/LICENSE_1_0.txt) 

outfile=$1 
shift 

a2ps -1 --highlight=normal --pretty-print=cxx --line-numbers=1 -M a4 -L80 -g \ 
-o $outfile $* --prologue=color --right-title=%p. --left-title \ 
--left-footer --right-footer --header --medium=a4 

Bạn cũng có thể sử dụng Doxygen khi bật tính năng duyệt nguồn. Ngoài ra còn có htmlize.el bởi Hrvoje Niksic cho emacs.

0

Tôi đã thử nghiệm một vài lựa chọn thay thế và ghi chú có kết quả tốt nhất để in mã nguồn. Vì vậy, tôi đã viết kịch bản bash này (cần bash, enscript, ps2pdf, pdfjam) một vài phút trước đây để thu thập tất cả các nguồn trong thư mục hiện: ví dụ

sử dụng: ./script. sh * .h * .c

#!/bin/bash 
test "x$1" == "x" && echo "usage: $0 <sourcefiles>" && exit 0 

for f in "[email protected]" ; do enscript $f -o $f.ps -E -C ; done 

for f in *.ps ; do echo ps2pdf $f ; ps2pdf $f && rm $f ; done 

rm OUTPUT.pdf 2>/dev/null 
pdfjam *.pdf && mv *pdfjam.pdf OUTPUT.pdf 

echo 
echo DONE: 
echo OUTPUT.pdf 

CẢNH BÁO: Tập lệnh này là một bản hack xấu và sẽ xóa * .ps và OUTPUT.pdf trong thư mục hiện tại. Nó giả định tất cả các tệp đầu vào nằm trong thư mục hiện tại.

Các vấn đề liên quan