我需要提供“具有行号的源代码文档”,它基本上只是源代码的PDF,带有语法高亮和行号。是否有任何现有的Windows命令行工具,我可以从脚本调用“构建版本”脚本?
现在我正在使用VC ++进行手动操作,VC ++甚至不是代码用于TI处理器的开发环境,也是PDF打印机驱动程序,它会弹出我打印的每个文件。
答案 0 :(得分:25)
我使用的两种语法荧光笔是enscript
和source-highlight
。
第一个可以输出到PostScript(可以使用ps2pdf转换为PDF),第二个可以输出HTML,LaTeX和其他格式的输出。
两者都应该通过Cygwin
提供编辑:在我的系统上,以下命令将打印当前子树中的所有cpp文件。
find . -name "*.cpp" | xargs enscript -Ecpp -fCourier8
以下内容将生成具有相同内容的code.pdf
文件
find . -name "*.cpp" | xargs enscript -Ecpp -fCourier8 -o - | ps2pdf - code.pdf
PS:并为{0}提供颜色输出,为行号提供--color=1
。
-C
答案 1 :(得分:3)
我用这个。它会生成.ps。然后你可以运行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
您也可以在启用源浏览时使用Doxygen。 还有Hrvoje Niksic的htmlize.el用于emacs。
答案 2 :(得分:0)
我测试了几种替代方案, enscript 打印源代码效果最好。 所以,几分钟前我写了这个bash脚本(需要 bash , enscript , ps2pdf , pdfjam )收集当前目录中的所有来源:
用法示例:./ script.sh * .h * .c
#!/bin/bash
test "x$1" == "x" && echo "usage: $0 <sourcefiles>" && exit 0
for f in "$@" ; 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
警告:此脚本是一个糟糕的黑客,将删除当前目录中的* .ps和OUTPUT.pdf。 它假定所有输入文件都在当前目录中。