Archives

GitLab+JenkinsでTeXを自動ビルドして論文作成と精神を加速させる

Wordを使いながら、こう考えた。

量が増えれば処理が鈍る。画像を移せば落とされる。意地を通すはWordの方だ。とかくにMS帝国は住みにくい。住みにくさが高じると、安い所へ引き越したくなる。どこへ越しても住みにくいと悟った時、TeXが生まれて、GitLab+Jenkinsが出来る。

かの夏目青年は30にしてこのように悟ったわけであるが、今どきの大学院生である私もそのとおりであると思う。Wordを使わない理由は、

  • ページ数が増えると重い
  • 画像のレイアウトが思ったようにならない
  • 勝手にレイアウトを変える (OFFに出来ることは出来る)

など。論文の終盤でこのような理不尽の嵐にさらされて精神を病むものは後を絶たないと聞く。責任者に問いただす必要があるかどうかは別にして、現実を変えたいと願うならばTeXを使うと良い。TeXとは一言で言ってしまえば図とか文とか表を配置するための言語で、Knuth御大がムシャクシャして作ったものだ。

よしではTeXを使おうと思っても準備が必要で、ちょっとググるとLaTexだのpTeXだのXeLaTeXだの出て来て頭がフットーしそうになる。なのでここではそれを簡単に整理してみたい。まずTeXもLaTeXもpTeXもXeLaTeXも*.texファイルを扱うコンパイラで、その目指すところもすべて同じで、

  • 目標: *.texファイルから文書を作る

ことである。この「文書」というのが歴史的にDVIからPostScript、PDFへと変遷してきて、それぞれにコンパイラや変換ソフトが登場してきた。XeLaTeXなんかは*.texからPDFを直接作成できる。

もう一つの軸は多言語対応である。TeXは英語の文書をコンパイルするために作られたので、日本語の文書に対応するにはそれなりの拡張が必要になる。TeXの日本語拡張版がpTeXである。TeXの高機能版であるLaTeXの日本語拡張版はpLaTeXだ。さらにLaTeXの進化版のLaTeX2eの日本語拡張版のpLaTeX2eというものもある。だいたい重要な所をまとめると次の表みたいな感じになる。

tex-900x808

「XeTexとかLuaTeX使えば最強じゃね?」と思われるかもしれないが、そのとおりである。しかもこれらはフォントの指定も出来る。

しかしそれを阻むものがある。学会指定のスタイルファイルである。LaTeX2eもしくはpLaTeX2eに対応したテンプレートが配布されることが多いような気がする。本文のtex記法自体はだいたい使いまわせるので、

  • スタイルが指定されてない: XeLaTeX (LaTeXをサポートしたXeTeX)
  • スタイルが指定されている: みんなそれを使うしかないじゃない(pLaTeX2eが多い)

という具合である。なぜLuaTeXじゃなくてXeLaTeXなのかというと、LuaTeXがまだ評価版であるということ、そのために情報が少ないことが原因である (LuaTeXのバージョン1.0は2012年リリースが予定されていたがまだらしい)。

思わず Lua で LaTeX してみた ~LuaTeX で日本語しない件について~  [電脳世界の奥底にて] 

Differences between LuaTeX, ConTeXt and XeTeX – Stack Exchange

ではインストールから出力するまでにやることを書く。

1. インストール

texliveをインストールする。上述のコンパイラが全部インストールされるので便利。windows/mac/linuxそれぞれ利用可能。しかも編集&閲覧ソフトのTeXWorksも同梱される。macではTeXnicleの方がおすすめだけど。

Installing TeX Live over the Internet

2. スタイルを整える

いろいろググったりした結果できたXeLaTeXのファイル群をGitHubに置いておく。thesisとarticle-single、article-multiの2種類。thesisはchapter>section>subsection構成で、articleはsectionから始まる構成。article-multiはファイルを分散させてる。

Drunkar / tex-template

参考にしたのは以下のサイト

参考文献の管理にはBibTeXを、ソースコードのシンタックスハイライトにはmintedを使っている。

3. コンパイル

BibTeXを使っているので3回コンパイルしなければならない。

#!/bin/sh
mainfile=index
# for mac (add texlive path otherwise.)
PATH=/usr/texbin:/usr/local/bin:$PATH
ENGINE=xelatex
BIBTEX=bibtex

$ENGINE -synctex=1 -file-line-error -interaction=nonstopmode --shell-escape  $mainfile
$BIBTEX $mainfile
$ENGINE -synctex=1 -file-line-error -interaction=nonstopmode --shell-escape  $mainfile
$ENGINE -synctex=1 -file-line-error -interaction=nonstopmode --shell-escape  $mainfile

後TeXnicle用のエンジンはgistに置いた。

 Drunkar / xelatex_bibtex_minted.engine

試しにgithubから取ってきてコンパイルできたらOK.

$ git clone git@github.com:Drunkar/tex-template.git
$ cd tex-template/thesis
$ sudo chmod 755 build_xelatex.sh
$./build_xelatex.sh

とすればindex.texがこんな感じでできる。

article-single, artice-multiも同様。

 4. Jenkinsでやる

まずGitLabにリポジトリを作る。

Jenkinsにも同様のプロジェクトを作ってビルドスクリプトに上記のbuild_xelatex.shを貼り付ける。必要ならパスを追加する。

スクリーンショット_022814_120729_AM

pushでビルド開始するようにgitlab pluginとかを入れる。GitLabとJenkinsが同一サーバの場合は前回の記事を参照。

TeXnicleの設定

tex/latexで文章を書くにはTeXnicleが便利だ。Lyxはアイコンがキモくてやだし、このさいmac専用であることとちょっとアイコンがダサいことには目をつぶろう。

さて、texというと日本語を表示するまでに挫折する人がほとんどではないかと思うのだが、TeXnicleはちょっと設定すればできる。

TeXnicle#設定 -TeX Wiki

これで試しにpdfを作成してみると、なんか大きさがおかしい・・・?

よく見てみるとA4サイズになっていなかった。dvipdfmxはデフォルトではa4だと思ってたんだけど。

Preferences > Typesetting > Engines から、上記の設定で作った設定をRevealし、テキストエディタで編集する。

$DVIPDFMX "$mainfile"

$DVIPDFMX -p a4 "$mainfile"

に変更。

デフォルトはUS-Letterだったみたい。