ICPCのライブラリPDFの生成

ICPCのWFまたは多くのアジア地区予選では持ち込めるライブラリのページ数が決まっています。
また、PDFの右上にページ番号、左上に大学名を入れろという指定がついてきます。

PDF化するコマンド

sublimeに印刷機能がなかったし、ページ番号と大学名を入れる方法も分からなかったので調べたらenscriptっていうコマンドがあるらしい。
なければbrewとかでインストールすれば使える。
enscriptではpost scriptのファイルが吐かれるので、pstopdfコマンドを使うとPDFに出来る。

ライブラリをlibrary.cppっていう1つのファイルにまとめておけば、下みたいな感じでうまいことPDFに出来ます。

enscript --highlight=cpp --line-numbers --color --header='HOGE University (team: HOGE)                                                                                      Page $% of $=' --landscape -2 -o library.ps library.cpp
pstopdf library.ps

1つのファイルに纏める方法ですが、以下のpythonスクリプトを走らせたりすればいいです。

import os

for f in os.listdir("."):
  if f == "library.cpp":
    continue
  if ".cpp" not in f:
    continue
  print("#"*50)
  l = (50-len(f)-2)//2
  r = (50-len(f)-2)-l
  print("#"*l+" "+f+" "+"#"*r)
  print("#"*50)
  print("")
  with open(f) as f:
    print(f.read())
  print("")

ページ番号とかを挿入できるツール

すでにPDFがあって、ページ番号とかを挿入したいって場合はこのサイトを使えば良さそう。
カスタム設定とかを使えば左上に大学名っていう指定も出来そう。
オンライン操作でPDFファイルにページ番号を追加www.ilovepdf.com