C++ コードを印刷するためのテキスト エディター

C++ コードを印刷するためのテキスト エディター

C++ コードを (紙に) 印刷するためのエディタを探しています。現在、私は工学部に通っており、講師から紙にコードを提出するように言われています。

彼は、名前と姓、クラス番号(ヘッダー)、下部のページ番号、および予約語を各ページに太字で表示することを望んでいます。

Windows では で実行できますnotepadd++。しかし、私は Linux を使っており、動作する IDE やテキスト エディターが見つかりませんでした。(すでにSCITEgedit、 を試しましたSyntaxic)

答え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}
    

    最後から 2 番目の行を変更して、C ファイルの実際のパスを指すようにしてください/path/to/your/code.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

は開始点になります - これは にポストスクリプト出力を書き込むのでoutput.ps、設定をいじっている間にそれをプレビューして上書きし、満足したら印刷することができます。より広範なオプションについては、man ページを参照してください。

編集フッターを正しく動作させるのは、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

vim でコマンドを使用できます:TOhtml。これにより、表示される内容 (構文の強調表示など) が HTML としてレンダリングされます。そこから、ヘッダー/フッターのコンテンツをカスタマイズできることが多いため、PDF に印刷できる Web ブラウザーが機能します。

これはおそらく Useless が言及したコマンドに似ています:hardcopyが、現時点では私のシステムでは確認できません。

もう 1 つの可能性は QtCreator から印刷することですが、ヘッダー/フッターを設定する方法はないようです。

答え4

あなたが求めているのは編集者を使用すると、Emacs から直接印刷できますps-print-buffer

ヘッダーとフッターは、「カスタマイズ」グループにありますps-print-headers

font-lock を使用すると仮定すると、必要な構文の強調表示がおそらくあるでしょう。必要に応じて、関数を使用して調整できますps-extend-face


そうは言っても、a2ps、enscript、LaTeX+listings などの適切な「グラインド」ツールを使用することをお勧めします。

関連情報