適切にフォーマットされたコードを印刷するにはどうすればいいですか(ハードコピー印刷)

適切にフォーマットされたコードを印刷するにはどうすればいいですか(ハードコピー印刷)

Stack Overflow でマークダウンを使用して作成するのと同様にmonospace output、自分のプログラムでもそれを実行するにはどうすればよいですか。

lp filename.txtを試してみたところ、ローカルネットワークプリンタを使用して「そのまま」印刷できることがわかり、うれしく思いました。

問題は、出力が等幅ではないことです。

...よりも速いオプションはありますか?

1) copy the text
2) paste into a text doc
3) format the document as mono
4) print it 

次のようなオプションを見つけたいですlp filename.txt -format=mono;)

答え1

vim エディタを使用して、vim が読み取れる任意のファイルをきれいに印刷できます。PostScript ファイルを作成するには、以下を使用します。

vim \
  -c 'hardcopy > output.ps' \
  -c quit <input_file>

PDF ファイルが必要な場合は、&& ps2pdf output.psコマンド ラインに追加します。

現在のクリップボードの内容を一時ファイルに貼り付け、そのファイルに対して vim を実行し、結果のファイルを印刷して一時ファイルを削除する小さなスクリプトを作成することもできます。

答え2

ここでの最短パスはおそらく を使用することですa2ps。これはデフォルトで等幅の PostScript を生成します。

brewでインストールできますa2psbrew install a2ps

設定に応じて、出力は stdout または lp に直接送信されます。 で上書きします-o。また、a2psいくつかのプログラミング言語を認識し、それらをきれいに印刷します。

a2ps -o output.ps infile.text

色が利用可能な場合に使用します--pro=color:

a2ps --pro=color -o output.ps infile.text

vimHTML 出力にはの機能を使用する傾向があります2html

答え3

a2ps答えは、brew でインストールしたことです。

brew install a2ps

今ではそれが可能a2ps myfilenameで、動作します。

残念ながら横向きで印刷され、縦向きにしようとすると左に押しつぶされて小さくなり、ページの 50% しか占めません。[更新 - パラメータ -1 (1 枚のシートで見つけるページ数 - デフォルトは 2) でこの問題の修正が見つかりました]

しかし、横向きにするとうまく機能し、コードはfixed format私が探していたスタイルになりました。

関連情報