用於列印 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。

相關內容