粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

ソースコードをきれいに印刷したい

目が悪い&人のコードを読む際にはソースコードを紙で見たいという欲求があります。
意外とソースコードの印刷ってきれいにならないんですよね。
最低でもハイライト等の色分けが欲しいです。

幾つか試したのでメモとして残します。
追記:MATLABファイルはMATLABから印刷するのが綺麗。

jupyter を使った印刷

jupyterは依然Texの生成にお世話になったのできれいにソースコードを出力する手法の候補としてすぐ思いつきました。
ossyaritoori.hatenablog.com

なお,今回はmatlabコードを対象とします。
Pythonでもほぼ変わらないでしょう。
ossyaritoori.hatenablog.com

htmlを介した印刷

jupyterからhtmlへと変換すると結構きれいに見えます。
f:id:ossyaritoori:20171227220532p:plain


この画面からダイレクトに印刷するとこうなります。
何故かハイライト等が消えてしまいますね。
f:id:ossyaritoori:20171227203314p:plain

あまり使いたくないかなぁ。

マークダウンを介したhtml作成

一方で一度マークダウンmdファイルとしてダウンロードした後にVScodeでhtmlに変換するとハイライトが保管されたまま印刷事ができます。
f:id:ossyaritoori:20171227220817p:plain

latexを介したPDF作成

一番きれいに見えるのはこの手法です。
一度Texファイルで落としてから,PDFを作成すると一番綺麗に見えます。
しかし,この手法は手間が滅茶苦茶かかるのであんまり使いたくないです。

f:id:ossyaritoori:20171227221017p:plain

総括:面倒

jupyterはそもそも起動も面倒だし,いろいろとファイルを介するのはナシですかねぇ。
長いコードであればこの可読性の向上は意味がありますが…

あと,jupyterのKernelがちゃんと機能するPythonmatlabでしか使えないという欠点があります。
追記:書いてからせやろか?と思ったらC++のためのカーネルもあるようです。軽薄な発言は避けるべきですね。
JupyterにC++のノートのためのclingカーネルを追加する [Mac] - Qiita


VScodeを用いた印刷

最近はVScodeをエディタとして使っていることが多いですが印刷用の拡張機能を作ってくれた方がいます。
blog.bulkus.net

Printcodeで検索してください。

拡張機能:PrintCode を用いた印刷

一度htmlに変換して表示するというアイデアは極めて似通ったものになります。

とりあえずmatlabファイルを印刷しようとした場合は次のようになります。
f:id:ossyaritoori:20171227214831p:plain
あんまりきれいにはなってない。

Pythonコードはもうちょいまともです。
f:id:ossyaritoori:20171227221649p:plain

結論:まぁ便利なので採用

とりあえず手軽だし殆どの言語に関してはこれでいいかなと。
matlabに関しては長さによってはTexからのPDF変換と使い分けることになるかもしれません。

その他

無料ツールやソフトに関しては以下を参照のこと。
Windowsでソースコードを印刷するのにいい方法はないかな - kinneko@転職先募集中の日記

追記: matlabを用いた印刷

matlabコードに関してはmatlabから「Ctrl+P」→「Microsoft PDF printer」でファイルに出力することでとても綺麗なPDF出力を得ることが出来ます。
こんな感じ。
f:id:ossyaritoori:20180101205611p:plain