能無いモノローグ

キュレェの Playground

TeX Live + (u)pLaTeX とかいう終わりみたいな環境を使っている人・使おうとしている人を救いたい

はじめに

この記事は LaTeX の環境構築をこれからする人に一番読んでいただきたいです(が、別に LaTeXチュートリアルではないです)。

また、LaTeX を使っている上で "Tectonic" という用語(一般名詞としての用法ではない)に聞き覚えがない人も、この記事を読んだほうがいいかもしれないです。

(u)pLaTeX を使うのをやめてくれ

acetaminophen.hatenablog.com

が publish されて早 2 年ですが、未だに (u)pLaTeX を使っている人を見かけて胸が苦しくなります。彼・彼女らは(あなたもですよ)仮にも理系大学生であり、俺(底辺高専生)よりも普段から LaTeX を使った文章を書いているはずなのに、環境にこだわらない神経がわかりません。

下手な例えですが、料理人が錆びた包丁を使って作った料理が、切れ味の良い包丁を使った料理に勝るわけないですよね。

(u)pLaTeX に殺された人

学校の先輩 (OB) が pLaTeX を使って HTML について(?)レポートを書いており、死んでいました。

pLaTeX を使うと HTML (というか '<' と '>' )はうまく表示できないっぽいです。

pLaTeX でのレンダリング結果

LuaLaTeX でのレンダリング結果

XeLaTeX でのレンダリング結果

LuaLaTeX / XeLaTeX を使うとこの問題は解消することができます

(u)pLaTeX + TeX Live の代替となる選択肢

LuaLaTeX or XeLaTeX + TeX Live

TeX Live は全てのパッケージを入れるとクソデカい容量になってしまう上に、ダウンロードにもとても時間がかかる*1ので、選択的にパッケージを入れたいわけですが、どのパッケージがどれに入っているのかがわからないのでかなり苦労します。私も苦労しました。

この環境構築の長さが TeX のハードルを上げていると思います。

視覚的にわかりやすいと思うので、Ubuntu にどれだけ TeX Live 関連のパッケージがあるかの画像を貼っておきます。

TeX Live 関連のパッケージ一覧

すでに環境構築をしている方はこの選択肢でも問題ないかもしれませんが、今から環境構築をする方には次の選択肢をおすすめしたいです。

Tectonic (XeLaTeX ベースの処理系)

_人人人人人人人人人人人_
> この記事の本題です <
 ̄YYYYYYYYYYYYYYYYYYYY ̄

github.com

Tectonic という Rust で TeX の処理系を書き直すことを目的とした気概のあるプロジェクトがあります。(まだ C の割合が多いですが)

この処理系の何が素晴らしいかというとtex ファイルのプリアンブルに書かれた \usepackage を解釈し、自動でパッケージをインストールしてくれる」ということです!(Rust ユーザーにわかりやすい表現をすると、初回の cargo build の際に Cargo.toml にある依存関係を取ってくるのと似たことをしてくれます)

Tectonic は内部的に XeLaTeX を使用しており、(u)pLaTeX や LuaLaTeX を使っている場合はプリアンブルをある程度書き換えないといけませんが、そこまで難しくはないです。一応、自分が数学の自主ゼミをやるときに使っているプリアンブルの抜粋(と documentclass)を貼っておきます。

\documentclass[xelatex,ja=standard,jafont=noto]{bxjsarticle}
\usepackage{graphicx}
\usepackage{bxtexlogo}
\usepackage{tcolorbox}
\usepackage{tikz}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{here}
\tcbuselibrary{breakable, skins, theorems}

%---------------------------------------------------------------

\title{}
\author{}
\date{\today}

\begin{document}

\tableofcontents
\clearpage

\end{document}

インストール方法

Rust が入っている OS すべて

crates.io にあるので、cargo install tectonic をすれば一発です。

Windows

github.com

からビルド済みのバイナリを取ってきてインストールすることもできます。

残念ながら winget にはなさそう (2023-10-07 現在)です。

Mac

brew install tectonic すればよさそうです

使い方

tectonic {ファイル名}.tex とするだけです。

自分で以前パッケージをインストールしていない場合は、初回のパッケージダウンロードが入るため、tectonic でのコンパイルは時間がかかってしまいますが、2 回目以降はパッケージがダウンロードされているので、高速になると思います。

> tectonic {ファイル名}.tex
Running TeX ...
warning: accessing absolute path `/usr/share/fonts/truetype/padauk/Padauk-Regular.ttf`; build may not be reproducible in other environments
warning: accessing absolute path `/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf`; build may not be reproducible in other environments
warning: accessing absolute path `/usr/share/fonts/type1/gsfonts/b018035l.pfb`; build may not be reproducible in other environments
warning: accessing absolute path `/usr/share/fonts/truetype/noto/NotoSansThaana-Regular.ttf`; build may not be reproducible in other environments
Rerunning TeX because "{ファイル名}.aux" changed ...
Running xdvipdfmx ...
Writing `{ファイル名}.pdf` (17.80 KiB)
Skipped writing 2 intermediate files (use --keep-intermediates to keep them)

Writing {ファイル名}.pdf と出ていれば、同じディレクトリに {ファイル名}.pdf が生成されているはずです。

エラーはこんな感じです。

> tectonic {ファイル名}.tex

error: {ファイル名}.sty:1: LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help
error: halted on potentially-recoverable error as specified

さいごに

別にこの記事を共有はしなくていいのですが、Tectonic の存在自体は広めてくれると嬉しいです。

未だに pLaTeX 環境の学会があるらしく、pdf ではなく tex ファイル形式で出さないといけない場合はもしかしたら救いがないかもしれない(pLaTeX を使わないといけない)です。本当にすみません。それは全てその学会が悪いです。

*1:よく TeX を使っていると見かける TeX Wiki (https://texwiki.texjp.org/?TeX%20Live%2FWindows) には 「かなりの時間がかかります。 環境にもよりますが,多くの場合一時間から二時間ほどかかると思います」と書かれています