これは「TeX & LaTeX Advent Calendar 2020」の18日目の記事です.
LaTeX Workshop では GitHub Actions 上で integration test を実行しています。Windows、Linux、および macOS の各プラットフォームに TeX Live と VS Code をインストールし、テストを実行しています。特に /
と \
などパスの扱いに気をつけないといけない Windows 上でテストできるのは非常に良いです。この記事では Github Actions 上の Windows に TeX Live をインストールして、インストールされたファイルをキャッシュする方法を説明します。
.github/workflows/
ディレクトリと test/
ディレクトリにそれぞれ以下のような YAML ファイルを置けばできます。
.github/workflows/texlive_on_win.yml
の内容:
name: TeX Live on Windows
env:
cache-version: v1
on: [push]
jobs:
windows:
runs-on: windows-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v2
- name: Set up PATH
run: |
echo "C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin" >> $GITHUB_PATH
echo "D:\texlive\bin\win32" >> $GITHUB_PATH
shell: bash
- name: Cache TeX Live
id: cache-texlive
uses: actions/cache@v1
with:
path: D:\texlive
key: ${{ env.cache-version }}-${{ runner.os }}-texlive-essential
restore-keys: |
${{ env.cache-version }}-${{ runner.os }}-texlive-essential
- name: Download install-tl.zip
run: |
curl -s -O -L http://mirror.ctan.org/systems/texlive/tlnet/install-tl.zip
unzip -q install-tl.zip
mv install-tl-2* install-tl-dir
if: steps.cache-texlive.outputs.cache-hit != 'true'
- name: Run install-tl-windows.bat
run: |
install-tl-dir\install-tl-windows.bat --profile test\texlive_windows.profile
if: steps.cache-texlive.outputs.cache-hit != 'true'
shell: cmd
- name: Run tlmgr install
run: |
tlmgr install latex-bin platex uplatex tex xetex
tlmgr install amsmath graphics tools import subfiles latexmk
if: steps.cache-texlive.outputs.cache-hit != 'true'
test/texlive_windows.profile
の内容:
selected_scheme scheme-infraonly
TEXDIR D:/texlive
TEXMFCONFIG ~/.texlive/texmf-config
TEXMFHOME ~/texmf
TEXMFLOCAL D:/texlive/texmf-local
TEXMFSYSCONFIG D:/texlive/texmf-config
TEXMFSYSVAR D:/texlive/texmf-var
TEXMFVAR ~/.texlive/texmf-var
option_doc 0
option_src 0
何をしているかはだいたい分かるかと思います。
install-tl
コマンドにはプロファイルを指定して TeX Live をインストールするというオプションがあるので、それを利用して tlmgr だけをD:/texlive
以下に最初にインストールする。- その後で tlmgr で必要なパッケージだけを
D:/texlive
以下にインストールする。 - インストールが成功したら
D:/texlive
以下をキャッシュする。次回からはこのキャッシュを使用する。 - キャッシュをクリアしたい場合は
cache-version
のバージョンを上げる。
という流れになっています。インストールするパッケージは必要に応じて書き換えればよいかと思います。上の設定では D:/texlive
以下のサイズは100MB程度になります。D:/texlive
を使っているのは趣味の問題です。mv install-tl-2* install-tl-dir
は unzip
したときに生成されるディレクトリの名前を install-tl-dir
に変えています。
記憶が曖昧ですが、TinyTeXの記事とinstall-tlのリポジトリをたしか参考にしました。
Windows にあらかじめインストールされているソフトはドキュメントを参照してください。Perl や curl がインストールされていてとても便利です。
GitHub Actions は変化が激しいです。どれくらい激しいかというと公式のドキュメントのURLが頻繁に変わって手元のメモが役に立たなくなるくらいです。やめてほしい。
コマンドは管理者権限で実行されます。ユーザーフォーラムで議論されていたりもしますが、回避策はないようです。
キャッシュのサイズは最大5GBまで、1週間アクセスがないと削除されます。参照。
Dドライブの空き容量は14GBらしいです。
LaTeX Workshop では実行するコマンドに渡すファイル名として /
区切りのパス(%DOC%
など)しか利用できなかったのですが、GitHub Actions で色々テストした結果、どうにもならないケースがあることがわかり、\
区切りのパスの変数(%DOC_W32%
など)を別に用意することにしました。
MiKTeX でも同じようなことがしたいのですが、どうもうまくいかないです。今後の課題としたいと思います。
- https://github.com/TeX-Live/installer/tree/9be271305c6f1665352b048742a244f9b2720875
- Xie Y (2019). “TinyTeX: A lightweight, cross-platform, and easy-to-maintain LaTeX distribution based on TeX Live.” TUGboat, 30–32. http://tug.org/TUGboat/Contents/contents40-1.html. https://tug.org/TUGboat/tb40-1/tb124xie-tinytex.pdf