用于打印 C++ 代码的文本编辑器

用于打印 C++ 代码的文本编辑器

我正在寻找一个编辑器来打印(在纸上)C++ 代码。我目前在工程学校,老师要求我们提交纸质代码。

他想要名字+姓氏、班级编号(在标题上)、底部的页数以及每页粗体显示的保留字!

在 Windows 上,可以使用notepadd++.但我在 Linux 上,还没有找到可用的 IDE 或文本编辑器。 (我已经尝试过SCITE,,geditSyntaxic

答案1

好吧,如果您想更进一步,请使用 LaTeX 进行操作并提供专业级别的 PDF 文件。您还没有提到您的发行版,因此我将针对基于 Debian 的系统提供说明。不过,相同的基本想法可以在任何 Linux 上完成。

  1. 安装LaTeX系统和必要的包

    sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
    
  2. report.tex创建一个包含以下内容的 新文件(称为):

    \documentclass{article}
    \usepackage{fancyhdr}
    \pagestyle{fancy}
    %% Define your header here. 
    %% See http://texblog.org/2007/11/07/headerfooter-in-latex-with-fancyhdr/
    \fancyhead[CO,CE]{John Doe, Class 123}
    
    \usepackage[usenames,dvipsnames]{color}  %% Allow color names
    
    %% The listings package will format your source code
    \usepackage{listings}
    \lstdefinestyle{customasm}{
      belowcaptionskip=1\baselineskip,
      xleftmargin=\parindent,
      language=C++,
      breaklines=true, %% Wrap long lines
      basicstyle=\footnotesize\ttfamily,
      commentstyle=\itshape\color{Gray},
      stringstyle=\color{Black},
      keywordstyle=\bfseries\color{OliveGreen},
      identifierstyle=\color{blue},
      xleftmargin=-8em,
      showstringspaces=false
    }        
    \begin{document}
    
    \lstinputlisting[style=customasm]{/path/to/your/code.c}
    
    \end{document}
    

    只需确保更改/path/to/your/code.c倒数第二行,使其指向 C 文件的实际路径。如果要包含多个文件,请添加一个文件\newpage,然后\lstinputlisting为另一个文件添加一个新文件。

  3. 编译 PDF(这会创建report.pdf

    pdflatex report.tex    
    

我用我找到的示例文件在我的系统上对此进行了测试这里它会创建一个如下所示的 PDF:

创建的 pdf 的第一页

有关更全面的示例,该示例将自动查找目标文件夹中的所有 .c 文件并创建一个索引 PDF 文件,每个文件位于单独的部分中,请参阅我的答案这里

答案2

我通常会使用 enscript: 类似的东西

$ enscript --highlight=cpp
           --header='|Real Name|Class 101'
           --footer='|Page $% of $=|'
           -poutput.ps *.cpp

将是一个开始 - 这会将 postscript 输出写入output.ps,这样您就可以在修改配置时预览并覆盖它,然后在满意后打印它。请参阅手册页以获取更多非常广泛的选项。

编辑让页脚正常工作对于 enscript 来说有点痛苦 - 我从来没有注意到,因为我从来没有需要它。如果你保存这个文件~/.enscript/so.hdr(您可能需要创建目录),您实际上会得到所需的输出

$ enscript --highlight=cpp
           --header='|Real Name|Class 101'
           --footer='|Page $% of $=|'
           --fancy-header=so
           -poutput.ps *.cpp

给予

在此输入图像描述


大致,

  • LaTeχ 是最好的质量和最多的设置工作,
  • enscript 或 a2ps 在质量和工作上都处于中等水平,
  • vim 的:hardcopy命令很简单,但不够灵活,而且
  • 在非代码识别编辑器中手动进行语法突出显示需要付出很大的努力,但回报却很差。

答案3

可以:TOhtml在vim中使用该命令。这会将您看到的内容(即语法突出显示)呈现为 html。从那里,可以打印为 pdf 的网络浏览器可以工作,因为您通常可以自定义页眉/页脚内容。

这可能类似于:hardcopyUseless 提到的命令,但我现在无法在我的系统上验证。

另一种可能性是从 QtCreator 打印,但是似乎没有办法设置页眉/页脚。

答案4

既然你要求编辑,您可以使用 直接从 Emacs 打印ps-print-buffer

页眉和页脚位于名为 的自定义组中ps-print-headers

假设您使用字体锁定,您可能具有所需的语法突出显示。如有必要,可以使用该ps-extend-face功能进行调整。


话虽如此,我仍然建议您使用适当的“研磨”工具,例如 a2ps、enscript 或 LaTeX+listings。

相关内容