文章構造を生成する Pug を採用しました。HTML タグの括弧を書かないのでレビュー時に文章が見やすいことと、要素にクラスを付与したりスタイルを直書きしたりしても記法が変わらないこと(候補にマークダウンがあったが、マークダウン記法に HTML 記法が混ざるのがあまり好きではない)が理由です。 また、PDF 生成時に数式の表示やシンタックスハイライトの有効化を行うため、ここで前処理をします。Pug の filter 機能を用いて、Pug 形式で書かれた数式を MathJax 形式に、コードブロックを Prism.js 形式に変換します。詳細な例は割愛しますが、文字列を受け取って決められたクラスを持つ要素の中に入れる、という処理になります。 スタイルと文章構造の生成は、gulp で該当ファイルを監視し、ファイルの保存をトリガーとして生成を行い、結果をブラウザで確認する、という流れになります。