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


34

C ++コードを(紙に)印刷するエディターを探しています。私は現在工学学校にいますが、インストラクターはコードを紙で提出するように私たちに依頼しました。

彼は、名前+姓、クラス番号(ヘッダー上)、下部のページ数、およびすべてのページに太字の予約語が必要です!

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


4
a2psはあなたの友達です。時間をかけて設定してください。
桂佐藤

5
このようなリクエストについては、softwarerecs.stackexchange.com
Eric Renouf

30
先生は伐採業界に投資しているようです。
アントン

10
あなたの先生はコードを望んでいます... 紙の上に!
モニカとライトネスレース

8
@ loi219「古い学校の」先生か古い「学校の先生」、またはその両方ですか?;-)
user800

回答:


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最後から2行目を変更して、Cファイルの実際のパスを指すようにしてください。含めるファイルが複数ある場合は、a \newpageを追加してから\lstinputlisting、もう一方のファイルに新しいファイルを追加します。

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

    pdflatex report.tex    
    

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

作成されたPDFの最初のページ

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


17
LaTeXを開始するとすぐに手放すことはできません!私は高校でTeXを知っていたら…(または、彼らは言葉の代わりとしてそれを教えるでしょう)。
キスリック

2
LaTexは、ほとんどのシステム、特に工学学校にデフォルトでインストールされると思います。コマンドプロンプトで「which latex」と入力します。パス(通常は/ usr / bin / latex)が返される場合は、手順1をスキップできます。また、選択したエディターに適切なマクロ言語がある場合、「gv --watch」を使用してライブ出力を表示するなど、エディター内からこのスクリプトを実行できます。
jamesqf

4
@jamesqfデフォルトでLaTeXがインストールされたシステムを見たことはありません。はい、一部の学校のIT担当者がインストールした可能性があり、デフォルトでそれを備えた特殊なLinuxディストリビューションが存在する場合がありますが、大多数のシステムはインストールしません。
テルドン

3
@terdon- LaTeXのないエンジニアリング部門でのインストールを見たことはありません。印刷可能な出力を生成する必要がある人にとっては非常に重要です。
トビーSpeight

1
@terdon:「デフォルト」またはインストール時に選択。私のシステムでLaTeXを入手するために特別なことをしたことは覚えていません(OpenSuSE)が、最後のインストールを行ってからしばらく経ちました。どちらにしても、チェックは簡単です。
-jamesqf

29

私は通常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コマンドは簡単ですが、それほど柔軟ではありません。
  • コードを認識しないエディタで構文の強調表示を手動で行うことは、返品率が低い場合に多大な労力を費やします。

これは絶対に私が探しているものです。どうもありがとうございました!
loi219

第二にemscript。たくさんのオプションがあり、非常に良い結果が得られます。
ルービック

9

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

これはおそらく: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 + listingsなどの適切な「グラインド」ツールを使用することをお勧めします。


1

完全を期すため、またその解決策はお勧めしませんが、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

LibreOffice Writerが必要です。

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

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

ここで見つけることができます:http : //en.cppreference.com/w/cpp/keyword

単語を検索するにはCtrl + Fを押します。[大文字と小文字を区別する]を選択し、[すべて検索]をクリックします(スクリーンショットを参照)。

ここに画像の説明を入力してください

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

EDIT: クリストフStrobbeは次のようにコメント)

コードの色付けのためのLibreOffice拡張機能、Code Colorizer Formatterがあります。(まだテストしていません。)


41
Eww、手動構文強調表示。
役に立たない

何かアイデアはありますか?
loi219

7
また、eww、可変幅フォントのコード:(
cat

2
コードの色付けのためのLibreOffice拡張機能、Code Colorizer Formatterがあります。(まだテストしていません。)
user800

1
これは痛いようです
ジョー

0

GUIインターフェイスが好きだったので、私は何年も前にSolarisシステムにいたときにNeditを使用していました。私はそれがまだ周りにあることがわかります。見てみな。


-2

KDE3がまだ大きなものだった過去に、私は実際に最高の出力を生成するテキストエディターのためにケイトを使用しました。今日は、パッケージをリスト化して、より埋め込み可能なソリューションを得るためにラテックスを使用します。このパッケージはカラー出力用ではありませんが、レーザープリンターではカラーは利点ではありません。


2
これは本当に質問に答えませんか?
カウンター

実際に質問に答えます。答えは次のとおりです。「ケイトを
ご覧
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.