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


34

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

他想要名字+姓氏,类号(在标题上),底部的页数以及每页加粗的保留字!

在Windows上,可以使用notepadd++。但是我在Linux上,但是找不到有效的IDE或文本编辑器。(我已经尝试过SCITEgeditSyntaxic


4
a2ps是你的朋友。花点时间配置它。
桂聪聪(SatōKatsura)

5
对于这样的请求,您可能需要考虑softwarerecs.stackexchange.com
Eric Renouf

30
听起来您的老师已经在伐木行业进行了投资。
Anthon

10
您的老师想要在纸上写代码吗?
莫妮卡(Monica)

8
@ loi219是“老派”老师还是老“学校老师”,还是两者兼而有之?;-)
user800

Answers:


76

好吧,如果您想加倍努力,请使用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文件,请在此处查看我的答案。


17
一旦您开始使用LaTeX,就不能放手!我希望我在高中时了解TeX ...(或者他们会教它代替单词)。
Kyslik '16

2
我认为LaTex将默认安装在大多数系统上,尤其是在一所工程学校。在命令提示符下键入“乳胶”:如果它返回路径,通常是/ usr / bin / latex,则可以跳过步骤1。同样,如果您选择的编辑器具有不错的宏语言,则可以在编辑器中运行此脚本,例如使用“ gv --watch”显示实时输出。
jamesqf

4
@jamesqf我从未见过默认安装了LaTeX的系统。是的,某些学校的IT人员可能已经安装了它,并且可能默认情况下有专门的Linux发行版具有它,但是绝大多数系统都没有。
terdon

3
@terdon- 没有 LaTeX,我从未在工程部门看到过安装。对于任何需要产生可打印输出的人来说,这都是至关重要的。
Toby Speight

1
@terdon:“默认”或在安装时选择。我不记得要在我的系统(OpenSuSE)上安装LaTeX所做的任何特殊操作,但是自从上次安装以来已经有一段时间了。无论哪种方式,检查都很简单。
jamesqf

29

我通常会使用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命令很简单,但不那么灵活,并且
  • 在不具备代码意识的编辑器中手动进行语法高亮显示会导致很差的回报。

这绝对是我要搜索的内容。非常感谢你!
loi219

我第二emscript。它有很多选项,并且效果非常好。
rubik '16

9

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

这可能与:hardcopyUseless提到的命令相似,但是我现在无法在系统上进行验证。

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


4

Geany是一个简单的IDE,可为标题提供许多选择。

保留字可以在选项菜单中进行操作,但是代码高亮显示是针对notepad ++样式的。(您可能需要将配色方案复制/下载到“ /home/$USER_NAME/.config/geany/colorschemes/”文件夹中以获得所需的颜色)

非常简单,就我个人而言,我真的很喜欢它打印的行号和格式。

geany还可以在Windows和Linux上运行。

第1页

第2页

第3页


2

由于您需要编辑器,因此可以使用从Emacs直接打印ps-print-buffer

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

假设您使用字体锁,则可能需要突出显示语法。可以根据需要使用该ps-extend-face功能进行调整。


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


1

为了完整起见,尽管我不建议使用该解决方案,但该lp程序有一个-o prettyprint可以进行语法突出显示的选项。

您可以像这样使用它:

lp -t "Name Surname | Class" -o document-format=application/x-csource -o prettyprint path/to/code.cpp

在这里,我使用-t(title)选项设置标题。我不能更改页脚(但页码显示在顶部)。您可以使用选项设置文件类型-o document-format (可接受值的列表应在/usr/share/cups/mime/mime.types或中/etc/cups/mime/mime.types),但如果文件具有正确的扩展名,则没有必要。而且,语法高亮远非完美。


1

您只需要LibreOffice Writer

粘贴您的C / C ++代码。

找到单词并将Bold变成所有C ++关键字。

您可以在这里找到它们:http : //en.cppreference.com/w/cpp/keyword

查找单词按Ctrl +F。选择“大小写匹配”,然后单击“查找全部”(如屏幕截图所示)。

在此处输入图片说明

之后,您需要带有您的名称和页码的页眉和页脚。

编辑:Christophe Strobbe评论:)

有一个LibreOffice扩展用于代码着色:Code Colorizer Formatter。(我尚未测试过。)


41
w,手动语法高亮显示。
没用

你有什么主意吗
loi219

7
此外,恶,在可变宽度的字体:(代码

2
有一个LibreOffice扩展用于代码着色:Code Colorizer Formatter。(我没有测试它。)
user800

1
这看起来很痛苦

0

多年前,当我在Solaris系统上时,我曾经使用Nedit,因为我喜欢GUI界面。我看到它仍然存在。看看这个。


-2

过去,当KDE3仍然很重要时,我使用Kate becaus作为文本编辑器,它确实产生了最佳的输出。今天,我将与乳胶一起使用包lstlisting,以提供更可嵌入的解决方案。该包装不适用于彩色输出,但在激光打印机上,彩色不是优势。


2
这并不能真正回答问题,对吗?

实际上它确实回答了这个问题。答案是:“看看凯特(Kate),过去对我来说真是太好了”
Arne
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.