(紙に)C++コードを印刷するエディターを探しています。私は現在工学部に在籍しており、インストラクターからコードを紙に提出するように依頼されました。
名前+姓、クラス番号(ヘッダー)、下部のページ数、すべてのページで太字の予約語が必要です。
Windowsではnotepadd++
。しかし、私はLinuxを使用していて、IDEまたは機能するテキストエディタを見つけていません。(SCITE
、gedit
、およびSyntaxic
)
さて、もしあなたがさらに一歩進んで行きたいなら、それをLaTeXで行い、プロレベルのPDFファイルを提供してください。あなたのディストリビューションについては言及していないので、Debianベースのシステムについての説明をします。同じ基本的な考え方は、どのLinuxでも実行できます。
LaTeXシステムと必要なパッケージをインストールする
Sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
次の内容で新しいファイル(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
を追加します。
コンパイルa PDF(これによりreport.pdf
が作成されます)
pdflatex report.tex
私が見つけたサンプルファイルを使用してシステムでこれをテストしました here とすると、PDFが次のようになります。
ターゲットフォルダー内のすべての.cファイルを自動的に検索し、インデックス付きのPDFファイルをそれぞれ別のセクションに作成する)より包括的な例については、私の回答を参照してください こちら 。
私は通常、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
与える
大体、
:hardcopy
コマンドは簡単ですが、それほど柔軟ではありません。Vimで:TOhtml
コマンドを使用できます。これにより、表示されるもの(つまり、構文の強調表示)がHTMLとしてレンダリングされます。そこから、通常はヘッダー/フッターのコンテンツをカスタマイズできるため、PDFに印刷できるWebブラウザーが機能します。
これは、おそらくUselessによって言及された:hardcopy
コマンドに似ていますが、現在システムで確認できません。
もう1つの可能性はQtCreatorから印刷することですが、ヘッダー/フッターを設定する方法がないようです。
editorを要求するので、ps-print-buffer
を使用してEmacsから直接印刷できます。
ヘッダーとフッターは、ps-print-headers
という名前のカスタマイズグループにあります。
Font-lockを使用している場合、おそらく必要な構文の強調表示があります。必要に応じて、ps-extend-face
関数を使用して調整できます。
そうは言っても、a2ps、enscript、LaTeX + listingsなどの適切な「Grind」ツールを使用することをお勧めします。
完全を期すため、そしてその解決策はお勧めしませんが、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
にある必要があります)。ただし、ファイルに正しい拡張子が付いている場合は必要ありません。 。また、構文の強調表示は完全とはほど遠いものです。
必要なのは LibreOffice Writer だけです。
C/C++コードを貼り付けます。
単語を見つけて、BoldをすべてのC++キーワードにします。
あなたはここでそれらを見つけることができます: http://en.cppreference.com/w/cpp/keyword
単語を検索するにはCtrl + Fを押します。[Match case]を選択し、[Find All]をクリックします(スクリーンショットを参照)。
その後、名前とページ番号を含むヘッダーとフッターが必要です。
EDIT:( Christophe Strobbe コメント:)
コードのカラーリングにはLibreOffice拡張機能があります: Code Colorizer Formatter 。 (まだテストしていません。)
GUIインターフェースが好きだったので、私は何年も前にSolarisシステムを使用していたときにNeditを使用していました。まだ残っているようです。見てみな。