【问题标题】:Is there a command line C++ to PDF converter with syntax highlighting? [closed]是否有带有语法突出显示的命令行 C++ 到 PDF 转换器? [关闭]
【发布时间】:2010-04-15 22:16:40
【问题描述】:

我需要提供“带有行号的源代码文档”,它本质上只是带有语法突出显示和行号的源代码的 PDF。是否有任何现有的 Windows 命令行工具可以从脚本中调用为“构建版本”脚本?

现在我正在使用 VC++ 手动执行此操作,这甚至不是代码用于 TI 处理器的开发环境,以及一个 PDF 打印机驱动程序,它为我打印的每个文件都有一个弹出窗口。

【问题讨论】:

  • 我很困惑,为什么要打印整个源代码?
  • 客户要求。 “包含行号的源代码文档。”我只是想要一些东西来自动生成文件。 (我可以编写脚本。)
  • 似乎答案对你不起作用,不是吗?

标签: c++ pdf documentation syntax-highlighting


【解决方案1】:

我使用的两个语法荧光笔是enscriptsource-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:并为颜色输出提供--color=1,为行号提供-C

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

【讨论】:

  • enscript 使用默认介质尺寸 A4。如果您想使用字母大小,请将-M Letter 添加到enscript 选项中。
【解决方案2】:

我用这个。它生成.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 为 emacs 编写的 htmlize.el。

【讨论】:

    【解决方案3】:

    我测试了几种替代方案,enscript 打印源代码的结果最好。 所以,我在几分钟前写了这个 bash 脚本(需要 bashenscriptps2pdfpdfjam)收集当前目录下的所有源码:

    用法示例:./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
    

    警告:此脚本是一个糟糕的 hack,将删除当前目录中的 *.ps 和 OUTPUT.pdf。 它假定所有输入文件都在当前目录中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 2015-03-09
      相关资源
      最近更新 更多