2010-04-15 14 views
13

Temel olarak kaynak kodun sadece sözdizimi vurgulaması ve Satır numaraları olan bir PDF'si olan "Kaynak kodu belgelerini w/Satır numaraları" ile beslemem gerekiyor. Bir komut dosyasından "derleme sürümü oluştur" komut dosyası olarak arayabileceğim Windows için var olan komut satırı araçları var mı?Sözdizimi vurgulama ile PDF dönüştürücüsüne C++ komut satırı var mı?

Şu anda VC++ kullanarak manuel olarak yapıyorum, bu kod bile bir TI işlemci için dev bir ortam değil ve yazdırdığım her dosya için bir pop-up olan bir PDF yazıcı sürücüsü.

+0

Kafam karıştı, neden tüm kaynağınızı yazdırmak istiyorsunuz? –

+1

Müşteri gereksinimi. "Satır numaralarını içeren kaynak kod belgesi." Sadece dosyaları otomatik olarak oluşturmak için bir şey istiyorum. (Senaryo yapabileceğim bir şey var.) – NoMoreZealots

+0

Cevaplar sizin için çalışmıyor gibi görünüyor değil mi? – baol

cevap

22

Kullandığım iki sözdizimi Highlighters enscript ve source-highlight.

İlk, PostScript'e (ps2pdf kullanarak PDF'ye dönüştürebilirsiniz) çıktı verebilir, ikincisi HTML, LaTeX ve diğer biçimlerde çıktı üretir.

İkisi Cygwin

DÜZENLEME yoluyla ulaşılabilir olmalıdır: benim sistemde aşağıdaki komutu geçerli alt kollarındaki bütün cpp dosyaları yazdırılır.

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

şu aynı içeriğe sahip bir code.pdf dosyayı

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

PS üretecek ederken: ve çizgi numaraları için renk çıkışı için --color=1 ve -C ver.

+2

'trkript', varsayılan ortam boyutu A4'ü kullanır. Mektup boyutunu kullanmak istiyorsanız, 'Enscript' seçeneklerine' -M Letter' ekleyin. –

3

Bunu kullanıyorum. Bu, .ps üretir. Sonra ps2pdf çalıştırabilirsiniz.

# 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 

Ayrıca etkin kaynak tarama ile Doxygen kullanabilirsiniz. Ayrıca Emacs için Hrvoje Niksic tarafından htmlize.el vardır.

0

Çeşitli alternatifleri test ettim ve enscript kaynak kodunu yazdırmak için en iyi sonucu elde ettim. Yani, bu bash script yazdım birkaç dakika önce geçerli dizindeki tüm kaynaklarını toplamak için (bash, enscript, ps2pdf, pdfjam ihtiyacı):

kullanım örneği: ./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 

UYARI: Bu komut dosyası kötü kesmek ve geçerli dizinde * .ps ve OUTPUT.pdf silecektir. Tüm giriş dosyalarının geçerli dizinde olduğunu varsayar.