注意
この記事で紹介しているテクニックを用いて作成した文書を、配布したり販売したりしてよいかについては現在調査中であるので、この記事の内容はあくまでも「そういうこともできる」程度に考えて欲しい。また、もしTravis CIで作成した成果物のライセンスなどに関する情報をお持ちの方がいらっしゃいましたら、この記事のコメントなどで知らせて欲しいと思う。
2016/6/25
AppleのLegal Questionに問い合わせメールを送ったものの、返答がありません……。
はじめに
本や冊子などをLaTeXで作成する際には、フォントにこだわりたくなることがある。有名なフォントとしてヒラギノフォントがあるが、ヒラギノフォントは有償なので、フォントを購入するかあるいはMacを買う必要がある。この記事では、Travis CIを使ってお金を支払うことなくヒラギノフォントが埋め込まれたPDFをLaTeXで生成する方法について述べる。
この記事の手法を用いると、次のようなPDFファイルをTravis CI上で作成することができる。
なお、この記事で述べていることのサンプルリポジトリがGitHub上のtravis-texにあるので、こちらも参考にして欲しい。
アイディア
Travis CIにはiOS向けアプリケーションなどをコンパイルするために、OSXの環境が用意されている。OSXにはヒラギノフォントが標準でインストールされているので、それを用いてフォント埋め込みPDFを生成する。
やり方
次のようなことを実行する.travis.yml
を作成する。
- ビルド環境をOSXにする
- BasicTeXをダウンロードしてインストールする
- 日本語文書をコンパイルするためのパッケージをインストールする
- フォント埋め込みの準備をする
- LaTeXファイルのコンパイルする
- GitHubの
gh-pages
ブランチへアップロードする
これらについて順に説明する。なお、完成したtravis.yml
は次の場所からダウンロードできる。
ビルド環境をOSXにする
次のような記述を.travis.yml
に追加する。
os:
- osx
キャッシュの設定
LuaTeXはフォントに関する情報のキャッシュを生成する。キャッシュの生成には時間がかかるため、Travis CIのキャッシュ機能でフォントのキャッシュを持っておくようにする。
cache:
directories:
- "$HOME/Library/texlive/2016basic/texmf-var/luatex-cache"
BasicTeXをダウンロードしてインストール
Mac環境でTeX環境を整える場合、MacTeXというディストリビューションが有名であるが、こちらはファイルサイズが巨大であるためダウンロードに時間がかかり、結果としてビルド時間が伸びてしまう。そこで、最小限のパッケージで構成されているBasicTeXをダウンロードしてインストールする。最後にパスを通しておく。
install:
- curl -L -O http://mirrors.concertpass.com/tex-archive/systems/mac/mactex/BasicTeX.pkg
- sudo installer -pkg BasicTeX.pkg -target /
- rm BasicTeX.pkg
- export PATH=$PATH:/usr/texbin
日本語文書をコンパイルするためのパッケージをインストールする
これらはpTeXやdvipdfmxで用いるフォントマップファイルなど、日本語文書をコンパイルする際に必要となる諸々をインストールする。これにはTeXLiveのパッケージマネージャーであるtlmgr
を用いて、次のようにすればよい。
また、LuaLaTeXで日本語組版をするためのLuaTeX-jaパッケージの依存は自力で解決したため、このように多くのパッケージをtlmgr
でインストールしている。
- sudo tlmgr update --self --all
- sudo tlmgr install latexmk collection-luatex collection-langjapanese collection-fontsrecommended filehook type1cm mdframed needspace
フォント埋め込みの準備をする
ヒラギノフォントのシンボリックリンクをTeXLiveの見える場所に置く必要がある。この時、texmf-local
を作成する場所に注意する必要がある。TeX Wikiなどには/usr/local/texlive/texmf-local
となっているが、BasicTeXの場合は/usr/local/texlive/2016basic/texmf-local
でなければ正しく動作しない。
before_script:
- sudo mkdir -p /usr/local/texlive/2016basic/texmf-local/fonts/opentype/public/hiragino/
- cd /usr/local/texlive/2016basic/texmf-local/fonts/opentype/public/hiragino/
- sudo ln -s "/Library/Fonts/ヒラギノ明朝 Pro W3.otf" HiraMinPro-W3.otf
- sudo ln -s "/Library/Fonts/ヒラギノ明朝 Pro W6.otf" HiraMinPro-W6.otf
- sudo ln -s "/Library/Fonts/ヒラギノ角ゴ Pro W3.otf" HiraKakuPro-W3.otf
- sudo ln -s "/Library/Fonts/ヒラギノ角ゴ Pro W6.otf" HiraKakuPro-W6.otf
- sudo ln -s "/Library/Fonts/ヒラギノ角ゴ Std W8.otf" HiraKakuStd-W8.otf
- sudo ln -s "/Library/Fonts/ヒラギノ丸ゴ Pro W4.otf" HiraMaruPro-W4.otf
- sudo ln -s "/System/Library/Fonts/ヒラギノ明朝 ProN W3.otf" HiraMinProN-W3.otf
- sudo ln -s "/System/Library/Fonts/ヒラギノ明朝 ProN W6.otf" HiraMinProN-W6.otf
- sudo ln -s "/System/Library/Fonts/ヒラギノ角ゴ ProN W3.otf" HiraKakuProN-W3.otf
- sudo ln -s "/System/Library/Fonts/ヒラギノ角ゴ ProN W6.otf" HiraKakuProN-W6.otf
- sudo ln -s "/Library/Fonts/ヒラギノ角ゴ StdN W8.otf" HiraKakuStdN-W8.otf
- sudo ln -s "/Library/Fonts/ヒラギノ丸ゴ ProN W4.otf" HiraMaruProN-W4.otf
- sudo mktexlsr
- cd -
- sudo kanji-config-updmap-sys hiragino-pron
- sudo fmtutil-sys --byfmt lualatex
LaTeXファイルのコンパイル
pLaTeXとdvipdfmxを用いて次のようにすればよい。また、LuaLaTeXは直接PDFを生成するので、dvipdfmxのようなものは必要ない。
script:
- platex src/platex.tex
- dvipdfmx platex
- lualatex src/lualatex.tex
これで、リポジトリ直下にplatex.pdf
とlualatex.pdf
が生成される。
GitHubのgh-pages
ブランチへアップロードする
まず、次のWebサイトに従って、デプロイ用の公開鍵をリポジトリに登録し、秘密鍵を暗号化してリポジトリに追加する。
後はGitを操作して成果物をgh-pages
へコミットし、プッシュする。
after_success:
- echo -e "Host github.com\n\tStrictHostKeyChecking no\nIdentityFile ~/.ssh/deploy.key\n" >> ~/.ssh/config
- openssl aes-256-cbc -k "$SERVER_KEY" -in deploy_key.enc -d -a -out deploy.key
- cp deploy.key ~/.ssh/
- chmod 600 ~/.ssh/deploy.key
- git config --global user.email "m@yyu.pw"
- git config --global user.name "Yoshimura Yuu"
- git fetch origin gh-pages:gh-pages
- git stash -u
- git checkout gh-pages
- rm platex.pdf lualatex.pdf
- git stash pop
- git add platex.pdf lualatex.pdf
- git commit -a -m "auto commit on travis $TRAVIS_JOB_NUMBER $TRAVIS_COMMIT"
- git push git@github.com:y-yu/travis-tex.git gh-pages:gh-pages
まとめ
このようにすることで、お金を支払うことなくヒラギノフォントが埋め込まれたPDFファイルをLaTeXを用いて生成することができた。今後の課題としてLuaLaTeXでもヒラギノフォントを埋め込みたいが、僕が試した限りは上手くいかなかった1。この問題に対しては@aminophenさんからいろいろな助言を頂いたが、結局解決はできなかった。
上記の問題は、TeXLive2016でLuaTeXがアップデートされたことで解決した。本文を加筆し、LauLaTeXによる方法も追記した。
ただ、冒頭でも述べたようにこの方法を用いて作成した文書のライセンスなどが不明瞭なので、この方法を何か重大なものに採用するのは控えた方がよいだろう。