web-dev-qa-db-ja.com

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

(紙に)C++コードを印刷するエディターを探しています。私は現在工学部に在籍しており、インストラクターからコードを紙に提出するように依頼されました。

名前+姓、クラス番号(ヘッダー)、下部のページ数、すべてのページで太字の予約語が必要です。

Windowsではnotepadd++。しかし、私はLinuxを使用していて、IDEまたは機能するテキストエディタを見つけていません。(SCITEgedit、およびSyntaxic

34
loi219

さて、もしあなたがさらに一歩進んで行きたいなら、それを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番目の行の/path/to/your/code.cがCファイルの実際のパスを指すように変更してください。含めるファイルが複数ある場合は、\newpageを追加してから、他のファイルに新しい\lstinputlistingを追加します。

  3. コンパイルa PDF(これによりreport.pdfが作成されます)

    pdflatex report.tex    
    

私が見つけたサンプルファイルを使用してシステムでこれをテストしました here とすると、PDFが次のようになります。

first page of the created pdf

ターゲットフォルダー内のすべての.cファイルを自動的に検索し、インデックス付きのPDFファイルをそれぞれ別のセクションに作成する)より包括的な例については、私の回答を参照してください こちら

76
terdon

私は通常、enscriptを使用します。

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

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

[〜#〜] edit [〜#〜]フッターを正しく機能させるのは、enscriptで少し面倒です-私は気づかなかったので、私はそれを必要としなかった。 このファイル~/.enscript/so.hdrに保存すると(おそらくディレクトリを作成する必要があります)、実際に必要な出力が得られます

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

与える

enter image description here


大体、

  • LaTeχは最高の品質で、セットアップが最も手間がかかります。
  • enscriptまたはa2psは、品質と作業の両方で中程度です。
  • vimの:hardcopyコマンドは簡単ですが、それほど柔軟ではありません。
  • 非コード対応のエディターで構文の強調表示を手動で行うのは、見返りが悪い場合に多大な労力を要します。
29
Useless

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

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

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

9
Shade

Geanyは単純なIDEで、ヘッダーに何を入れるかについて多くのオプションを提供します。

予約語はオプションメニューで操作できますが、コードの強調表示はnotepad ++スタイルでこれを行います。 (必要に応じて、配色を "/home/$USER_NAME/.config/geany/colorschemes/"フォルダーにコピー/ダウンロードしてください)

非常にシンプルで個人的には、行番号と出力形式を本当に気に入っています。

また、geanyはWindowsとLinuxの両方で実行されます。

Page 1

Page 2

Page 3

4
Joe

editorを要求するので、ps-print-bufferを使用してEmacsから直接印刷できます。

ヘッダーとフッターは、ps-print-headersという名前のカスタマイズグループにあります。

Font-lockを使用している場合、おそらく必要な構文の強調表示があります。必要に応じて、ps-extend-face関数を使用して調整できます。


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

2
Toby Speight

完全を期すため、そしてその解決策はお勧めしませんが、lpプログラムには、構文の強調表示を行う-o prettyprintオプションがあります。

たとえば、次のように使用できます。

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

ここでは、-t(タイトル)オプションを使用してヘッダーを設定しました。ただし、フッターは変更できません(ただし、ページ番号は上部に表示されます)。オプション-o document-formatを使用してファイルタイプを設定できます(許容値のリストは/usr/share/cups/mime/mime.typesまたは/etc/cups/mime/mime.typesにある必要があります)。ただし、ファイルに正しい拡張子が付いている場合は必要ありません。 。また、構文の強調表示は完全とはほど遠いものです。

1
lgeorget

必要なのは LibreOffice Writer だけです。

C/C++コードを貼り付けます。

単語を見つけて、BoldをすべてのC++キーワードにします。

あなたはここでそれらを見つけることができます: http://en.cppreference.com/w/cpp/keyword

単語を検索するにはCtrl + Fを押します。[Match case]を選択し、[Find All]をクリックします(スクリーンショットを参照)。

enter image description here

その後、名前とページ番号を含むヘッダーとフッターが必要です。

EDIT:Christophe Strobbe コメント:)

コードのカラーリングにはLibreOffice拡張機能があります: Code Colorizer Formatter 。 (まだテストしていません。)

1
GeoMint

GUIインターフェースが好きだったので、私は何年も前にSolarisシステムを使用していたときにNeditを使用していました。まだ残っているようです。見てみな。

0
Kalpana N.