何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

Wordにソースコードを貼る

どうでもよい前書き

何故、あなたはWordでソースコードを扱うことになったのだろうか、胸に手を当てて考えて欲しい。 テキストファイルで十分じゃないか?そう思うのであればテキストファイルを使うべきである。

しかし、Wordでソースコードを扱いたくないのにそれを強いられる場面がある。 自分の意志ではなく偉い人のご意向に従う、とかLaTeXで書こうとしたら強い拒否反応があったとか、色々考えられる。 今日、私はソースコードをWordに貼ることを強いられた*1

解決策を求め、私は偉大なるGoogle先生に助けを求めた。

最初に見つけたのは【美しいレポート】Wordでプログラムのソースコード貼り付け|muu000の暇人プログラミングである。 この方法は万能ツールであるExcelを用いてソースコードを整形し、WordにExcelのセル貼り付けるという手法である。

次に目に入ったのはSyntaxHighlighter(3.x)で装飾されたソースコードを装飾ごとコピーする:Word編 - Dr.ウーパのコンピュータ備忘録であった。 SyntaxHighlighterを活用する方法である。

絶望しつつ0と1の欠片 : Microsoft Wordでソースコードをきれいに書くを見る。 1行1列の表を作りそこに貼り付け、整形するという工程で以外にシンプルな方法。某所のdocxファイルもこの手法を採用した痕跡があった。

だが、いずれの手法にも満足はできなかった。手作業が多かったりハイライトまでは扱えないなど不満が多かった。

何かしらのエディタでソースコードを見ると見やすいようにハイライトしてくれるなどソースコードは紙に印刷するよりもディスプレイで見たほうがわかりやすいことが多い。 技術書はソースコードが紙に印刷してあるが、何かしらの解説があるので読みやすい。 折角Wordにソースコードを貼り付けるならば何らかの付加価値をつけたい。

どうするか、試行錯誤して次のような手順が簡単にそれなりの成果を得られるのではないかという結論に達した。

Wordにソースコードを貼る方法

$ pip install Pygments

である。

#include <stdio.h>

int main(void){
    printf("Hello, World!");

    return 0;
}
  • コマンドライン上で以下のコマンドを叩く。なおinput.cと同じディレクトリにいると仮定する。
$ pygmentize -f rtf -o output.rtf input.c
  • output.rtfを開き、好きなように加工する。フォントを好みの等幅フォントに変える、サイズ変更、など行う。

  • 貼り付ける。1行1列の表を作りその中に貼り付けると枠っぽくなる。

ポイントは、ソースコードのハイライトをPygmentsに任せること、直接rtfファイルを作ることでWordに貼りやすくしたこと、である。 SyntaxHighlighterはWebに貼り付けるのに特化している(らしい)が、PygmentsはHTMLも出力できる。 もっとも、rtfファイルを経由すればよいので、Python+Pygmentsに限らず他のツールでも似たようなことは実現できると思う。 なるべくツールに任せて快適なWord生活を過ごしてほしい。

…もう2度とWordにソースコードを貼るといった機会がありませんように。

*1:正確にはソースコードではないが状況はほぼ同じである。