LaTeXで書いたレポートをRubyのTest::Unitでチェックする話。

使うもの

Homebrewで入れた手元のrubyは2.3.3だった。ちょっと前からTest::Unitはgemに分離されたらしいけどまだ使えたのでこれでやる。

  • Ruby 2.3.3p222
  • Test::Unit(標準のほう)

やること

チェックすべき項目は以下。 人間の目の方が楽な項目もあるので、今回は太字にした項目に対してのみ行う。

  • 図表に対する参照が番号を利用したものであるか
  • 図表のセンタリング
  • 図表のキャプション
  • 図表は本文中で参照されているか
  • 章立てしているか
  • ページ番号が表紙を除く全てのページに正しく記入されているか
  • フォントサイズが10~11ポイントか
  • ページの余白が適切か
  • 勝手な改行等が行われていないか

実装

ラベルと参照の対応は、正規表現で引っこ抜いてflattenした配列を比べる。 図表関係は自分が使うパターンの中で、キャプションの位置や有無、ラベルの有無、センタリングされているかを正規表現でマッチして検証することにした。

例えば図のキャプションは下にあってほしいので、このような塊に対してassert_match /\\includegraphics.*\\caption{.*?}.*?/mする。

\begin{figure}[H]
\begin{center}
\includegraphics[width=6cm]{image/test.png}
\caption{テストのテスト}
\label{menu}
\end{center}
\end{figure}

できたもの

nobuyo/latex-test

(名前がダサい&使う時に別リポジトリだと不便なのでdotfilesに吸い込まれる気がしてる)