%#!texfot uplatex-dev
% TeX Live documentation (Japanese edition).
% English version is originally written by Sebastian Rahtz and
% Michel Goossens, now maintained by Karl Berry and others.
% Japanese edition is by Takuto Asakura. Public domain.
\RequirePackage{plautopatch}
\documentclass[uplatex,dvipdfmx,12pt]{jsarticle}

\usepackage{texlive-ja}

\Title{\TL ガイド 2025}
\Editor{Karl Berry}
\Translator{朝倉卓人（wtsnjp）}
\Website{https://tug.org/texlive/}

\date{2025年3月}

\begin{document}
\maketitle
\thispagestyle{empty}

\tableofcontents

\section*{訳者まえがき：日本語版『\TL ガイド』について}

この文書は毎年更新される\TL の公式ドキュメント\textsl{The {\TL} Guide}を個人が
翻訳したものです。内容としては\TL についてのごく初歩的な知識、インストール
方法、\TL マネージャを用いた\TL 管理方法が順番に解説され、さらに後半では\KPS
ライブラリの基礎や今日までの\TL における主な変更の履歴など、少し高級な事柄まで
が扱われています。

\TL ガイドは日本語を含め約10ヶ国語に翻訳されていることからもわかるように、
欧米圏のユーザのみならず全世界の\TL ユーザ向けの文書です。しかし、基礎的な解説
の中で言及されている\TeX 関連プログラムは主として欧文向けのものに限られ、この
日本語版\TL ガイドの読者がおそらく必要としているだろう、\TeX で和文を処理する
際に必要な情報は不足している部分があることを否めません。そのような情報を本翻訳
ドキュメントだけで完全に補完することは難しいですが、訳者が可能な範囲で、日本語
ユーザにとって有益と思われる補足情報をいくつかの「日本語\TeX ユーザ向けの
ノート」コラムや訳注の形で追加しています。

本翻訳ドキュメントについて、訳者は慎重な翻訳と技術的に正確な記述を心がけています
が、一部に不正確な翻訳や技術的に誤った記述が含まれている可能性があります。
本ドキュメントの内容に基づく運用結果については責任を負いかねますので、ご了承
ください。また具体的に翻訳が不適切な箇所等を見つけられましたら、ぜひ本翻訳
プロジェクトのGitHubリポジトリまでご報告をお願いします：
%
\begin{quote}
\url{https://github.com/wtsnjp/texlive-ja}
\end{quote}

最後に、本翻訳ドキュメントの作成にあたって八登祟之氏から多数のフィードバック
をいただきました。この場を借りて深く御礼申し上げます。

\section{イントロダクション}\label{sec:intro}

\subsection{\TL と\TeX コレクション}

このドキュメントはGNU/Linuxやその他のUnix系システム、macOS、Windows向けに
\TeX 関連プログラムを集めたディストリビューション\TL の概要について解説する
ものです。

この文書の読者は既にインターネット、{\TeX} Users Groupの配布する\TeX
コレクションDVDまたはその他の方法を利用して\TL を入手していることと思います。
\ref{sec:tl-coll-dists}節は\TeX コレクションDVDの収録物について簡単に説明して
います。\TL と\TeX コレクションは{\TeX} Users Group（TUG）の協力によって維持され
ています。このドキュメントは主として\TL それ自体を解説するものです。

\TL には\TeX, \LaTeXe, \ConTeXt, \MF, \MP, \BibTeX 実行プログラムはもちろん、
\TeX を拡張する多数のマクロパッケージやフォント、そしてそれらの付属ドキュメント
が含まれています。また、世界中で利用されるさまざまな言語における組版もサポート
されています。

\TL のバージョンごとの主な変更点については、このドキュメントの末尾にある
\ref{sec:history}節（\p.\pageref{sec:history}）を参照してください。

\subsection{サポートOS}
\label{sec:os-support}

\TL にはGNU/Linux, macOS, Cygwinを含む、多くのUnix系プラットフォーム向けの
バイナリが含まれています。同梱されているソースを用いれば、デフォルトではサポート
されていないプラットフォームでコンパイルを行うこともできます。

Windowsについては、Windows~7以上のバージョンをサポートしています。いまのところ
Windows Vistaでも概ね動作する\emph{可能性があります}が、Windows XPよりも古いものに
ついては\TL のインストールすら成功しません。\TL はWindows向けには64-bitバイナリを
収録しています。

WindowsおよびmacOSに対する\TL 以外のディストリビューションについては\ref{sec:%
tl-coll-dists}節を参照してください。

\subsection{\TL のインストール（基本）}
\label{sec:basic}

\TL はDVDまたはインターネットを利用してインストールすることができます（\url{%
https://tug.org/texlive/acquire.html}）。インターネット・インストーラ自体はとても
小さなプログラムで、これを実行すると必要とされるすべてのファイルをインターネット
からダウンロードします。

DVDインストーラはあなたのローカルディスクに\TL をインストールするものですが、
\TeX コレクションDVD上にある\TL のデータ（またはその\file{.iso}イメージ）
を直接実行することはできません。USBディスクなどにポータブルインストールを
行うことも\emph{可能です}（\ref{sec:portable-tl}節を参照）。インストールに
ついては後ほど詳述しますが（\p.\pageref{sec:install}）、ここではクイック
スタートとして簡単に説明します：

\begin{itemize}
\item Unix系ではインストールスクリプトは\cmd{install-tl}です。Windowsでは
代わりに\cmd{install-tl-windows}を実行する必要があります。このプログラムに
\sopt{gui}オプションを与えると「GUIモード」（Windowsでデフォルト）、
\sopt{gui=text}を与えると「テキストモード」（その他のプラットフォームで
デフォルト）が実行されます。

\item \TL をインストールすると「\TL マネージャ」（\cmd{tlmgr}）も利用可能になります。
インストーラと同様、このプログラムにもGUIモードとテキストモードがあります。\TL
マネージャを用いてパッケージのインストールやアンインストール、その他さまざまな設定
タスクを実行することができます。
\end{itemize}

\subsection{セキュリティについて}
\label{sec:security}

私たちの知る限り、\TeX の主要なプログラムそれ自体はとても堅牢です（今までもずっと
そうでした）。しかしながら、\TL に含まれる多数のサードパーティ製プログラムは、多く
の人の尽力があるとはいえ、それでも同じレベルには達していないかもしれません。一般論
ですが、信頼できない入力についてプログラムを実行する際は十分に注意してください。
なるべく安全に実行するためには、新しいサブディレクトリを作って実行したり、\cmd{%
chroot}を利用したりしてください。

この注意はWindowsについては特に重要です。なぜならWindowsは、検索パスの設定に
関わらず、常にカレントディレクトリにあるプログラムを他の何よりも優先して
実行するからです。この挙動はさまざまな攻撃に悪用される恐れがあります。我々は多くの
セキュリティホールを塞いできましたが、特にサードパーティ製プログラムについては、
間違いなくまだ残っているものが数多くあるでしょう。したがって、カレントディレクトリ
にある疑わしいファイル（特にバイナリとスクリプトファイル）は事前にチェックして
おくことを推奨します。悪意のあるファイルはそもそも存在するべきでありませんが、
単にドキュメントを処理するだけで生成されることなどあってはなりません。

最後に、\TeX （およびその周辺ツール）はドキュメントの処理中にファイル書き込みを
行うことができますが、その機能もまたさまざまな方法で利用され得ます。再度の注意に
なりますが、ご自身で作成されたわけではないドキュメントは、必ず新しい
サブディレクトリで実行するのが無難です。

セキュリティに関する別の観点として、ダウンロードしたファイルが元々作成されていた
ものから改変されていないかどうかということがあります。\prog{tlmgr}%
（\ref{sec:tlmgr}節）は\prog{gpg}（GNU Privacy Guard）が利用可能な場合、
ダウンロードしたファイルについて自動的に暗号理論に基づく検証を行います。
\prog{gpg}は\TL に含まれていませんが、このプログラムについての情報は
\url{https://texlive.info/tlgpg/}に記載してありますので必要に応じて参照して
ください。

\subsection{サポート情報}
\label{sec:help}

\TeX コミュニティはアクティブかつ友好的で、ほとんどの真剣な質問には回答を
得ることができます。しかしながら、こうしたサポートは非公式で、ボランティアや
一般の\TeX ユーザ有志によって行われているものですから、質問をする前にドキュメント
や過去のQ\&Aをよく読んで、まずはご自分で解決できるよう最善を尽くしましょう（もし
保証付きの有償サポートをご希望の場合は、\TL の採用は諦めて商用のシステムを
ご利用ください。\url{https://tug.org/interest.html#vendors}には\TeX に関連する
商用サービスを提供する団体の一覧があります）。

以下に\TeX 関連の情報源をリストアップしておきます。順番は概ねおすすめ順です：
%
\begin{description}
\item[はじめての方へ]
これからはじめて\TeX をお使いになる場合は\url{https://tug.org/begin.html}に
アクセスするとよいでしょう。\TeX システムについて簡潔なイントロダクションを
読むことができます。

\item[CTAN]
特定の\TeX パッケージやフォント、プログラム等を見つけたい場合はまずCTANで
探すとよいでしょう。これはあらゆる\TeX 関連の成果物を集めた巨大なコレクションです。
CTANカタログの個別ページでは、見つかったパッケージが\TL または\MIKTEX に含まれるか
どうかの情報も提供されています。\url{https://ctan.org/pkg/catalogue/}にアクセスして
みてください。

\item[{\TeX} FAQ]
\TeX に関するよくあるFAQを集めた巨大なデータベースで、初歩的な質問からとても難解な
質問まで含まれています。{\TeX} FAQはインターネット経由で利用することができます（\url{%
https://texfaq.org/}）。

\item[ウェブ上の情報源]
ウェブサイト\url{https://tug.org/interest.html}には多数の\TeX 関連リンクが
集められています。特に\TeX システムに関わるさまざまな話題についての多くの書籍、
マニュアル、投稿記事を多数紹介しています。

\item[サポートサイト]
まずは通常のウェブ検索を試すことをおすすめします。\TeX に関する主要なサポートサイト
としては\LaTeX コミュニティ\url{https://latex.org}やQ\&Aサイト\url{https://tex.%
stackexchange.com}、Usenetニュースグループ\url{news:comp.text.tex}、メーリング
リスト\email{texhax@tug.org}などが挙げられます。これらのアーカイブには何年分もの
質問と回答が蓄積されていますので、探してみるとよいでしょう。

\item[質問する]
もし答えの見つからない質問にぶつかったときは、\url{https://latex.org}や
\url{https://tex.stackexchange.com/}のウェブインターフェースや、メーリングリスト
\email{texhax@tug.org}（購読せずに投稿して構いません）を通じて質問することも
できます。ただし、どこで質問を投稿するにしても、必ず事前に「質問のしかた」
（\url{https://texfaq.org/FAQ-askquestion}）を読むようにしましょう。この内容に
従うことで、有効な回答を得られる可能性を飛躍的に高めることができます。

\item[\TL サポート]
もし\TL ディストリビューションに関してバグ報告や提案、コメントがある場合は
\TL メーリングリスト\email{tex-live@tug.org}にメールを投稿してください。ただし
\TL に含まれる個別のプログラムの使い方についての質問等は、\TL メーリングリスト
ではなく、各プログラムのメンテナや専用のメーリングリストに連絡するようにして
ください。多くの場合、プログラムを\lopt{help}オプション付きで実行するとバグ
報告用のメールアドレスを確認することができます。
\end{description}
%
\begin{janote}
上記リストは主に英語での情報提供・コミュニケーションを行う場所ですが、日本語
でのサポートが必要な場合は、次のようなウェブサイトが利用できます：
%
\begin{description}
\item[{\TeX} Wiki]
\url{https://texwiki.texjp.org/}は日本語で読めるものとしては\TeX 関連情報を集めた
最大の情報源です。現在は日本語\TeX 開発コミュニティ（texjporg）がサーバ管理を
行っていますが、あくまでWikiなので編集は誰でも行うことができ、掲載情報は必ずしも
公式のものではありません。

\item[{\TeX} Forum]
\url{https://okumuralab.org/tex/}は歴史の長いQ\&Aサイトで、現在も日本語で\TeX に
関連する質問ができる場所としては最もアクティブユーザが多く、熟練の\TeX ユーザが
多数参加しています。上記{\TeX} Wikiに日本語版の「質問のしかた」（\url{https://%
texwiki.texjp.org/?質問のしかた}）ページがありますので、初めて質問を投稿する際は
必ず目を通すようにしましょう。

\item[スタック・オーバーフロー]
\url{https://ja.stackoverflow.com/}は\TeX に限らずあらゆる技術・プログラミング
関連の質問を投稿することができるQ\&AサイトStack Overflowの日本語版です。最近は
ここの\LaTeX タグ（\url{https://ja.stackoverflow.com/questions/tagged/latex}）
にも少しずつ\TeX/\LaTeX 関連の質問が投稿されるようになってきています。
\end{description}
\end{janote}

\TeX ユーザは上記のような場所でサポートを受けることができる一方で、あなた自身が
他の質問者の手助けをすることも可能です。いずれのコミュニティも全世界に開かれた
ものですから、ぜひお気軽に参加・購読し、ヘルプが必要なユーザを助けてあげましょう。

\section{\TL の概要}
\label{sec:overview-tl}

このセクションでは\TL と\TeX コレクションの収録物について紹介します。

\subsection{\TeX コレクション: \TL, \MIKTEX, \MacTeX}
\label{sec:tl-coll-dists}

\TeX コレクションDVDには以下のものが含まれています：

\begin{description}
\item[\TL]
ディスクにインストールするための包括的でクロスプラットフォームな\TeX
ディストリビューションです。ウェブサイト：\url{https://tug.org/texlive/}

\item[\MacTeX]
macOS向けの\TeX システムで、\TL に専用のインストーラといくつかのMac用
アプリケーションを追加しています。ウェブサイト：\url{https://tug.org/mactex/}

\item[\MIKTEX]
これも包括的でクロスプラットフォームな\TeX ディストリビューションです。
Windows, GNU/Linux, macOSをサポートしていますが、DVDに含まれているのは
Windows向けのバイナリのみです。\MIKTEX は専用のパッケージマネージャを備えて
おり、必要なコンポーネントを必要に応じてインターネットからインストールする
ようになっています。ウェブサイト：\url{https://miktex.org/}

\item[CTAN]
CTANリポジトリ（\url{https://ctan.org/}）のスナップショットです。CTANは\TL
と同じライセンスで配布されているわけではないので、再配布や変更を行う場合は
十分注意してください。
\end{description}

\subsection{\TL のトップレベルディレクトリ}
\label{sec:tld}

ここに\TL ディストリビューションのトップレベル（最上位階層）にあるディレクトリ
の一覧を示し、それぞれについて簡単に説明しておきます。
%
\begin{description}
\item[\dir{bin}]
\TeX 関連プログラムを格納しています。実行バイナリはプラットフォームによって
異なります。

\item[\dir{readme-*.dir}]
\TL の概要と有用なリンクを集めた多言語のREADMEを含んでいます。HTMLバージョンと
テキストバージョンがあります。

\item[\dir{source}]
\TL に含まれるすべてのプログラムのソースコードです。\Webc で記述された、\TeX
ディストリビューションのコアプログラムのソースコードも含まれています。

\item[\dir{texmf-dist}]
最も重要なTEXMFツリーです。詳しくは下にある\dir{TEXMFDIST}の項目を参照して
ください。

\item[\dir{tlpkg}]
インストールに必要なスクリプトやWindows向けの補助プログラムを含んでいます。
\end{description}
%
ドキュメントを探す際には、同じくトップレベルにある\file{doc.html}が役立ちます。
このファイルには\dir{texmf-dist/doc}以下に含まれるほとんどすべてのドキュメント
（パッケージ、フォーマット、フォント、プログラムのマニュアルやmanページなど）が
掲載されています。また\TL に含まれるドキュメントを検索するには\cmd{texdoc}%
コマンドを利用することもできます。

この\TL ガイド自体は\dir{texmf-dist/doc/texlive}以下にあり、多数の言語に翻訳
されています：
%
\begin{itemize}
\item チェコ・スロバキア語：\dir{texmf-dist/doc/texlive/texlive-cz}
\item ドイツ語\dir{texmf-dist/doc/texlive/texlive-de}
\item 英語：\dir{texmf-dist/doc/texlive/texlive-en}
\item フランス語：\dir{texmf-dist/doc/texlive/texlive-fr}
\item イタリア語：\dir{texmf-dist/doc/texlive/texlive-it}
\item 日本語：\dir{texmf-dist/doc/texlive/texlive-ja}
\item ポーランド語：\dir{texmf-dist/doc/texlive/texlive-pl}
\item ロシア語：\dir{texmf-dist/doc/texlive/texlive-ru}
\item セルビア語：\dir{texmf-dist/doc/texlive/texlive-sr}
\item スペイン語：\dir{texmf-dist/doc/texlive/texlive-es}
\item 簡体字中国語：\dir{texmf-dist/doc/texlive/texlive-zh-cn}
\end{itemize}

\subsection{いろいろなTEXMFツリー（概要）}
\label{sec:texmftrees}

この節では、システムに利用される種々のTEXMFツリーを指定するために予め定義
されている変数を一覧にし、それらの所期の目的および\TL でのデフォルト構成を
説明します。コマンド\code{tlmgr~conf}を実行するとこれらの変数の値が表示される
ので、各TEXMFツリーがあなたのコンピュータで実際にどのディレクトリを指し示す
のか容易に確認することができます。

個人用のものも含め、すべてのTEXMFツリーはその大量のサブディレクトリとともに
\TeX ディレクトリ構成（TDS, \url{https://tug.org/tds}）にしたがうべきです。
TDSにしたがわない構成の場合、ファイルが見つからない可能性があります。詳細に
ついては\ref{sec:local-personal-macros}節（\p.\pageref{sec:local-personal-%
macros}）を参照してください。ここで列挙するのはツリーが検索される順序の逆順
です。つまり、より後に登場するツリーによって、それより前のツリーの内容は上書き
されます。
%
\begin{description}
\item[\var{TEXMFDIST}]
このツリーには\TL ディストリビューション自体に含まれるほとんどのファイル
（設定ファイル、スクリプト、パッケージ、フォント、etc.）が配置されています。
（主な例外はプラットフォーム毎の実行バイナリで、それらはトップレベルの
\dir{bin}ディレクトリに配置されています。）

\item[\var{TEXMFSYSVAR}]
この（システム用の）ツリーは\cmd{texconfig-sys}, \cmd{updmap-sys}, \cmd{%
fmtutil-sys}, \cmd{tlmgr}などが、フォーマットや生成されたmapファイルなどの
実行時（キャッシュ）データを保存するためのものです。

\item[\var{TEXMFSYSCONFIG}]
この（システム用の）ツリーは\cmd{texconfig-sys}, \cmd{updmap-sys}, \cmd{%
fmtutil-sys}などが、変更された設定データを保存するために利用するものです。

\item[\var{TEXMFLOCAL}]
このツリーは、システム管理者が全ユーザに適用するためにマクロやフォントなどを
追加または更新して配置するためのものです。

\item[\var{TEXMFHOME}]
このツリーは、一般のユーザが独自に追加または更新したいマクロやフォントを配置する
ためのものです。この変数の参照先は、使用するユーザごとに固有のディレクトリです。

\item[\var{TEXMFVAR}]
この（ユーザ向けの）ツリーは\cmd{texconfig}, \cmd{updmap-user}, \cmd{fmtutil-%
user}などがフォーマットや生成されたmapファイルなどの実行時（キャッシュ）データ
を保存するためのものです。

\item[\var{TEXMFCONFIG}]
この（ユーザ向けの）ツリーは\cmd{texconfig}, \cmd{updmap-user}, \cmd{fmtutil-%
user}などが変更された設定データを保存するために利用するものです。

\item[\var{TEXMFCACHE}]
このツリーは\ConTeXt\ MkIVおよび\LuaLaTeX が実行時（キャッシュ）データを保存
するためのものです。デフォルトでは\var{TEXMFSYSVAR}（またはこれが書き込み
不能な場合は\var{TEXMFVAR}）に設定されています。
\end{description}

\noindent
デフォルトの\TL 構成：
%
\begin{description}
\item[システム用ルート] 複数の\TL を配置できます
  （デフォルト値はUnix系では\dir{/usr/local/texlive}）
  \begin{description}
  \item[\dir{2024}] 前年のリリース
  \item[\dir{2025}] 最新のリリース
    \begin{description}
    \item[\dir{bin}] ~
      \begin{description}
      \item[\dir{i386-linux}] GNU/Linux向けバイナリ (32-bit)
      \item[\quad\vdots]
      \item[\dir{universal-darwin}] macOS向けバイナリ
      \item[\dir{x86_64-linux}] GNU/Linux向けバイナリ (64-bit)
      \item[\dir{windows}] Windows向けバイナリ (64-bit)
      \end{description}
    \item[\dir{texmf-dist}] \var{TEXMFDIST}, \var{TEXMFMAIN}
    \item[\dir{texmf-var}] \var{TEXMFSYSVAR}, \var{TEXMFCACHE}
    \item[\dir{texmf-config}] \var{TEXMFSYSCONFIG}
    \end{description}
  \item[\dir{texmf-local}] \var{TEXMFLOCAL}（リリースに依存しません）
  \end{description}
\item[ユーザのホームディレクトリ] （\dir{$HOME}または\winenv{USERPROFILE}）
  \begin{description}
  \item[\dir{.texlive2024}] 前年リリースに適用するユーザごとのデータ（設定や生成物）
  \item[\dir{.texlive2025}] 最新リリースに適用するユーザごとのデータ（設定や生成物）
    \begin{description}
    \item[\dir{texmf-var}] \var{TEXMFVAR}, \var{TEXMFCACHE}
    \item[\dir{texmf-config}] \var{TEXMFCONFIG}
    \end{description}
  \item[\dir{texmf}] \var{TEXMFHOME}（ユーザごとのマクロなどを配置）
  \end{description}
\end{description}

\subsection{\TeX の拡張エンジン}
\label{sec:tex-extensions}

Knuthによるオリジナルの\TeX は既に開発が終了しており、ごく稀にバグ修正が
入る程度です。\TL には現在もこのオリジナル処理系が\cmd{tex}として含まれており、
この状況は当面の間は変わることはないでしょう。一方で、\TL にはいくつかの\TeX を
拡張したエンジン（それらも\TeX 処理系と呼ばれています）も収録されています：
%
\begin{description}
\item[\eTeX]\label{text:etex}
この処理系ではいくつかの追加プリミティブ（主としてマクロ展開、文字列スキャン、
\cs{marks}クラス、デバッグに関わるもの）と双方向組版のための\TeXXeT 拡張が利用可能
です。デフォルトモードでは、\eTeX はオリジナルの\TeX と完全な互換性があります。
詳細については\file{texmf-dist/doc/etex/base/etex_man.pdf}を参照してください。

\item[\pdfTeX]
この処理系には、\eTeX の機能に加えてDVI同様にPDFを出力する機能と、その他出力とは
関係のない多数の追加機能が搭載されています。この処理系は、\cmd{etex}, \cmd{latex},
\cmd{pdflatex}など多くの一般的なフォーマット（コマンド）から呼び出されています。
\pdfTeX のウェブサイトは\url{https://tug.org/applications/pdftex/}です。\TL
にはマニュアル（\file{texmf-dist/doc/pdftex/manual/pdftex-a.pdf}）と\pdfTeX の
拡張機能の利用例を示した文書（\file{texmf-dist/doc/pdftex/samplepdftex/%
samplepdf.tex}）も収録されています。

\item[\LuaTeX]
Unicodeによる入力とOpenType\slash TrueTypeフォントおよびシステムフォントのサポート
を追加した処理系です。この\TeX エンジンには軽量スクリプト言語Lua（\url{%
https://www.lua.org/}）のインタプリタが組み込まれており、\TeX における厄介な問題に
対処するのにとても役立ちます。\cmd{texlua}として呼び出した場合は独立のLua処理系の
ように振る舞います。ウェブサイト：\url{https://luatex.org/}、マニュアル：\file{%
texmf-dist/doc/luatex/base/luatex.pdf}。

\item[($\varepsilon$-)(u)\pTeX]
日本語組版をネイティブにサポートする処理系です。\pTeX がベースですが、\eTeX 拡張
が利用可能な\epTeX とUnicodeサポートを含む\upTeX もあります（詳細はこのリストの
下のコラムを参照）。

\item[\XeTeX]
Unicodeによる入力とOpenType\slash TrueTypeフォントおよびシステムフォントの利用を
サードパーティ製のライブラリを利用してサポートする\TeX 処理系です。
ウェブサイト：\url{https://tug.org/xetex}。

\item[{\OMEGA} (Omega)]
Unicode（16-bit文字）ベースの処理系で、すなわち世界中のほとんどあらゆる言語で
用いられる文字に対応しています。この処理系はいわゆるOmega Translation Processes
（OTPs）もサポートしており、任意の入力について複雑な組版処理を施すことも可能です。

\item[{\ALEPH} (Aleph)]
Omegaと\eTeX を組み合わせた処理系です。詳細については\dir{texmf-dist/doc/aleph/%
base}を参照してください。
\end{description}
%
\begin{janote}
日本語組版向けに開発された\pTeX 系の処理系を除いては、欧文組版を行うために
開発されたもので、多くがそのままでは日本語組版には適しません。\TL に含まれる
処理系の中で、日本語組版に適したものを以下に列挙します。
%
\begin{description}
\item[\pTeX]
Knuthによるオリジナルの\TeX 処理系を日本語組版用に拡張したものです。和文フォントを
扱うことができるように拡張されているほか、禁則処理や縦組みにも対応しています。詳細に
ついては\file{texmf-dist/doc/ptex/ptex-manual/ptex-manual.pdf}を参照してください。

\item[\upTeX]
\pTeX の派生エンジンで、内部コードがUnicodeに変更されています。基本的には\upTeX は
\pTeX の上位互換となっており、UTF-8入力が活用できるのみならず、他にもいくつかの
機能が追加されています。

\item[\epTeX, \eupTeX]
\pTeX と\upTeX に\eTeX 相当の拡張機能を追加したエンジンです。現在\TL に含まれる
\cmd{platex}, \cmd{uplatex}コマンドではデフォルトでこれらの処理系が呼び出されます。
最近は\pdfTeX 由来の機能も一部利用できます。詳細は\file{texmf-dist/doc/ptex/ptex-%
base/eptexdoc.pdf}を参照してください。
\end{description}
%
また\LuaTeX-jaというマクロパッケージを用いると\LuaTeX でも日本語組版を実現できます。
詳しくはウェブサイト\url{https://github.com/luatexja/luatexja}またはドキュメント
\file{texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf}を参照してください。
\end{janote}

\subsection{\TL に含まれるその他の著名なソフトウェア}

ここに少しですが、\TL に含まれていて、よく利用されるプログラムを列挙しておきます：
%
\begin{cmddescription}
\item[bibtex, biber]
参考文献リストの作成を補助するプログラム。

\item[makeindex, xindex, xindy]
索引の作成を補助するプログラム。

\item[dvips]
DVIを\PS に変換するプログラム。

\item[dvipdfmx]
DVIをPDFに変換するプログラム。先述の\pdfTeX とは別のアプローチを提供するもの。

\item[xdvi]
X Windowsシステム向けのDVIビューア。

\item[dviconcat, dviselect]
DVIのページを切り貼りするためのプログラム。

\item[psselect, psnup, \ldots]
\PS ユーティリティ。

\item[pdfjam, pdfjoin, \ldots]
PDFユーティリティ。

\item[context, mtxrun]
\ConTeXt とPDFプロセッサ。

\item[htlatex, \ldots]
\cmd{tex4ht}は\AllTeX をHTML, XML, DocXなどに変換するプログラム。
\end{cmddescription}

\begin{janote}
日本では、上記に加えて次のプログラムもよく用いられます：
%
\begin{cmddescription}
\item[pbibtex, upbibtex]
\cmd{bibtex}を日本語用に拡張したもの。

\item[mendex, upmendex]
\cmd{makeindex}を日本語用に拡張したもの。
\end{cmddescription}
\end{janote}

\section{\TL のインストール}
\label{sec:install}

\subsection{インストーラの入手と起動}
\label{sec:inst-start}

\TL をインストールするためには、まず\TeX コレクションDVDを入手するか\TL の
インターネット・インストーラをダウンロードします。より詳細な情報や\TL を入手
するその他の方法については\url{https://tug.org/texlive/acquire.html}を参照して
ください。
%
\begin{description}
\item[インターネット・インストーラ（\file{.zip}または\file{.tar.gz}）]
CTANの\dir{systems/texlive/tlnet}配下からダウンロードできます。\url{http://%
mirror.ctan.org/systems/texlive/tlnet}にアクセスすると、最寄りの最新ミラーに
リダイレクトされるはずです。\file{install-tl.zip}（Unix系およびWindows向け）、
またはそれよりもかなりファイルサイズの小さい\file{install-unx.tar.gz}（Unix系
専用）のお好きな方をダウンロードしてください。ダウンロードしたアーカイブを展開
すると\dir{install-tl}サブディレクトリ以下に\file{install-tl}および\file{%
install-tl-windows.bat}が見つかるはずです。

\item[インターネット・インストーラ（Windows用\file{.exe}）]
上と同様にCTANからダウンロードし、ダブルクリックしてください。すると、
インストーラの最初の画面（図\ref{fig:nsis}）が表示されるはずです。この画面では
「インストール」または「展開のみ」のいずれかを選ぶことができます。

\item[\TeX コレクションDVD]
DVD内の\dir{texlive}サブディレクトリを開いてください。Windowsでは、通常DVD
を挿入するとインストーラが自動的に起動するはずです。{\TeX} Users Group（TUG）の
会員になるか（\url{https://tug.org/usergroups.html}）、TUGのオンラインストア
（\url{https://tug.org/store}）で個別に購入するとDVDを手に入れることができます。
また、CTANで配布されているISOイメージからご自身でDVDに焼くことも可能です。
DVDまたはISOから\TL をインストールした後、インターネットを利用して継続的に
アップデートを行いたい場合は\ref{sec:dvd-install-net-updates}節を参照してください。
\end{description}
%
\begin{figure}[tb]
\tlpng{nsis_installer}{.6\linewidth}
\caption{Windows用インストーラ（\code{.exe}）の初期画面。}
\label{fig:nsis}
\end{figure}

いずれの手段でインストーラを入手しても、まったく同じプログラムが起動します。
入手方法の違いによって生じる差異のうち、ユーザにとって最も重要なことは、
インターネット・インストーラを利用した場合はすべてのパッケージについて入手可能
な最新バージョンがインストールされますが、DVDやISOイメージを用いた場合には
年に一度のパブリックリリース時点での最新版がインストールされるということです。

もしプロキシを利用してダウンロードする必要がある場合は、\file{~/.wgetrc}ファイル
または環境変数を利用してWgetに対して適切なプロキシ設定を行うか（\url{https://%
www.gnu.org/software/wget/manual/html_node/Proxies.html}）、もしくはお好みで他の
ダウンロード用ツールを利用してください。DVDやISOイメージからインストールを行う
場合は、プロキシ設定について気にする必要はありません。

以降のセクションでは、このインストーラの使い方について詳しく説明します。

\subsubsection{Unix系}

以降では\code{>}はシェル・プロンプトを表し、ユーザの入力はタイプライタ体で
\code{command}のように表現することにします。\TL のインストーラ\cmd{install-%
tl}はPerlスクリプトです。Unix系システムでこのスクリプトを起動する最も簡単
な方法は以下を実行することです\footnote{もちろん、実行権限を与えていれば
単に\code{/path/to/installer/install-tl}として起動することもできますし、
事前に\cmd{cd}で\cmd{install-tl}のあるディレクトリに移動しても構いません。
以降では、そのようなバリエーションについて逐一言及はしません。}：
%
\begin{alltt}
> perl /path/to/installer/install-tl
\end{alltt}
%
ところで、インストーラのメッセージを見やすく表示するためには、ターミナルの
ウィンドウサイズは十分に大きくしておいてください（図\ref{fig:text-main}）。

インストーラをGUIモードで起動するためには、予めTcl/Tkをインストールしておく
必要があります。その上で、次のようにするとGUIモードで起動できます：
%
\begin{alltt}
> perl install-tl -gui
\end{alltt}

古い\sopt{wizard}, \lopt{perltk}, \lopt{expert}オプションは現在では\sopt{gui}%
と等価になっています。利用可能なすべてのオプションを確認するには次を実行して
ください：
%
\begin{alltt}
> perl install-tl -help
\end{alltt}

\paragraph{Unixのパーミッションについて}
\TL インストーラは、実行時の\cmd{umask}設定を反映します。したがって、もし利用
中のユーザだけでなく他のユーザも利用可能な形で\TL をインストールしたい場合は、
\code{umask 002}など適切なパーミッション設定になっているかよく確認してください。
\cmd{umask}コマンドの詳細については、システムのマニュアルを参照してください。

\paragraph{Cygwinへの注意}
他のUnix系システムと異なり、Cygwinにはデフォルトでは\TL インストーラの実行に
必要なプログラムの一部が含まれていません。詳細は\ref{sec:cygwin}節を参照して
ください。

\subsubsection{macOS}
\label{sec:macos}

\ref{sec:tl-coll-dists}節でも言及したように、macOSには\MacTeX という専用の
ディストリビューションがあります（\url{https://tug.org/mactex}）。\MacTeX の
インストーラはmacOS向けにいくつかの最適化をしている（たとえば、いわゆる
「{\TeX}Distデータ構造」を利用してMac上の複数の\TL リリースを簡単に切り替える
機能があります）ので、\TL インストーラを利用するよりも、\MacTeX を利用した
インストールをおすすめします\footnote{訳注：ただし敢えて\TL インストーラを
利用することも可能です。}。

\MacTeX は完全な\TL ベースのディストリビューションで、主要な\TeX ツリーと
含まれる実行バイナリはまったく同一です。通常の\TL に、macOS専用のドキュメント
とアプリケーションがいくつか追加されています。

\subsubsection{Windows}\label{sec:wininst}

もしZIPファイルをご自身でダウンロードして展開した場合やDVDを挿入しても自動的に
インストーラが起動しなかった場合は、\file{install-tl-windows.bat}をダブルクリック
してください。

もしくは、コマンドプロンプトを利用してインストーラを起動することも可能です。以下
では\code{>}はプロンプトを表し、ユーザの入力はタイプライタ体で\code{command}の
ように表現することにします。もし、既にインストーラのあるディレクトリにいる場合は
単に
%
\begin{alltt}
> install-tl-windows
\end{alltt}
%
を実行してください。もちろん絶対パスを指定して起動することも可能です。例えば、
\TeX コレクションDVDを利用していて、その光学ドライブが\dir{D:}であれば：
%
\begin{alltt}
> \winpath{D:\\texlive\\install-tl-windows}
\end{alltt}
%
図\ref{fig:installer-basic}はGUIインストーラ（Windowsではデフォルト）の初期画面を
示しています。

テキストモードでのインストールを行いたい場合は次のようにしてください：
%
\begin{alltt}
> install-tl-windows -no-gui
\end{alltt}

すべてのオプションを表示するには以下を実行してください：
%
\begin{alltt}
> install-tl-windows -help
\end{alltt}

\noindent
\emph{ノート}：同じディレクトリに\file{install-tl-windows.exe}が存在している場合は、
起動時に拡張子\code{.bat}を付けてください。もっとも、基本的にはそのような状態には
ならないはずです例外はローカルに\dir{tlnet}ディレクトリをミラーしている場合です。

\TL のインストールパスに非ASCII文字を含めることは、必ず避ける必要があります。これは
特に、Windowsのインストールに際しユーザがMicrosoftネットワークアカウントを作成することを
強制されるWindows~11で問題となり得ます。回避策については\url{https://tug.org/texlive/%
windows.html\#nonascii}を参照してください。

\begin{figure}[tb]
\begin{boxedverbatim}
Installing TeX Live 2025 from: ...
Platform: x86_64-linux => 'GNU/Linux on x86_64'
Distribution: inst (compressed)
Directory for temporary files: /tmp
...
 Detected platform: GNU/Linux on Intel x86_64
 
 <B> binary platforms: 1 out of 16

 <S> set installation scheme: scheme-full

 <C> customizing installation collections
     40 collections out of 41, disk space required: 8648 MB (free: 138718 MB)

 <D> directories:
   TEXDIR (the main TeX directory):
     /usr/local/texlive/2025
   ...

 <O> options:
   [ ] use letter size instead of A4 by default
   ...
 
 <V> set up for portable installation

Actions:
 <I> start installation to hard disk
 <P> save installation profile to 'texlive.profile' and exit
 <H> help
 <Q> quit
\end{boxedverbatim}
\vskip-.5\baselineskip
\caption{\TL インストーラのテキストモードでのメイン画面（GNU/Linux）}
\label{fig:text-main}
\end{figure}

\begin{figure}[tb]
\tlpng{basic-macos-ja}{.6\linewidth}
\caption{\TL インストーラの基本画面（macOS）。「高度な設定」ボタンを押すと図\ref{%
fig:installer-advanced}のような画面に切り替わります。}\label{fig:installer-basic}
\end{figure}

\begin{figure}[tb]
\tlpng{advanced-macos-ja}{\linewidth}
\caption{\TL インストーラGUIモードの「高度な設定」画面（macOS）}
\label{fig:installer-advanced}
\end{figure}

\subsubsection{Cygwin}
\label{sec:cygwin}

Cygwinでは、\TL のインストールを始める前に\file{setup.exe}プログラムを用いて
（もし未導入の場合は）\prog{perl}と\prog{wget}をインストールするようにしてくだ
さい。また以下のパッケージも予めインストールしておくことをおすすめします：
%
\begin{itemize}
\item \prog{fontconfig}（\XeTeX と\LuaTeX のため）
\item \prog{ghostscript}（多くの\TeX エンジンのため）
\item \prog{libXaw7}（\prog{xdvi}のため）
\item \prog{ncurses}（インストーラの\code{clear}コマンドの実行に必要）
\end{itemize}

\subsubsection{テキストモード}

図\ref{fig:text-main}はUnix系におけるテキストモードのメイン画面を示しています。
テキストモードはUnix系ではデフォルトです。

このモードは、完全にコマンドラインで完結するもので、カーソルによる操作のサポートは
まったくありません。例えば、Tabキーによってチェックボックスや入力フォーム間を移動
することはできません。インストール操作はすべて、プロンプトに文字をタイプ（大文字と
小文字は区別されます）してEnterキーを押すことによって行います。ターミナルの画面は、
入力にしたがって適切に遷移していきます。

テキストモードのインターフェースは、最小限のPerlしかない環境を含めなるべく多く
のプラットフォームで動作するようとても原始的に作られています\footnote{訳注：GUIモード
は日本語を含む多言語に対応していますが、テキストモードは英語のみです。}。

\subsubsection{GUIモード}
\label{sec:graphical-inst}

GUIモードはデフォルトではわずかなオプションのみを提供するシンプルな画面で
スタートします（図\ref{fig:installer-basic}）。GUIモードを起動するには
%
\begin{alltt}
> install-tl -gui
\end{alltt}
%
を実行します。「高度な設定」ボタンを押すとテキストモードとほぼ同程度のオプションを
提供する画面に切り替わります（図\ref{fig:installer-advanced}）。

\subsubsection{その他のレガシーなモード}

古い\code{perltk}モード、\code{expert}モード、\code{wizard}モードは現在もPerl/Tkが
インストールされていれば利用可能です。これらはそれぞれインストーラに\sopt{gui=%
perltk}や\sopt{gui=wizard}オプションを与えると起動できます。

\subsection{インストーラの操作方法}
\label{sec:runinstall}

インストーラは直感的に操作できるように設計されていますが、このセクションでは多様な
オプションやサブメニューについて簡単に説明します。

\subsubsection{バイナリ選択メニュー（Unix系のみ）}
\label{sec:binary}

\begin{figure}[tb]
\begin{boxedverbatim}
Available platforms:
===============================================================================
   a [ ] Cygwin on x86_64 (x86_64-cygwin)
   b [ ] MacOSX current (10.14-) on ARM/x86_64 (universal-darwin)
   c [ ] MacOSX legacy (10.6-) on x86_64 (x86_64-darwinlegacy)
   d [ ] FreeBSD on x86_64 (amd64-freebsd)
   e [ ] FreeBSD on Intel x86 (i386-freebsd)
   f [ ] GNU/Linux on ARM64 (aarch64-linux)
   g [ ] GNU/Linux on RPi(32-bit) and ARMv7 (armhf-linux)
   h [ ] GNU/Linux on Intel x86 (i386-linux)
   i [X] GNU/Linux on x86_64 (x86_64-linux)
   j [ ] GNU/Linux on x86_64 with musl (x86_64-linuxmusl)
   k [ ] NetBSD on x86_64 (amd64-netbsd)
   l [ ] NetBSD on Intel x86 (i386-netbsd)
   m [ ] Solaris on Intel x86 (i386-solaris)
   o [ ] Solaris on x86_64 (x86_64-solaris)
   p [ ] Windows (64-bit) (windows)
\end{boxedverbatim}
\vspace{-1zh}
\caption{バイナリ選択メニュー}\label{fig:bin-text}
\end{figure}

図\ref{fig:bin-text}はテキストモードのバイナリ選択メニューを示しています。デフォルト
ではインストーラ実行時に使用中のプラットフォーム向けのバイナリだけがインストール
されます。このメニューを利用すると、その他のプラットフォーム向けのバイナリも同様に
インストールすることを選択することができます。このメニューは\TeX ツリーをさまざまな
環境に共通のネットワークで共有する場合やデュアルブートシステムでは有用です。

\subsubsection{スキーム・コレクションの選択}
\label{sec:components}

\begin{figure}[tbh]
\begin{boxedverbatim}
Select scheme:
===============================================================================
 a [X] full scheme (everything)
 b [ ] medium scheme (small + more packages and languages)
 c [ ] small scheme (basic + xetex, metapost, a few languages)
 d [ ] basic scheme (plain and latex)
 e [ ] minimal scheme (plain only)
 f [ ] infrastructure-only scheme (no TeX at all)
 g [ ] book publishing scheme (core LaTeX and add-ons)
 h [ ] ConTeXt scheme
 i [ ] GUST TeX Live scheme
 j [ ] teTeX scheme (more than medium, but nowhere near full)
 k [ ] custom selection of collections
\end{boxedverbatim}
\vspace{-1zh}
\caption{スキーム選択メニュー}\label{fig:scheme-text}
\end{figure}

図\ref{fig:scheme-text}は\TL のスキーム選択メニューです。これによって、お好きな
スキーム（パッケージコレクションのセット）を選んでインストールを行うことができます。
デフォルトでは\TL で利用可能なすべてのパッケージを含む\pkg{full}スキームが
インストールされます。おすすめはこの\pkg{full}スキームですが、純粋なplain \TeX
と\LaTeX だけを使用するなら\pkg{basic}、それに少しプログラムを追加したものである
\pkg{small}（これは\MacTeX におけるBasic\TeX と同等です）、単なるテスト目的なら
\pkg{minimal}、あるいはそれらの中間にあたるものが欲しければ\pkg{medium}や
\pkg{teTeX}スキームを選択することもできます。その他にも、多数の目的別もしくは
言語別のスキームが用意されています。

\begin{figure}[tb]
\centering \tlpng{stdcoll-ja}{.7\linewidth}
\caption{コレクション選択メニュー}\label{fig:collections-gui}
\end{figure}

コレクション選択メニュー（図\ref{fig:collections-gui}）を活用すると選択したスキーム
をさらに利用目的に応じて最適化することができます\footnote{訳注：\pkg{full}スキーム以外
のスキームには日本語組版に必要な\pTeX 系エンジンや\LuaTeX-jaなどは含まれていません。
したがって\pkg{full}スキーム以外のスキームを選択した場合、日本語組版を行うため
には原則として日本語コレクション（\pkg{collection-langjapanese}）を追加する必要が
あります。}。

コレクションはスキームよりも細かなパッケージのセットです。基本的には、スキームという
のはいくつかのコレクションを集めたもので、コレクションは1つまたは複数のパッケージを
まとめたものです。パッケージは\TL におけるプロダクトの最小単位で、具体的には実際の
\TeX マクロファイルやフォントファイルから成るものです。

もしコレクション選択メニューが提供するよりもさらに細かくインストールするものを制御
したい場合は、インストール後に\TL マネージャ（\cmd{tlmgr}）を使用してください。
\TL マネージャを利用すればパッケージ単位でインストールを行うことが可能です。

\subsubsection{インストール先ディレクトリ}
\label{sec:directories}

デフォルトの\TL 構成については\ref{sec:texmftrees}節（\p.\pageref{sec:texmftrees}）
で説明しました。デフォルトのインストール先はUnix系では\dir{/usr/local/texlive/2025}、
Windowsでは\winpath{\winenv{SystemDrive}\\texlive\\2025}です。この配置は複数の\TL
を同時にインストールすることを可能にします。例えば複数のリリース（典型的には、年度
ごと）の\TL をインストールしておき、単純に検索パスを変更することによってどの
リリースを使用するか切り替えるようなことができます。

インストール先のディレクトリはインストーラにおける\code{TEXDIR}を設定することに
よって変更することができます。GUIモードで\code{TEXDIR}やその他のオプションを設定
するための画面は図\ref{fig:installer-advanced}に示されています。インストール先を
変更する必要があるのは、デフォルトのインストール先にあたるパーティションに十分な
空き容量がない場合\footnote{\TL をフルインストールするには数GBの容量が必要となり
ます。}や書き込み権限がない場合です\footnote{\TL をインストールするのに管理者
（root）権限は必要ありませんが、インストール先ディレクトリへの書き込み権限は必要
です。}。

Windowsでは、通常\winpath{C:\\texlive\\2025}（より一般的に言えば\winpath{%
\winenv{SystemDrive}\\texlive\\2025}）を作成するのに管理者権限は必要ありません。

インストール先のディレクトリは、インストーラを実行する前にいくつかの環境変数（よく
用いられるのは\var{TEXLIVE\_INSTALL\_PREFIX}と\var{TEXLIVE\_INSTALL\_TEXDIR}）を
設定することによっても変更できます。詳細については\code{install-tl \lopt{help}}に
より表示できるドキュメント（\url{https://tug.org/texlive/doc/install-tl.html}）を
参照してください。

合理的なインストール場所の変更先は（特にあなたが\TL を利用する単独のユーザである
場合には）ホームディレクトリ以下でしょう。メタ文字\dir{~}（チルダ）を用いるとこれを
簡単に指定することができます（例：\dir{~/texlive/2025}）。

複数の\TL リリースを同時にインストールできるようにするためにも、インストール先の
ディレクトリ名には「年」を含めることをおすすめします（もし\dir{/usr/local/texlive-%
cur}などバージョンに依存しない名前で管理したいとお考えであれば、シンボリックリンク
を利用して新しいリリースをテストしてからそのリンク先を変更するようにするのも良い
でしょう）。

インストーラにおける\code{TEXDIR}を変更すると\code{TEXMFLOCAL}, \code{TEXMFSYSVAR},
\code{TEXMFSYSCONFIG}にあたるディレクトリも合わせて変更されることになります。

\code{TEXMFHOME}はユーザごとのマクロファイルやパッケージを配置するのに適した場所で、
デフォルトでは\dir{~/texmf}です（macOSでは\dir{~/Library/texmf}）。\code{TEXDIR}%
の場合とは異なり、\TeX を実行しているユーザのホームディレクトリを簡単に参照できる
ように、このデフォルト値では\dir{~}が各々のインストールのために生成された設定
ファイルに書き込まれています。\dir{~}はUnix系では\dir{$HOME}に、Windowsでは\winenv{%
USERPROFILE}にそれぞれ展開されます。繰り返しの注意になりますが、\code{TEXMFHOME}%
も他のTEXMFツリーと同様にTDSにしたがった構成になっているべきです（必要のないファイル
やディレクトリは配置されていなくも構いません）。

\code{TEXMFVAR}はほとんどの（ユーザごとの）実行時キャッシュが保存される場所です。
\code{TEXMFCACHE}は\LuaLaTeX と{\ConTeXt} MkIVが使用するための変数で、デフォルト
では\code{TEXMFSYSVAR}または（もし\code{TEXMFSYSVAR}が書き込み可能でない場合は）
\code{TEXMFVAR}に設定されています。詳細は\ref{sec:context}節（\p.\pageref{%
sec:context}）を参照してください。

\subsubsection{オプション}
\label{sec:options}

\begin{figure}[tbh]
\begin{boxedverbatim}
Options customization:
===============================================================================
 <P> use letter size instead of A4 by default: [ ]
 <E> execution of restricted list of programs: [X]
 <F> create all format files:                  [X]
 <D> install font/macro doc tree:              [X]
 <S> install font/macro source tree:           [X]
 <L> create symlinks in standard directories:  [ ]
            binaries to:
            manpages to:
                info to:
 <Y> after install, set CTAN as source for package updates: [X]
\end{boxedverbatim}
\vskip-.5\baselineskip
\caption{Options menu (Unix)}\label{fig:options-text}
\end{figure}

図\ref{fig:options-text}はテキストモードにおけるオプションメニューです。以下に
各オプションの詳細を列挙します：
%
\begin{description}[style=unboxed]
\item[use letter size instead of A4 by default%
  （A4サイズの代わりにレターサイズをデフォルトで使用）]
デフォルトの用紙サイズを選択します。当然ながら、各ドキュメントのサイズはその都度
ドキュメントに合わせて指定することもできます。

\item[execution of restricted list of programs%
  （制限リストにあるプログラムの実行を許可）]
\TL{} 2010以降、いくつかの外部プログラムの実行がデフォルトで許可されるようになり
ました。実行が許可されている（数少ない）プログラムのリストは\file{texmf.cnf}に
記載されています。詳細については\TL{} 2010のリリースノート（\ref{sec:2010news}%
節）を参照してください。

\item[create all format files（すべてのフォーマットファイルを作成）]
このオプションは有効にしておくことを推奨します。このオプションを無効にした場合、
各ユーザがフォーマットを使用したいときにフォーマットが動的に生成され、無用な
問題を生じる可能性があります。詳細は\prog{fmtutil}のドキュメントを参照してください。

\item[install font/macro \dots\ tree%
  （フォント・マクロの 〜 ツリーをインストール）]
多くのパッケージに付属するソースファイルとドキュメントをダウンロード・インストール
するか否かを選択するオプションです。このオプションを無効化することは非推奨です。

\item[create symlinks in standard directories%
  （標準ディレクトリにシンボリックリンクを作成）]
このオプションはUnix系のみで利用可能で、環境変数の変更を回避する手段です。この
オプションを有効にしない場合、\TL のディレクトリは通常手動で\code{PATH}, \code{%
MANPATH}, \code{INFOPATH}に追加する必要があります。ただし、シンボリックリンクの
作成先ディレクトリについて書き込み権限が必要です。このオプションは一般的に知られた
\dir{/usr/local/bin}などのディレクトリ（ただし\TeX 関連コマンドがまだインストール
されていない場所）に\TeX 関連コマンドを配置するためのものです。シンボリックリンクの
作成先にシステムディレクトリを指定するなどして、元々システムに存在していたファイルを
上書きしてしまわないように注意してください。安全のため、このオプションは有効にしない
ことをおすすめします。

\item[after install, set CTAN as source for package updates%
  （CTANをインストール後のパッケージ更新元に設定）]
\TL をDVDまたはISOからインストールする場合、このオプションはデフォルトで有効です。
ほとんどの場合、\TL のユーザは年内に行われるパッケージのアップデートを受け取りたいと
考えるためです。このオプションを無効化する場合があるとしたら、例えばDVDからは一部の
インストールのみを行って、後に（別の方法で）補強したいような場合でしょう。いずれに
せよ、インストール時およびインストール後に利用するパッケージリポジトリは、必要に
応じて独立に設定することが可能です。詳細は\ref{sec:location}節と\ref{sec:dvd-install%
-net-updates}節を参照してください。
\end{description}

Windowsのみで利用可能なオプションも、上級者向けのGUIインターフェースで利用可能
です：
%
\begin{description}
\item[adjust searchpath（検索パスを調整）]
このオプションによってすべてのプログラムが確実に検索パス中で\TL のバイナリを見つけ
られるようにします。

\item[add menu shortcuts（メニューにショートカットを追加）]
このオプションが有効の場合、スタートメニューに\TL サブメニューが追加されます。ここ
には`TeX Live menu'と`No shortcuts'の他に`Launcher entry'という第三の選択肢も
あります。このオプションについては\ref{sec:sharedinstall}節で説明します。

\item[file associations（拡張子の関連付け）]
このオプションでの選択肢は`Only new'（拡張子の関連付けを行うが、既に存在する関連
付けの上書きは行わない）、`All'、`None'の3つです。

\item[install \TeX works front end（統合開発環境\TeX worksをインストール）]
\end{description}

すべての設定が済みましたら、テキストモードでは`I'をタイプ、GUIモードでは
`Install'ボタンを押すことによってインストールを実行してください。インストール
が完了したら（他にすることがなければ）\ref{sec:postinstall}節までスキップして
ください。

\subsection{\cmd{install-tl}のコマンドラインオプション}
\label{sec:cmdline}

次を実行すると、\cmd{install-tl}のコマンドラインオプションの一覧を確認することが
できます：
%
\begin{alltt}
> install-tl -help
\end{alltt}
%
オプション名を指定するには\sopt{}または\lopt{}を利用できます。以下では、一般的な
オプションについてのみ説明します：
%
\begin{description}
\item[\sopt{gui}]
インストーラを（もし利用可能なら）GUIモードで起動します。GUIモードの実行には
バージョン8.5以上のTcl/Tkが必要です。古いmacOSには同梱されていましたが、
Big Surより後のバージョンの場合は\MacTeX インストーラを使用しないのであれば、別途
自力でインストールする必要があります。Windows用の\TL にはTcl/Tkが同梱されている
ため特に何もする必要はありません。古いオプションである\sopt{gui=perltk}と
\sopt{gui=wizard}は現在も利用可能ですが、普通のGUIインターフェースを起動します。
Tcl/Tkが利用可能でない場合、このオプションが指定された場合でもインストーラは
テキストモードで続行されます。

\item[\sopt{no-gui}]
インストーラを必ずテキストモードで起動します。

\item[\sopt{lang \meta{言語コード}}]
指定した\meta{言語コード}（通常2文字）にあたる言語を使用します\footnote{訳注：日本語を
使用したい場合は\sopt{lang ja}とします。}。インストーラは自動的に最適な言語で起動します
が、もし自動判定に失敗した場合や最適な言語が利用不可能な場合は、英語を使用します。
インストーラで利用可能な言語の一覧は\code{install-tl -help}で確認できます。

\item[\sopt{portable}]
\TL をUSBメモリなどにポータブルインストールします。ポータブルインストールは、
インストーラの起動後にテキストモードの\code{V}コマンドまたはGUIモードのメニュー
を利用して選択することもできます。詳細は\ref{sec:portable-tl}節を参照してください。

\item[\sopt{profile \meta{ファイル}}]
インストールプロフィール\meta{ファイル}を読み込み、非対話的にインストールを実行
します。なおインストーラは常に\file{texlive.profile}を\dir{tlpkg}ディレクトリに
書き込みます。このファイルを利用すると、まったく同じ設定でインストールを（例えば
別のシステムでも）再実行することが可能です。別の活用方法として、ご自身で用意した
カスタムプロフィール（生成された\file{texlive.profile}を改変するのが簡単です）を
使用したり、空のファイルを指定してすべてをデフォルト設定でインストールしたりする
こともできます。

\item[\sopt{repository \meta{リポジトリ}}]
パッケージリポジトリ（ディレクトリまたはURL）を指定します。下の\ref{sec:location}%
節を参照してください。

\item[\sopt{in-place}]
（警告：このオプションは何をしようとしているのか完全に承知している場合以外は使用
しないでください。）すでにrsyncやsvnまたはその他の手段で\TL のコピー（その入手元
については\url{https://tug.org/texlive/acquire-mirror.html}を参照）が手許にある
場合、このオプションを利用するとそのコピーをそのまま利用し、追加で必要となる
インストール後の処理だけを実行します。なお\file{tlpkg/texlive.tlpdb}は上書きされる
ので十分注意してください。また、既にあるパッケージの除去は手動で行う必要があります。
このオプションは起動後にインストーラのインターフェースで有効にすることはできません。
\end{description}

\subsubsection{\sopt{repository}オプション}
\label{sec:location}

デフォルトのネットワーク上パッケージリポジトリは\url{https://mirror.ctan.org}に
よって自動的に選択されるCTANミラーです。

このデフォルトを上書きしたい場合は、使用したいリポジトリを\code{ftp:}, \code{%
http:}, \code{https:}, \code{file:/}のいずれかからはじまるURL、または通常の
ディレクトリパスによって指定します（\code{http:}, \code{https:}, \code{ftp:}から
始まるリポジトリ指定を行った場合、末尾の`\code{/}'や`\code{/tlpkg}'は無視
されます）。

例えばCTANの特定のミラーサーバを\url{http://ctan.example.org/tex-archive/%
systems/texlive/tlnet/}のように指定した場合、実際のホスト名と、そのホストに
おけるCTANのトップレベルパスを\code{ctan.example.org/tex-archive}の代わりに
使用します。CTANミラーの一覧は\url{https://ctan.org/mirrors}で確認できます。

もし与えられた引数が（パスまたは\code{file:/} URLの形で）ローカルのディレクトリ
を指していた場合、その下にある\dir{archive}サブディレクトリ内の圧縮ファイルが
（仮に展開済みのものがあったとしても）使用されます。

\subsection{インストール後のアクション}
\label{sec:postinstall}

場合によっては、インストール後に多少の手順を行う必要があるかもしれません。

\subsubsection{Unix系における環境変数の設定}
\label{sec:env}

インストール時に標準ディレクトリにシンボリックリンクを作成している（\ref{sec:%
options}節を参照）場合は、環境変数を変更する必要はありません。それ以外の場合、
Unix系システムでは各自適切なプラットフォーム向けのバイナリのあるディレクトリを
検索パスに追加する必要があります（Windowsではインストーラが行うので気にする
必要はありません）。

\TL にサポートされている各プラットフォームには\dir{TEXDIR/bin}以下に専用の
サブディレクトリがあります。専用サブディレクトリのリストと、それぞれに対応する
プラットフォームについては図\ref{fig:bin-text}を参照してください。

さらに、必要であればmanページとinfoマニュアルを含むディレクトリを、それぞれの
検索パスに追加することができます。ただしmanページについては\code{PATH}を設定
することによって自動的に検索可能になる場合もあります。

例えば、Intel x86アーキテクチャ上のGNU/Linuxで\prog{bash}などBourneシェルと
互換性のあるシェルを使用していて、なおかつ\TL デフォルトのディレクトリ設定の
環境の下では\file{$HOME/.profile}（もしくは\file{.profile}から読み込まれている
別のファイルでも構いません）に次のような行を追加することで環境変数を設定できます：
%
\begin{sverbatim}
PATH=/usr/local/texlive/2025/bin/x86_64-linux:$PATH; export PATH
MANPATH=/usr/local/texlive/2025/texmf-dist/doc/man:$MANPATH; export MANPATH
INFOPATH=/usr/local/texlive/2025/texmf-dist/doc/info:$INFOPATH; export INFOPATH
\end{sverbatim}
%
cshやtcshの場合は、編集すべきファイルは典型的には\file{$HOME/.cshrc}で、次の
ような行を追加します：
%
\begin{sverbatim}
setenv PATH /usr/local/texlive/2025/bin/x86_64-linux:$PATH
setenv MANPATH /usr/local/texlive/2025/texmf-dist/doc/man:$MANPATH
setenv INFOPATH /usr/local/texlive/2025/texmf-dist/doc/info:$INFOPATH
\end{sverbatim}
%
利用しているプラットフォームが\code{x86\_64-linux}でない場合は、適切な
プラットフォーム名を使用してください。またデフォルトのディレクトリ以外の
場所にインストールを行った場合は、ディレクトリ名も対応するものに変更して
ください。\TL インストーラはインストールの完了時にそれぞれのフルパスを
報告します。

すでに\code{PATH}をどこかの起動時設定ファイルで設定している場合は、
適当だと思う方法で\TL ディレクトリを含めるようにしてください。

\subsubsection{環境変数をグローバルに設定する}
\label{sec:envglobal}

もし前節で説明したような環境変数の変更をシステム全体に適用したい場合や、新しい
ユーザにも適用したい場合は、自力で設定を行ってください。なぜなら、そのような
ことを実現する方法は、システムによってあまりに異なるからです。

ここでは2つほど大まかな方針を示しておきます。第一に\file{/etc/manpath.config}%
というファイルの存在を確かめて、もし存在していたら次のような内容を追記します：
%
\begin{sverbatim}
MANPATH_MAP /usr/local/texlive/2025/bin/x86_64-linux \
            /usr/local/texlive/2025/texmf-dist/doc/man
\end{sverbatim}
%
第二に各種の検索パスや環境変数のデフォルト値を設定するためのファイル\file{%
/etc/environment}の内容を確認することです。

各Unix系システム向けのバイナリディレクトリには、\file{man}という名前の
\dir{texmf-dist/doc/man}を指すシンボリックリンクが作成されています。一部の
\prog{man}プログラム（例えばmacOSの標準\cmd{man}コマンド）は、これを利用
して自動的にmanページの設定を最適化してくれる場合があります。

\subsubsection{DVDインストール後のインターネットを利用したアップデート}
\label{sec:dvd-install-net-updates}

\TL をDVDからインストールした後、インターネットを利用してアップデートを行いたい
場合は、以下のコマンドを検索パスの設定の\emph{後}に行ってください：
%
\begin{alltt}
> tlmgr option repository https://mirror.ctan.org/systems/texlive/tlnet
\end{alltt}
%
これによって以降\cmd{tlmgr}は最寄りのCTANミラーを利用してアップデートを行う
ようになります。DVDからのインストール時に\ref{sec:options}節で説明したオプション
を介してこの設定をデフォルトにしておくこともできます。

もしミラーの自動選択では問題がある場合は、\url{https://ctan.org/mirrors}から特定の
CTANミラーを指定することもできます。その際は\dir{tlnet}サブディレクトリまでの
パスを正確に指定するようにしてください。

\subsubsection{\XeTeX と\LuaTeX のためのシステム設定}
\label{sec:font-conf-sys}

\XeTeX と\LuaTeX は\TeX ツリーにあるものだけでなく、システムにインストール
されているすべてのフォントを使用することができます。\TL 外のシステムフォントは
通常フォント名（例えば\code{Liberation Serif}）を利用してアクセスされますが、
システムにおけるファイル名も使用することができます。

関連する話題として、\TL ディストリビューションが提供するフォントをシステム
フォントとして利用可能にする（すなわちフォント名でアクセスできるようにする）
にはどうすればよいかというものがあります。

\paragraph{\LuaTeX の場合}
特に何もしなくてもフォント名でアクセスすることが可能です。\TL に含まれる
すべてのフォントは、フォント名でもファイル名でも同じように
アクセス可能であるはずです。これは\LaTeX とplain \TeX の両方をサポートする
\pkg{luaotfload}パッケージのおかげです。なお\pkg{luaotfload}のフォント名
インデックスは新しいフォントについては再生成される必要がありますが、これは
未知のフォントを読み込もうとすると自動的に実行されます。

\paragraph{\XeTeX の場合}
Windowsでは\TL のフォントも自動的に利用できる状態になっているはずです
\footnote{Windows向け\TL に含まれる\prog{{fc-cache}}プログラムを実行する
ことで実現されています。}。macOSについては、別の文献を参照してください
\footnote{訳注：\TL 内のフォントを個別にインストールするだけであれば、
当該フォントの実体ファイル（例えば`\code{kpsewhich \meta{フォントファイル
名}}'を実行すれば見つけられます）をFinder上で表示してダブルクリックする
ことでFont Bookアプリが起動し、インストールすることが可能です。\TL に
含まれるインストール可能なフォントを一括で処理する場合には\dir{%
TEXMFDIST/fonts/}以下にあるフォントファイルを\dir{/Library/font}（シス
テム全体にインストールする場合）や\dir{~/Library/font}（特定ユーザのみ
にインストールする場合）にすべてコピーすればよいようです。}。macOS以外の
Unix系システムの場合の手順は以下の通りです。

\pkg{xetex}パッケージがインストールされている場合\footnote{最初から
インストールされている場合も、後から追加された場合も同様です。}、必要な
設定ファイルが\file{TEXMFSYSVAR/fonts/conf/texlive-fontconfig.conf}に
作成されています。\TL のフォントをシステムフォントとして利用可能にするため
には以下を実施します：
%
\begin{enumerate}
\item その\file{texlive-fontconfig.conf}ファイルを（典型的には）\file{%
  /etc/fonts/conf.d/09-texlive.conf}にコピー
\item \code{fc-cache -fsv}を実行
\end{enumerate}

上記を実行するのに十分な権限がない場合や、1ユーザのみを対象に設定を
適用したい場合には以下のようにします：
%
\begin{enumerate}
\item その\file{texlive-fontconfig.conf}ファイルを（典型的には）\file{%
  ~/.fonts.conf.d/09-texlive.conf}（\dir{~}はホームディレクトリを表す）にコピー
\item \code{fc-cache -fv}を実行
\end{enumerate}

\cmd{fc-list}を実行するとシステムにあるフォントの一覧を確認することができます。
また\code{fc-list : family style file spacing}（タイプミスに注意してください）
とすると、もう少し詳細な情報を表示することができます。

\subsubsection{{\ConTeXt} LMTXとMKIV}
\label{sec:context}

「古い」\ConTeXt （Mark IVとMkIV）と「新しい」\ConTeXt （LMTXとMkXL）はいずれも
\TL のインストール後はそのままで動く状態になっているはずで、\cmd{tlmgr}を使用して
アップデートを行っている限りは特に特別な設定を行う必要はありません。

\ConTeXt は\KPS ライブラリやシステムワイドの\code{ls-R}ファイルを使用していません。
代わりに、\ConTeXt はユーザごとのファイル名データベースをすべての既知のツリーについて
管理しています。\cmd{mktexlsr}を実行してもこれらのデータベースは直接は更新されませんが、
\ConTeXt は次に実行された際に自動的にこれらのデータベースを再生成します\footnote{\TL
専用の\file{cont-sys.mkiv}と\file{cont-sys.mkxl}がその実装です。}。

もし何らかの理由でこれらのデータベースを手動で再生成したい場合には、以下のいずれか
もしくは両方を実行します。
%
\begin{alltt}
> mtxrun --generate           # LMTX
> mtxrun --luatex --generate  # MkIV
\end{alltt}

なお、この操作によって生成されるファイルは\code{TEXMFCACHE}（デフォルト値は
\code{TEXMFSYSVAR;TEXMFVAR}）以下に保存されます。

\ConTeXt は\code{TEXMFCACHE}に列挙されているパスをすべて読み込み、そして
書込み可能な最初の場所にキャッシュを作成します。読み込みの際は、複数の
キャッシュが見つかった場合は（見つかったキャッシュの中で）一番最後のパスに
あるものが優先されます。

より詳細な情報については\url{https://wiki.contextgarden.net/LMTX}および
\url{https://wiki.contextgarden.net/Running_Mark_IV}を参照してください。

\subsubsection{ローカルおよび個人用のマクロを利用する}
\label{sec:local-personal-macros}

ローカルおよび個人用のマクロの配置方法については\ref{sec:texmftrees}節でも簡単に
言及しましたが、\code{TEXMFLOCAL}（デフォルトでは\dir{/usr/local/texlive/texmf-%
local}または\winpath{\winenv{SystemDrive}\\texlive\\texmf-local}）はシステム全体
に適用したいローカルなフォントやマクロを、\code{TEXMFHOME}（デフォルトでは\dir{%
$HOME/texmf}または\winpath{\winenv{USERPROFILE}\\texmf}）はユーザごとの個人用
フォントやマクロを配置するためのものです。これらのディレクトリは毎年のリリース
とは切り離して管理されることが意図されており、そこに含まれているファイルは自動的
に各\TL リリースから検索できるようになっています。したがって、\code{TEXMFLOCAL}%
の値をメインの\TL ツリーとあまりかけ離れた位置に変更することは避けるべきです。
さもないと将来のリリースの際に手動で変更を行う必要が発生する可能性があります。

いずれのツリーについても、それぞれのファイルはTDSに基づいたサブディレクトリに
配置されているべきです（\url{https://tug.org/tds}や\file{texmf-dist/web2c/texmf.%
cnf}を参照してください）。例えば\LaTeX のクラスファイルやパッケージは\dir{%
TEXMFLOCAL/tex/latex}や\dir{TEXMFHOME/tex/latex}、あるいはそれより下の階層に配置
されているべきです。

\dir{TEXMFLOCAL}については最新の状況を反映したファイル名データベースがないと、
その中にあるファイルが見つけられません。データベースは\cmd{mktexlsr}コマンドを
実行するか、GUI版\TL マネージャで`Update filename database'ボタンを押すことに
よって更新することができます。

デフォルトでは、これまで見てきたように各TEXMFツリーを表す変数は1つのディレクトリ
を指すように定義されています。しかし、これは絶対そうでなければならないわけでは
ありません。例えば、もし複数のバージョンの大きなパッケージを簡単に切り替える必要
があるような場合は、複数のツリーを用意した上で\code{TEXMFHOME}をブレースで囲わ
れたカンマ区切りのディレクトリ名リストに設定するとよいでしょう：
%
\begin{verbatim}
  TEXMFHOME = {/my/dir1,/mydir2,/a/third/dir}
\end{verbatim}
%
ブレース展開については\ref{sec:brace-expansion}節により詳しい解説があります。

\subsubsection{サードパーティフォントを利用する}

残念ながら\TeX と\pdfTeX に関しては、これは泥沼への入り口です。\TeX インストール
の深淵に飛び込みたい場合を除いては、すべての\TeX 処理系でサードパーティフォント
を利用できるようにすることは諦めた方が無難です。\TL には数多くのフォントが
含まれているので、それらの中に適当なものがないか探してみてください。TUGのウェブ
ページ\url{https://tug.org/FontCatalogue}には主要な\TeX ディストリビューションで
利用可能なフォントのほとんどすべてが、さまざまな観点から分類されて、一覧になって
います。

もしどうしてもサードパーティフォントを一般の\TeX 処理系で利用できるように設定を
行う必要がある場合は、\url{https://tug.org/fonts/fontinstall.html}にその方法に
ついて（可能な範囲での）解説がありますので、参考にしてください。

また\XeTeX または\LuaTeX （\ref{sec:tex-extensions}節）の利用も検討に値します。
これらの処理系であれば\TeX のために特別な設定を行わなくてもOSにインストール
されたあらゆるフォントを利用することができます（ただし、システムフォントを利用
すると、その文書は他の環境では簡単に作成できなくなる点には注意してください）。

\begin{janote}
上述の通り、\XeTeX や\LuaTeX を除く古典的な\TeX 処理系でサードパーティフォント
を利用するのは難しいです。\pTeX や\upTeX 用にサードパーティの和文フォントを設定
するのもやはり難易度が高く、初心者にはおすすめできません（自由にフォントを選び
たい場合は\LuaTeX-ja の利用を検討してください）。しかし、幸い\TL にはよく
使われる和文フォントの埋め込みについて設定を自動化するためのプログラム
\cmd{kanji-config-updmap}が付属しています。詳細は\TL に含まれる
\cmd{kanji-config-updmap}のドキュメント（日本語）を参照してください。
\end{janote}

\subsection{インストールした\TL をテストする}
\label{sec:test-install}

\TL をインストールした後、美しい文書やフォントの作成を始めるために\TL が正常に
動作するかテストしたいと思うのが普通でしょう。

おそらく、多くの人がまず最初に動作確認したいのはファイル編集を行うフロントエンド
でしょう。\TL はWindows（のみ）では{\TeX}works（\url{https://tug.org/texworks}）を、
\MacTeX は{\TeX}Shop（\url{https://pages.uoregon.edu/koch/texshop}）をインストール
します。他のUnix系システムではどのエディタを利用するかはユーザが決めてください。
エディタの選択肢はとてもたくさんあり、その一部は次のセクションでリストアップされて
います。また\url{https://tug.org/interest.html#editors}も参考になるかと思います。
基本的にはどんなテキストエディタでも使用できます。\TeX のための特別な機能は、
なくてならないものではありません。

残りのセクションでは、新しい\TL が正常に動作するか確認する基本的な手順を解説します。
なお、ここではUnixコマンドを使用した方法を紹介します。macOSやWindowsのユーザは、
GUIを利用してテストをしたいと考えるかもしれませんが、根本的な部分は変わりません。

\begin{enumerate}
\item まずはじめに、\cmd{tex}プログラムが実行可能であることを確認しましょう：
%
\begin{alltt}
> tex -version
TeX 3.14159265 (TeX Live ...)
Copyright ... D.E. Knuth.
...
\end{alltt}
%
もしこれを実行したとき、正しいバージョン情報・コピーライト情報の代わりに`command
not found'エラーが出たり、古いバージョン情報が表示される場合は、正しい\dir{bin}%
ディレクトリが\code{PATH}に追加されていない可能性があります。そのような場合は\p.%
\pageref{sec:env}にある環境変数設定の情報を確認してください。

\item 基本的な\LaTeX ファイルを処理して、PDFを生成してみましょう：
%
\begin{alltt}
> pdflatex sample2e.tex
This is pdfTeX 3.14...
...
Output written on sample2e.pdf (3 pages, 142120 bytes).
Transcript written on sample2e.log.
\end{alltt}
%
\file{sample2e.tex}やその他のファイルが見つからないというエラーが出る場合は、
古い環境変数の設定や設定ファイルの影響を受けてしまっている可能性が高いです。
まずは\TeX 関係の環境変数をすべてクリアすることをおすすめします。（より詳細に
分析したい場合は、\TeX 自身に何を検索し、何を見つけたのか報告させるのが良い
でしょう。詳細は\ref{sec:debugging}節を参照してください。）

\item 処理結果のPDFファイルをプレビューしてみます。例えば次のようにします：
%
\begin{alltt}
> xpdf sample2e.pdf
\end{alltt}
%
すると、新しいウィンドウがポップして\LaTeX の基礎について説明した素敵な文書が
表示されるはずです（ところで、もし\TeX を使うのが初めてでしたら、その内容も
一読の価値があります）。

もちろんPDFビューアは他にも色々なものがあります。Unix系システムでは
\cmd{evince}や\cmd{okular}がよく用いられます。Windows向けのものとしては
Sumatra PDF（\url{https://www.sumatrapdfreader.org/free-pdf-reader.html}）
をおすすめします。\TL にはPDFビューアは含まれていないので、PDFの閲覧には
何かしらを必ず別途インストールする必要があります。

\item もちろん、いまでも\TeX の元来の出力フォーマットであるDVIを生成する
こともできます：
%
\begin{alltt}
> latex sample2e.tex
\end{alltt}

\item DVIをプレビューするには：
%
\begin{alltt}
> xdvi sample2e.dvi    # Unix
> dviout sample2e.dvi  # Windows
\end{alltt}
%
なお\cmd{xdvi}コマンドを利用するにはXウィンドウシステムが正しく動作している
必要があります。正常に動作していない場合や、環境変数\code{DISPLAY}の設定が
まずい場合は\samp{Can't open display}エラーが発生します。

\item 続いてDVIから\PS ファイルを作成してみましょう：
%
\begin{alltt}
> dvips sample2e.dvi -o sample2e.ps
\end{alltt}

\item あるいはDVIからPDFに変換することもできます。これは\pdfTeX （あるいは
\XeTeX や\LuaTeX）を使わない手段として有用な場合があります\footnote{訳注：
日本語組版では今でもよく用いられる\pTeX 系の処理系はDVIを出力するため、現在も
\cmd{dvipdfmx}を用いてPDF生成を行う手順は一般的です。}。
%
\begin{alltt}
> dvipdfmx sample2e.dvi -o sample2e.pdf
\end{alltt}

\item \file{sample2e.tex}以外でテストのために利用できる標準的なファイルを以下に
示しておきます：
%
\begin{description}
\item [\file{small2e.tex}]
\file{sample2e.tex}よりもシンプルな文書です。なにか問題が発生したときに、より
入力サイズの小さいものとして利用できます。

\item [\file{testpage.tex}]
プリンタにオフセットがあるかどうかを確認するための文書です。

\item [\file{nfssfont.tex}]
フォントテーブルを出力・テストするためのものです。

\item [\file{testfont.tex}]
plain \TeX を用いて、同じくフォントテーブルを出力するものです。

\item [\file{story.tex}]
最も標準的な（plain）\TeX のテスト用ファイルです。\code{tex story.tex}を実行
後、\code{*}プロンプトに\samp{\cs{bye}}を入力する必要があります。
\end{description}

\item \pkg{xetex}パッケージをインストールしている場合には、\XeTeX がシステム
フォントを正常に利用できるかどうかテストすることができます：
%
\begin{alltt}
> xetex opentype-info.tex
This is XeTeX, Version 3.14\dots
...
Output written on opentype-info.pdf (1 page).
Transcript written on opentype-info.log.
\end{alltt}
%
もし``Invalid fontname `Latin Modern Roman/ICU'\dots''というエラーメッセージ
が表示された場合は、\TL に含まれるフォントを見つけられるように設定を行う必要
があります。\ref{sec:font-conf-sys}節を参照してください。
\end{enumerate}

\subsection{アンインストール}
\label{sec:uninstall}

\TL をアンインストールには、以下のコマンドを実行します（Windowsについては後述）：
%
\begin{alltt}
> tlmgr uninstall --all
\end{alltt}
%
上記を実行すると、本当にアンインストールを行うかどうか確認されます。この確認を
行わない限りは、アンインストールは実行されません。（なお\lopt{all}の付かない
\code{uninstall}アクションは、1つ1つのパッケージを個別にアンインストールする
ためのものです。）

このアクションでは、以下に列挙するユーザ固有のディレクトリは削除しません
（\ref{sec:texmftrees}節も参照）。
%
\begin{description}
\item[\code{TEXMFCONFIG}]
ユーザによる設定変更を行うためのツリーです。変更済みの設定を維持したい場合は、
削除する前に復元方法を確認するようにしてください。

\item[\code{TEXMFVAR}]
自動生成された実行時データ（ローカルのフォーマットファイルなど）を保存することを
意図したツリーです。他の目的で利用していない限りは削除しても問題はありません。

\item[\code{TEXMFHOME}]
このツリーにはユーザ自身がインストールしたファイル（ディストリビューションに
未収録のものなど）だけが含まれます。完全に\TeX の利用をやめる場合や、まったく
新しい\TeX 環境を新たに構築したい場合を除いては、このツリーは削除しない方が
よいでしょう。
\end{description}
%
こうしたツリーのパス位置は\code{kpsewhich -var-value=\meta{ツリー}}を実行する
ことで確認することができます。

\prog{tlmgr}によるアンインストールではインストール後のアクション結果を復帰する
ところまでは行いません。例えばシェルの初期化ファイルにおける\code{PATH}の変更や
\TL 内のフォントをシステムに認識させる設定はそのままになります（\ref{sec:%
postinstall}節参照）。必要な場合は、これらの設定は自力で元に戻す必要があります。

WindowsではGUIを用いてアンインストールを行うことができます。
\ref{sec:winfeatures}節を参照してください。

\subsection{その他のダウンロード可能なソフトウェア}

\TeX 初心者や\LaTeX 文書を実際に作成するにあたってヘルプが必要な方は、ぜひ
\url{https://tug.org/begin.html}にアクセスしてみてください。いくつかの初心者
向けの情報を掲載しています。

ここではインストールの検討に値する各種ツールへのリンクを列挙しておきます：
%
\begin{description}
\item[Ghostscript] \url{https://ghostscript.com/}（PostScript/PDFインタプリタ）
\item[Perl] \url{https://www.perl.org/}%
  （追加パッケージはCPAN（\url{https://www.cpan.org/}）から入手可）
\item[ImageMagick] \url{https://imagemagick.org/}（画像の加工や変換）
\item[NetPBM] \url{http://netpbm.sourceforge.net/}（こちらも画像用ツール）
\item[\TeX 向きのエディタ] テキストエディタの選択肢はかなり多岐にわたり、その
  選択は完全に各自の好みによります。ここでは主なものをアルファベット順に紹介
  しておきます（一部はWindows専用です）。
  \begin{itemize}
  \item \prog{GNU Emacs}: \url{https://www.gnu.org/software/emacs/emacs.html}%
    （多くの主要なプラットフォームで利用可能）
  \item \prog{Auc\TeX}: \url{https://www.gnu.org/software/auctex}%
    （Emacsプラグイン。EmacsのパッケージマネージャELPAでインストール可能。ソースは
    CTANからも入手可）
  \item \prog{SciTE}: \url{https://www.scintilla.org/SciTE.html}
  \item \prog{Texmaker}: \url{https://www.xm1math.net/texmaker}
  \item \prog{\TeX studio}: \url{https://texstudio.org/}%
    （\prog{Texmaker}の拡張プロジェクト）
  \item \prog{\TeX nicCenter}: \url{http://www.texniccenter.org}
  \item \prog{\TeX works}: \url{https://tug.org/texworks}%
    （Windows版\TL では標準添付）
  \item \prog{Vim}: \url{https://www.vim.org}
  \item \prog{WinEdt}: \url{https://tug.org/winedt}, \url{http://www.winedt.com}%
    （シェアウェア）
  \item \prog{WinShell}: \url{https://www.winshell.de}
  \end{itemize}
\end{description}

\section{特殊なインストール}

ここまでは基本的なインストール手順について説明してきました。このセクションでは、
いくつかの特殊なインストールについて解説します。

\subsection{共有インストール}
\label{sec:sharedinstall}

\TL はネットワーク上の複数のシステムで共有できるように設計されています。標準の
ディレクトリ構成では、いかなるパスもハードコードされていません。\TL に含まれる
プログラムは必要なファイルを相対パスによって探索します。このことは、\TL の根幹に
あたる設定ファイル\file{$TEXMFDIST/web2c/texmf.cnf}を見ればわかります。そこには
%
\begin{sverbatim}
TEXMFROOT = $SELFAUTOPARENT
...
TEXMFDIST = $TEXMFROOT/texmf-dist
...
TEXMFLOCAL = $SELFAUTOGRANDPARENT/texmf-local
\end{sverbatim}
%
のような記述が並んでいるはずです。この仕組みのおかげで、各プラットフォーム向け
の実行ファイルを、それぞれの検索パスに追加するだけで\TL が機能するように設定
できます。

同様に、一度ローカルに\TL をインストールし、そのすべての階層をネットワーク上の
場所に移動することも可能です。

Windows向けには、\TL は\cmd{tlaunch}というランチャーを含んでいます。そのメイン
画面のメニューには種々の\TeX 関連プログラムおよびドキュメントについてアクション
を起こすためのボタンがあります。この画面は\code{ini}ファイルによってカスタマイズ
することも可能です。初回起動時には、それらのボタンは通常のWindows向けポスト
インストールを実行（すなわち検索パスと拡張子の関連付けを更新）しますが、この操作
は現在ログイン中のユーザにしか適用されません。したがって、ローカルネットワークに
アクセスできる各システムで\TL を利用できるようにするためには、\cmd{tlaunch}に
メニューショートカットを追加するだけで事足ります。詳細については\cmd{tlaunch}の
マニュアルを参照してください（\code{texdoc tlaunch}を実行するか\url{https://%
ctan.org/pkg/tlaunch}にアクセスすると閲覧できます）。

\subsection{ポータブル（USB）インストール}
\label{sec:portable-tl}

\TL インストーラに\sopt{portable}オプションを与えると（テキストモードで\code{V}%
コマンドを実行したりGUIモードで同等のオプションを利用した場合も同様です）\TL
は完全に自己完備のインストールを標準的なルート以下に作成します。これはシステムの
いかなる環境にも依存しません。このような構成の\TL はUSBメモリに直接インストール
したり、後からUSBにコピーしたりすることができます。

具体的には、ポータブルインストールでは\code{TEXMFHOME}, \code{TEXMFVAR}, \code{%
TEXMFCONFIG}のデフォルト値をそれぞれ\code{TEXMFLOCAL}, \code{TEXMFSYSVAR},
\code{TEXMFSYSCONFIG}と一致するように設定することで、自己完結するようになって
います。そのため、ユーザごとの設定やキャッシュが作られることはありません。

ポータブルインストールされた\TeX を実行するには、通常通り実行ファイルのある適切な
ディレクトリを（端末セッションの間）検索パスに追加する必要があります。

Windowsでは、ポータブルインストールのルートにある\cmd{tl-tray-menu}をダブルクリック
することによって一時的な`tray menu'が作成され、これを用いていくつかの一般的なタスク
を実行することができます：
%
\medskip
\tlpng{tray-menu}{4cm}
\smallskip
%
この画面で`More\ldots'を押すと、このメニューのカスタマイズ方法についての説明が表示
されます。

\section{\prog{tlmgr}: \TL マネージャ}
\label{sec:tlmgr}

\begin{figure}[tb]
\tlpng{tlshell-macos-ja}{\linewidth}
\caption{\prog{tlshell} GUIのアクションメニュー（macOS）}
\label{fig:tlshell}
\end{figure}

\begin{figure}[tb]
\tlpng{tlcockpit-packages}{.8\linewidth}
\caption{\prog{tlmgr}の新しい{GUI}（\prog{tlcockpit}）}
\label{fig:tlcockpit}
\end{figure}

\begin{figure}[tb]
\tlpng{tlmgr-gui}{\linewidth}
\caption{\prog{tlmgr}のレガシーGUIモード。`Load'後のメインウィンドウ}
\label{fig:tlmgr-gui}
\end{figure}

\TL にはインストール後の\TL 管理のために\prog{tlmgr}というプログラムが同梱されて
います。その主な機能は：
%
\begin{itemize}
\item 個別パッケージのインストール、アップデート、バックアップ、アンインストール
  （依存関係管理も可）
\item パッケージの検索と詳細の表示
\item プラットフォームの表示、追加、削除
\item インストールオプションの変更（デフォルトの用紙サイズやソースの場所）
\end{itemize}

\prog{texconfig}の機能はすべて\prog{tlmgr}にも備わっています。\TL チームは\prog{%
texconfig}の操作に慣れている方々のために依然としてその配布およびメンテナンスを継続
していますが、\prog{tlmgr}を使用することをおすすめします。

\subsection{\prog{tlmgr}のGUI}

\TL には\prog{tlmgr}のGUIフロントエンドが複数含まれています。重要なものが2つあり
ます。ひとつは図\ref{fig:tlshell}で示されている\prog{tlshell}というTcl/Tkを利用
したGUIで、Windowsで利用可能です。もうひとつは図\ref{fig:tlcockpit}で示されている
\prog{tlcockpit}で、動作にはバージョン8以降のJavaとJavaFXが必要です。これらは
いずれも独立したパッケージです。

\prog{tlmgr}もネイティブのGUIモードを持っています（図\ref{fig:tlmgr-gui}）：
%
\begin{alltt}
> tlmgr -gui
\end{alltt}
%
しかし、このGUI拡張の実行にはPerl/Tkが必要です。現在はWindows向けの\TL には
Perl/Tkモジュールは同梱されていないので注意してください。

\subsection{コマンド使用例}

最初のインストールののち、\TL を最新の状態にアップデートするには：
%
\begin{alltt}
> tlmgr update -all
\end{alltt}
%
もし実際のアップデートを実行する前に何が起きるかを確認したい場合は：
%
\begin{alltt}
> tlmgr update -all -dry-run
\end{alltt}
%
または（出力メッセージを減らすなら）
%
\begin{alltt}
> tlmgr update -list
\end{alltt}

もう少し複雑な例として、\XeTeX 用のコレクションをローカルディレクトリから追加
する方法を示します：
%
\begin{alltt}
> tlmgr -repository /local/mirror/tlnet install collection-xetex
\end{alltt}
%
これを実行すると、次のような出力が表示されます（一部省略しています）：
%
\begin{fverbatim}
install: collection-xetex
install: arabxetex
...
install: xetex
install: xetexconfig
install: xetex.i386-linux
running post install action for xetex
install: xetex-def
...
running mktexlsr
mktexlsr: Updating /usr/local/texlive/2025/texmf-dist/ls-R...
...
running fmtutil-sys --missing
...
Transcript written on xelatex.log.
fmtutil: /usr/local/texlive/2025/texmf-var/web2c/xetex/xelatex.fmt installed.
\end{fverbatim}

上の出力からわかるように、\prog{tlmgr}は依存パッケージもインストールし、ファイル名
データベースの更新やフォーマットの（再）生成など必要なインストール後処理も自動的に
実行しています。ここでは\XeTeX 用の新しいフォーマットが生成されています。

パッケージ（またはコレクション、スキーム）の詳細を確認するには次のようにします：
%
\begin{alltt}
> tlmgr show collection-latexextra
\end{alltt}
%
これにより以下のような出力が得られるはずです：
%
\begin{fverbatim}
package:    collection-latexextra
category:   Collection
shortdesc:  LaTeX supplementary packages
longdesc:   A very large collection of add-on packages for LaTeX.
installed:  Yes
revision:   46963
sizes:      657941k
\end{fverbatim}
%
最後に、最も大事なことですが、フルドキュメントを確認するには\url{https://tug.org/%
texlive/tlmgr.html}にアクセスするか、以下を実行してください：
%
\begin{alltt}
> tlmgr -help
\end{alltt}

\section{Windows向けの情報}
\label{sec:windows}

\subsection{Windows専用の機能}
\label{sec:winfeatures}

Windowsでは\TL インストーラはいくつか追加の処理を行います：
%
\begin{description}
\item[メニューとショートカット]
スタートメニューに`\TL'サブメニューを追加します。このサブメニューから\prog{tlshell}%
（\prog{tlmgr}のGUI）や\prog{dviout}などのGUIプログラムや、いくつかのドキュメントに
アクセスすることができます。

\item[拡張子の関連付け]
設定が有効になっている場合、\prog{\TeX works}, \prog{Dviout}などを、それぞれが
扱う拡張子に関連付けます。あるいは、関連するファイルを右クリックして「プログラム
から開く」を選択した場合にこれらのプログラムが候補に挙がるようになります。
しかしながら、より優先度の高い「ユーザ選択」のファイル関連付け（対話的にのみ
設定できる）が存在する場合、そちらが優先されることになります。

\item[PostScriptサポート]
PostScriptファイルは現在ではPSviewerによって一時的にPDFに変換された上でデフォルトの
PDFビューアで表示されるようになりました。各種のビットマップ画像を右クリックして
「プログラムから開く」を選択した場合に\prog{bitmap2eps}を選択できるようになります。
\prog{bitmap2eps}はシンプルなスクリプトで、バックエンドとして\prog{sam2p}や\prog{%
bmeps}を利用します。

\item[自動パス設定]
Windowsでは手動でパス設定を行う必要はありません。

\item[アンインストーラ]
\TL のインストーラは「プログラムの追加と削除」メニューの中（管理者権限でインストール
した場合）または\TL メニューの中（単一のユーザのみにインストールした場合）に\TL を
アンインストールするための項目を追加します。

\item[書き込み禁止]
管理者として\TL をインストールした場合、\TL のディレクトリは書き込み禁止に設定され
ます（通常のNTFSフォーマット内蔵ディスクにインストールした場合）。
\end{description}

また\prog{tlaunch}（\ref{sec:sharedinstall}節）も参照してみてください。

\subsection{Windows向けに追加されているソフトウェア}

\TL を完全にインストールするためには、Windowsマシンには通常存在していないプログラム
が必要となります。そのため\TL はWindows向けに一部の依存パッケージを同梱しています。
以下に列挙するプログラムはWindows版の\TL にのみ含まれています：
%
\begin{description}
\item[Perl, Tcl/Tk, Ghostscript]
PerlとGhostscriptは重要なプログラムであること、また\TL インストーラのGUIモードや
\prog{tlshell}がTcl/Tkを利用することから\TL には\kenten{隠された}それらのコピーが
含まれています。これらのプログラムは\TL のプログラムからは利用可能ですが、環境変数や
レジストリ設定の上では存在していないことになっています。\TL に同梱されているPerlと
Tcl/Tkは完全版ではなく、また3プログラムともシステムに別途インストールされたものとは
一切干渉しないはずです。\TL に含まれるインフラ以外のスクリプトを、外部のPerl等で
動作させたい場合の設定方法については\ref{sec:windows-external}節を参照してください。

\item[dviout]
DVIビューア。初期状態では、ファイルを\prog{dviout}でプレビューしようとすると、
フォント生成が行われるはずです。これはスクリーンフォントがインストールされていない
ためです。しばらく使用していると、頻繁に利用されるフォントの生成が完了するため、
フォント生成ウィンドウが現れることは稀になります。詳細はオンラインヘルプ（おすすめ）
を参照してください。

\item[\TeX works]
PDFビューア機能をもつ\TeX 用の統合開発環境。

\item[各種コマンドラインツール]
\TL バイナリと同時に、多数のWindows移植版のUnixコマンドもインストールされます。\cmd{%
gzip}, \cmd{zip}, \cmd{unzip}や\prog{poppler}関連の\cmd{pdfinfo}, \cmd{pdffonts}など
です。

\item[fc-list, fc-cache, \ldots]
これらのフォント管理ライブラリを利用して\XeTeX からWindows上のフォントを利用できます。
\prog{fc-list}を用いると\XeTeX 拡張の\cs{font}コマンドに与えるべきフォント名を決定
することができます。必要に応じて\prog{fc-cache}を事前に実行してフォント情報を更新して
ください。
\end{description}

\subsection{外部のPerl, Tcl/Tk, Ghostscriptを利用する}
\label{sec:windows-external}

通常\TL は同梱のPerl, Tcl/Tk, Ghostscriptを使用します。これはインフラだけでなく、
\TL が収録するすべてのスクリプトについても同様です。ユーザ自身が別途インストール
した外部のPerl等を使用したい場合には、\emph{\TL ルート直下の}\file{texmf.cnf}で
設定を行うことができます。

外部のPerlを使用するには\file{texmf.cnf}に
%
\begin{verbatim}
TEXLIVE_WINDOWS_TRY_EXTERNAL_PERL = 1
\end{verbatim}
%
という行を追加します。こうすることで、\TL （特に\file{bin/windows/runscript.tlu}）
は\TL のインフラツール以外について検索パス内の\file{perl.exe}を探すようになります。
これはここで紹介する3つの設定のうちで最も有益なケースが多いと考えられます。\TL の
Perlも多数の追加モジュールをサポートしていますが、すべてのサードパーティスクリプトを
サポートできるほどではありません。

Tcl/Tkの場合も同様で
%
\begin{verbatim}
TEXLIVE_WINDOWS_TRY_EXTERNAL_TCL = 1
\end{verbatim}
%
という行を追加することで、\TL は検索パス内の\file{tclkit.exe}, \file{wish.exe},
\file{wish85.exe}, \file{wish86.exe}, \file{wish87.exe}を探すようになります。

Ghostscriptの場合は設定方法が異なります。この場合、使用したいGhostscriptコマンドの
ファイル名もしくはフルパスを与える必要があります。
%
\begin{alltt}
TEXLIVE_WINDOWS_EXTERNAL_GS = \meta{Ghostscriptコマンドのパス}
\end{alltt}
%
もう1つの違いは、\TL 同梱のGhostscriptは完全なものであることです。ドキュメントと
プリンタドライバのみが省略されています。したがって、ここに示した方法で\TL の設定を
上書きする必要が生じることはほとんどないでしょう。

\file{texmf.cnf}については\ref{sec:configfiles}節も参照してください。

\subsection{ユーザプロファイルがホームディレクトリ扱い}
\label{sec:winhome}

Windowsにおいて、Unix系のホームディレクトリに相当するのは\winenv{USERPROFILE}ディレクトリ
です。Windows Vista以降のWindowsでは、そのデフォルト値は\winpath{C:\\Users\\<username>}%
です。\file{texmf.cnf}内および\KPS 全般において、\dir{~}はWindowsとUnix系のいずれにおいて
も適切に展開されます。

\subsection{レジストリ}
\label{sec:registry}

Windowsではほとんどすべての設定データはレジストリに保存されます。レジストリには数個の
ルートの下に階層的に構成されたキーが多数含まれています。簡単に言うと、インストール
プログラムにとって最も重要なものは\var{HKEY\_CURRENT\_USER}と\var{HKEY\_LOCAL\_MACHINE}%
（略称は\var{HKCU}と\var{HKLM}）です。レジストリのキー\var{HKCU}はユーザのホーム
ディレクトリ内を参照します（\ref{sec:winhome}節を参照）。\var{HKLM}は通常Windows%
ディレクトリ内のサブディレクトリです。

一部の項目については環境変数によってシステム情報を引き渡すことができますが、ショート
カットの位置などはレジストリを変更しないことには設定を反映することができません。また
環境変数の値を恒久的に変更するのにもレジストリを編集する必要があります。

\subsection{パーミッション}
\label{sec:winpermissions}

最近のバージョンのWindowsでは、管理者のみにOSのほぼ全体へのアクセス権があり、一般
ユーザにはありません。\TL は管理者権限がなくてもインストール可能なように工夫されて
います。

管理者権限でインストーラが実行されているときは、全ユーザ向けにインストールを行うため
のオプションが利用可能です。このオプションを選択した場合、全ユーザ向けにショートカット
が作成され、またシステムの検索パスも変更されます。逆に、このオプションを選択しなかった
場合はシュートカットとメニュー項目はインストーラを実行したユーザ向けにのみ作成され、
そのユーザの検索パスだけが更新されます。

管理者として実行するか否かにかかわらず、インストーラは常にデフォルトの\TL ルートを
\winenv{System\-Drive}以下に設定します。インストーラは、必ず設定しようとしているルート
位置が現在の実行権限で書き込み可能かどうか確認します。

検索パスに\TeX が存在する状態で、一般ユーザとして\TL のインストールを実行しようとする
と問題が発生します。システムの検索パスはユーザの検索パスよりも優先されるので、この
状況で\TL をインストールしても優先的に利用されることはありません。フォールバック
として、インストーラは新しくインストールされた\TL バイナリのディレクトリがローカル
検索パスの先頭にくるようコマンドプロンプトにショートカットを作成します。そのため、
このフォールバックが有効なコマンドプロンプトからは常に新しい\TL が利用可能です。
\TeX worksがインストールされている場合、その検索パスについても\TL が先頭にくるよう
設定されるため、同様に検索パスの問題は回避されるはずです。

Windowsでは管理者アカウントにログインしていても、明示的に管理者権限としての実行を指示
する必要があることに注意してください。実際のところ、管理者アカウントにログインする
だけではあまり意味がありません。肝心なのは、プログラムやショートカットを右クリックし
「管理者として実行」を選択することです。

\subsection{WindowsとCygwinでメモリ上限を増やす方法}
\label{sec:cygwin-maxmem}

WindowsとCygwin（Cygwinインストールの詳細については\ref{sec:cygwin}節を参照してくだ
さい）では、\TL に含まれるいくつかのプログラムがメモリを使い果たす場合があります。
例えば\prog{asy}で2,500万要素の実数配列を確保しようとしたり、\LuaTeX で多書体組を
行おうとしたりするとメモリが不足する可能性があります。

Cygwinではユーザマニュアル（\url{https://cygwin.com/cygwin-ug-net/setup-maxmem.%
html}）の説明に従うことによってメモリ上限を増やすことができます。

Windowsの場合はいくつかの手順を行う必要があります。まず\code{moremem.reg}という
ファイルに以下の内容を書き込みます：
%
\begin{sverbatim}
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Cygwin]
"heap_chunk_in_mb"=dword:ffffff00
\end{sverbatim}
%
その上で、管理者権限で\code{regedit /s moremem.reg}を実行してください。（もし
システム全体ではなく、現在利用中のユーザのみについてメモリ上限を変更したい場合は
\var{HKEY\_CURRENT\_USER}を使用してください。）

\section{Web2Cユーザガイド}

\Webc は\TeX 関連プログラムのコレクションです。これにはオリジナルの\TeX そのものに
加えて\MF, \MP, \BibTeX などが含まれており、\TL の心臓部と言えます。最新版のマニュアル
やその他の情報はウェブサイト（\url{https://tug.org/web2c}）に掲載されています。

少し\Webc の歴史的経緯について触れておきます。\Webc のオリジナル作者はTomas Rokickiで
1987年に最初の\TeX -to-Cシステムを開発しました。このシステムはHoward TrickeyとPavel
CurtisによるUnix系システム下のchangefileをベースにしていました。その後Tim Morganがこの
システムのメンテナとなり、その期間システムはWeb-to-Cと呼ばれていました。1990年に
Karl Berryが多くの協力者の助けを得ながらメンテナンスを引き継ぎました。1997年に
Olaf Weberがメンテナになりましたが、2006年には再びKarl Berryの管理下に戻りました。

\Webc システムはUnix系、Windows、macOSなどのOSで動作します。このシステムでは
Knuthによる\TeX のオリジナルソースと、文芸的プログラミングシステム\WEB で書かれた
いくつかの基本的なプログラムを使用し、それらをC言語ソースコードに変換します。このような
方法で管理されている\TeX 関連のプログラムは以下の通りです：
%
\begin{cmddescription}
\item[bibtex] 参考文献の管理
\item[dvicopy] DVIファイルで参照されている仮想フォントの展開
\item[dvitomp] DVIをMPX（\MP 画像）に変換
\item[dvitype] DVIを可読テキストに変換
\item[gftodvi] Generic fonts（GF）の見本（DVI）作成
\item[gftopk] GFをpacked fonts（PK）に変換
\item[gftype] GFを可読テキストに変換
\item[mf] フォントファミリの作成
\item[mft] \MF ソースを\TeX ファイルに変換
\item[mpost] 図形描画
\item[patgen] ハイフンパターンを作成
\item[pktogf] PKをGFに変換
\item[pktype] PKを可読テキストに変換
\item[pltotf] プレーンテキストのプロパティリストをTFMに変換
\item[pooltype] \WEB プールファイルを表示
\item[tangle] \WEB をPascalに変換
\item[tex] 組版システム
\item[tftopl] TFMをプレーンテキストのプロパティリストに変換
\item[vftovp] 仮想フォントを仮想プロパティリストに変換
\item[vptovf] 仮想プロパティリストを仮想フォントに変換
\item[weave] \WEB を\TeX ファイルに変換
\end{cmddescription}
%
各プログラムの正確な機能やシンタックスについては、それぞれのマニュアルや\Webc 自体の
ドキュメントに記載されています。しかしながら、すべてのプログラムに共通するいくつかの
基本事項を押さえておくと\Webc をインストールする際に役立ちます。

\Webc に含まれるすべてのプログラムは、以下の標準的なGNUオプションをサポートして
います：
%
\begin{description}
\item[\lopt{help}] 基本的な使用法を表示
\item[\lopt{version}] バージョン情報を表示して終了
\end{description}
%
さらに、ほとんどが以下のオプションもサポートしています：
%
\begin{description}
\item[\lopt{verbose}] より詳細な実行メッセージを表示
\end{description}

\Webc プログラムはファイル探索に\KPS ライブラリ（\url{https://tug.org/kpathsea}）を
使用します。このライブラリは環境変数と設定ファイルの両方を参照して膨大な量の\TeX
関連ファイルの検索を最適化します。\Webc は多くのTEXMFツリーを同時に参照でき、この
ことがTDSを維持したままローカルシステム全体またはユーザごとの拡張を異なるツリーに
分離するのに役立ちます。ファイル検索を高速化するため、各ツリーのルートには配下に
あるすべてのファイルの名前と相対位置を列挙した\file{ls-R}ファイルが置かれています。

\subsection{Kpathseaパス検索}
\label{sec:kpathsea}

まずはじめに、\KPS ライブラリによるパス検索の一般的なメカニズムを紹介します。

\emph{パス要素}（基本的にはディレクトリ名）をコロンまたはセミコロン区切りで並べた
リストを\emph{検索パス}と呼びます。検索パスはさまざまな場所で設定可能です。例えば、
\samp{my-file}を検索パス\samp{.:/dir}から見つける場合、\KPS は各パス要素を順番に
確認します。この場合、まず\file{./my-file}を確認し、次に\file{/dir/my-file}を確認
して最初にみつけたもの（状況によっては、見つけたものすべて）を返します。

あらゆるOSに適切に対応するため、非Unix系システムにおいては\KPS はコロン（\samp{:}）と
スラッシュ（\samp{/}）以外の記号をファイル名の区切り文字として扱うことができます。

特定のパス要素$p$を確認する際、\KPS はまず利用可能なファイル名データベース（\ref{%
sec:filename-database}節）が$p$について用意されているかを調べます。すなわち、$p$の
プレフィックスにあたるディレクトリにデータベースがあるかを調べ、もし存在していた
場合はその内容に基づいて検索マッチングを行います。

最もシンプルでよくあるパス要素はディレクトリ名ですが、\KPS はそれ以外の機能として
階層的なビルトイン値、環境変数名、設定ファイルの値、ユーザのホームディレクトリ、
そしてサブディレクトリの再帰的な検索などをサポートしています。すなわち、\KPS はパス
要素を種々の指定に従って通常のディレクトリ名に\emph{展開}します。これ以降、この
展開について実際に処理が行われる順番で説明していきます。

ところで、ファイル名が絶対パスもしくは明示的な相対パス（すなわち\samp{/}、\samp{%
./}、\samp{../}のいずれかから始まるもの）で検索された場合は\KPS は、単純にそのパス
位置にファイルがあるか否かを確認します。

\subsubsection{パスの設定元}
\label{sec:path-sources}

検索パスは設定ファイルや環境変数など、さまざまな場所で設定することができます。ここに
すべての設定元を\KPS が使用する順番に列挙しておきます：
%
\begin{enumerate}
\item ユーザが設定している\code{TEXINPUTS}などの環境変数。なお\samp{\meta{変数名}.%
  \meta{プログラム名}}という形の環境変数は、環境変数\samp{\meta{変数名}}を上書き
  します。例えば\samp{latex}が実行中のプログラム名である場合、\code{TEXINPUTS.latex}%
  は\code{TEXINPUTS}を上書きします。
\item プログラムごとの設定ファイル。例えば\prog{dvips}の設定ファイル\file{config.ps}%
  内にある\samp{S /a:/b}のような記述が反映されます。
\item \KPS の設定ファイル\file{texmf.cnf}。\samp{TEXINPUTS=/c:/d}のような設定が並んで
  います。
\item コンパイル時のデフォルト設定。
\end{enumerate}
%
それぞれの変数の値が何に設定されているかは、デバッグオプションを使用すると確認する
ことができます（p.\,\pageref{sec:debugging}の「デバッグアクション」項を参照）。

\subsubsection{設定ファイル}
\label{sec:configfiles}

% Note: この段落最後の1文は訳が怪しい
\KPS は\file{texmf.cnf}という名前の実行時設定ファイルを読み込み、検索パスやその他の
設定を行います。この設定ファイルの検索には検索パス\code{TEXMFCNF}が使用されますが、
この変数の内容を変更したりシステムディレクトリを上書きするように環境変数の値を
設定することは推奨されません。

代わりに、通常のインストールを行うと\file{.../2025/texmf.cnf}が生成されます。
どうしてもデフォルト設定を変更する必要が生じた場合は（通常は必要ありません）、この
ファイルに変更を加えてください。メインの設定ファイルは\file{.../2025/texmf-dist/%
web2c/texmf.cnf}です。このファイルを変更してもディストリビューション側でアップデート
があると変更内容が失われてしまうため、ユーザはこのファイルを編集すべきではありません。

余談ですが、もし単に個人用のディレクトリを特定の検索パスに入れたいという場合は環境
変数を設定するのが合理的です：
%
\begin{verbatim}
  TEXINPUTS=.:/my/macro/dir:
\end{verbatim}
%
設定をメンテナンスしやすく、また何年にも亘って使えるようにするためには、すべての
要素を明示的に記入するのではなく、末尾に\samp{:}（Windowsでは\samp{;}）を置いて
システムのパスが挿入されるようにしましょう（\ref{sec:default-expansion}節を参照）。
また、他にも\code{TEXMFHOME}ツリーを利用する方法もあります（\ref{sec:directories}%
節を参照）。

\KPS 検索パスに含まれる\emph{すべて}の\file{texmf.cnf}を読み込み、その内容を反映
します。この際、検索パスのより前方にあるものの設定はより後方にあるものよりも優先
されます。例えば、検索パス\code{.:\$TEXMF}の下で、\file{./texmf.cnf}は\file{$TEXMF/%
texmf.cnf}の内容を上書きします。

\begin{itemize}
\item \code{\%}と\code{\#}はコメント開始文字で、行頭に置くとその行の末尾までコメント
  として扱われます。\code{\%}の前に空白文字があっても同様です。
\item 空行は無視されます。
\item 行末の\code{\bs}は行継続文字としてはたらきます。すなわち、次の行の内容も同じ行
  として扱われます。行頭の連続する空白文字は無視されます。
\item ほかの行は次の形式で記述されます：
%
\begin{alltt}
  \meta{変数名}\optional{.\meta{プログラム名}} \optional{=} \meta{値}
\end{alltt}
%
  なお\samp{=}とその前後の空白は省略可能です（ただし\meta{値}が\samp{.}で始まる場合
  は、ピリオドがプログラム修飾子と解釈されないよう\samp{=}を書いた方が無難です）。
\item \meta{変数名}には空白文字、\samp{=}、\samp{.}以外の任意の文字を含めることが
  できますが\samp{A-Za-z\var{\_}}の範囲に留めておくのが無難です。
\item もし変数名に\samp{.\meta{プログラム名}}が付いている場合は、その変数定義は\meta{%
  プログラム名}または\code{\meta{プログラム名}.exe}という名前のプログラムの実行中のみで
  適用されます。この機能を用いると、例えば\TeX 処理系の種類ごとに異なる検索パスを適用
  することができます。
\item 文字列とみなされるため、\var{value}にはあらゆる文字を含めることができます。
  しかし、実際には\file{texmf.cnf}に記述されるほとんどの変数はパス展開に関係し、
  そのパス展開においてはさまざまな特殊文字が使用される（\ref{sec:cnf-special-chars}節
  を参照）ため、ディレクトリ名としてはブレースやコンマを使用することはできません。
  
  また変数中の\samp{;}はUnix系の環境においては\samp{:}に読み替えられます。これは単一の
  \file{texmf.cnf}ファイルでUnix系とWindowsの双方をサポートするための措置です。この
  読み替えは検索パスに限らずすべての変数について適用されますが、幸い\samp{;}は検索
  パス以外の変数には必要のない文字です。
  
  なお\code{\$\var{var}.\var{prog}}という表記は右辺ではサポートされません。代替手段
  として、そのようなことをしたい場合には新しい変数を追加してください。
\item すべての定義は展開される前に読み込まれるので、定義前の変数も右辺に含めることが
  可能です。
\end{itemize}
%
上記の仕様のほとんどを活用した設定ファイルの例を示しておきます：
%
\verbatiminput{texlive-common/examples/ex5.tex}

\subsubsection{パス展開}
\label{sec:path-expansion}

\KPS はUnixシェルと同様にいくつかの特殊文字や検索パスの構造を認識します。一般の
例として、パス\dir{~$USER/{foo,bar}//baz}は\var{\$USER}のホームディレクトリ直下の
ディレクトリ\dir{foo}と\dir{bar}以下にある、\file{baz}という名前のファイルまたは
ディレクトリを含むすべてのサブディレクトリに展開されます。これらのパス展開の詳細
については以下のセクションを参照してください。

\subsubsection{デフォルト展開}
\label{sec:default-expansion}

最も優先度の高い検索パス（\ref{sec:path-sources}節を参照）が先頭、末尾または途中
2連続する形で\emph{追加コロン}を含んでいる場合、\KPS はその位置に（もし定義されて
いれば）次に優先度の高いパスを挿入します。もし挿入される次点の検索パスにも追加
コロンが含まれている場合、さらに次に優先度の高いパスが挿入されていきます。例えば
%
\begin{alltt}
> setenv TEXINPUTS /home/karl:
\end{alltt}
%
のように環境変数が設定されていたとして、\file{texmf.cnf}で設定されている\var{%
TEXINPUTS}の値が
%
\begin{alltt}
  .:\$TEXMF//tex
\end{alltt}
%
のとき、最終的に検索されるパスは次のようになります：
%
\begin{alltt}
  /home/karl:.:\$TEXMF//tex
\end{alltt}
デフォルト値を複数箇所に挿入しても意味がないので、\KPS は追加コロンを1つだけ
デフォルト値に置換し、それ以外はそのままにします。まず先頭にコロンがないか
確認され、続いて末尾コロン、2連続のコロンが順にチェックされます。

\subsubsection{ブレース展開}
\label{sec:brace-expansion}

ブレース展開は便利な機能で、例えば\dir{v{a,b}w}は\code{vaw:vbw}に展開されます。
ネストすることも可能です。この機能は\var{\$TEXMF}にブレースリストを与えることに
より複数の\TeX ヒエラルキーを共存させるのにも利用されています。具体的には、
デフォルトの\file{texmf.cnf}では次のような設定が行われています（この例のために
単純化しています）：
%
\begin{verbatim}
  TEXMF = {$TEXMFVAR,$TEXMFHOME,!!$TEXMFLOCAL,!!$TEXMFDIST}
\end{verbatim}
%
この値は、例えば\TeX の入力パスを定義するのに活用できるでしょう：
%
\begin{verbatim}
  TEXINPUTS = .;$TEXMF/tex//
\end{verbatim}
%
この設定の下では、まずカレントディレクトリがチェックされ、続いて\code{\$TEXMFVAR/%
tex}, \code{\$TEXMFHOME/tex}, \code{\$TEXMFLOCAL/tex}, \code{\$TEXMFDIST/tex}ツリー
が（最後2つについては\file{ls-R}データベースを利用しつつ）検索されることになります。

\subsubsection{サブディレクトリ展開}
\label{sec:subdirectory-expansion}

パス要素内で、2つ以上の連続するスラッシュがディレクトリ名$d$の後ろに置かれている
場合、$d$以下のすべてのサブディレクトリに展開されます。つまり、まず$d$直下のサブ
ディレクトリが並び、続いてさらにそれらのサブディレクトリのサブディレクトリが並び、
以降も再帰的に続きます。各階層でサブディレクトリがどういう順番で検索されるかは
\emph{決まっていません}。

\samp{//}に続いてファイル名の一部を置いた場合、それとマッチするファイルを含む
サブディレクトリのみが展開結果に含められます。例えば\samp{/a//b}は\file{/a/1/b},
\file{/a/2/b}, \file{/a/1/1/b}などに展開されますが、\file{/a/b/c}や\file{/a/1}には
展開されません。

\samp{//}を1つのパスに複数含めることは可能ですが、パスの先頭に置かれた\samp{//}は
無視されます。

\subsubsection{\code{texmf.cnf}で使用できる特殊文字の概要}
\label{sec:cnf-special-chars}

以下のリストに\KPS 設定ファイルで利用できる特殊文字と構造について要約しておきます：
%
\begin{description}
\newcommand{\CODE}[1]{\makebox[3em][l]{\code{#1}}}
\item[\CODE{:}] パスの先頭や末尾に書かれた場合および途中で2つ続けて書かれた場合、
  その部分はデフォルトパスの展開形で置き換えらる
\item[\CODE{;}] 非Unix系システムでの区切り文字（挙動は\code{:}と同様）
\item[\CODE{\$}] 変数展開
\item[\CODE{\string~}] ユーザのホームディレクトリを表す
\item[\CODE{\char`\{...\char`\}}] ブレース展開
\item[\CODE{,}] ブレース内における要素の区切り文字
\item[\CODE{//}] サブディレクトリ展開。先頭を除き、パス中どこでも利用可能
\item[{\makebox[3em][l]{\code{\%}{\normalfont と}\code{\#}}}] コメントの開始
\item[\CODE{\bs}] 行末に置くと、行継続文字としてはたらき複数行入力を可能にする
\item[\CODE{!!}] ファイル名データベースの使用を\emph{強制}
  （ディスク検索を\emph{禁止}）
\end{description}

これらの文字が、正確にどのタイミングで特殊なものとして扱われるのか、あるいは
その文字そのものとして扱われるのかは文脈に依存します。設定解釈の各段階の処理
（パース、展開、検索など）と不可分に結びついているため、残念ながら簡潔に説明する
ことはできません。また、汎用のエスケープ手段も存在していません。特に\samp{\bs}は
\file{texmf.cnf}内においては「エスケープ文字」ではないので注意してください。

インストールを行う際にディレクトリ名を選ぶ際には、すべての特殊文字を含めないよう
にするのが無難です。

\subsection{ファイル名データベース}
\label{sec:filename-database}

\KPS は検索のためのディスクアクセスをある程度軽減する仕組みを持っています。
それでも、標準的な\TL やその他十分な大きさの\TeX インストール構成において、
指定されたファイルについて、それが存在する可能性のあるすべてのディレクトリ
を検索するとかなり長い時間がかかってしまいます。そのため\KPS は\file{ls-R}%
という名前のプレインテキスト「データベース」にファイルとディレクトリの情報
を予め書き込んでおき、過剰なディスクアクセスを回避しています。

また\file{aliases}というもう1つのデータベースファイルを利用すると、\file{%
ls-R}に含まれているファイル名に別名（エイリアス）を付けることができます。

\subsubsection{ファイル名データベース}
\label{sec:ls-R}

上で説明したように、メインのファイル名データベースの名前は\file{ls-R}です。
ファイル名データベースは、検索対象としたい各\TeX ヒエラルキーの最上位階層に
配置することができます（デフォルトでは\code{\$TEXMF}）。\KPS は\code{TEXMF%
DBS}パスに含まれている\file{ls-R}を読み込みます。

\file{ls-R}の生成・更新には、ディストリビューションに含まれる\cmd{mktexlsr}%
コマンドの利用をおすすめします。このコマンドは種々の\cmd{mktex}\dots
スクリプトから呼び出されます。本質的には、このスクリプトは単に
%
\begin{alltt}
cd \var{/your/texmf/root} && \path|\|ls -1LAR ./ >ls-R
\end{alltt}
%
を実行するだけです。なお、このスクリプトはシステムの\cmd{ls}コマンドが正しい
形式で出力を行うことを前提にしています（GNU \cmd{ls}なら問題ありません）。
データベースが常に最新の状態であることを保証するには、\cmd{cron}を利用して
定期的にデータベースを更新するのが簡単でしょう。そうすることによって、例えば
\LaTeX パッケージをインストールしたりアップデートしたりして、新しいファイルが
配置されたとしても自動的にデータベースが更新されることになります。

データベースにファイルが見つからない場合、デフォルトでは\KPS は処理を続行して
ディスク検索を行います。ただし\samp{!!}から開始するパス要素については、データ
ベース\emph{のみ}が検索され、ディスクが検索されることはありません。

\subsubsection{\cmd{kpsewhich}: パス検索用コマンドラインツール}
\label{sec:invoking-kpsewhich}

\cmd{kpsewhich}コマンドはパス検索を行うための独立したツールです。このコマンド
は\cmd{find}コマンドのように利用して\TeX ヒエラルキーの中にあるファイルを探索
するのに便利です（このプログラムはディストリビューションに含まれる\cmd{mktex}%
\dots スクリプトでも多用されています）。
%
\begin{alltt}
> kpsewhich \meta{オプション}\dots{} \meta{ファイル名}\dots{}
\end{alltt}

上記の\meta{オプション}は\samp{\sopt{}}または\samp{\lopt{}}で開始して、曖昧で
ない限りどのような省略の仕方をしても指定可能です。

\KPS はオプションでないすべての引数をファイル名として受け取って、それぞれに
ついて見つかった最初のファイルを返します。特定の名前のファイルをすべて列挙する
オプションはありません（そのような場合はUnixの\cmd{find}コマンドを使用して
ください）。

よく使われるオプションを一覧にしておきます：
%
\begin{description}
\item[\code{\lopt{dpi}=\meta{数値}}]
解像度を\meta{数値}に設定します。このオプションはgeneric fonts（GF）とpacked
fonts（PK）を検索するときにのみ効果を発揮します。\cmd{dvips}に合わせて\sopt{D}%
という省略形も使用できます。デフォルト値は600です。

\item[\code{\lopt{format}=\meta{フォーマット名}}]
検索対象のフォーマットを指定します。デフォルトではフォーマットはファイル名から
推測されます。\MP のサポートファイルや\cmd{dvips}の設定ファイルなど、対応する
（曖昧でない）拡張子がないフォーマットについては、このオプションを用いて明示的
に指定する必要があります。その際\meta{フォーマット名}には\code{tex}や\code{enc
files}などを指定します。具体的なフォーマット名のリストについては\code{kpsewhich
\lopt{help-formats}}を参照してください。

\item[\code{\lopt{mode}=\meta{モード名}}]
モード名を設定します。このオプションもGFおよびPKの検索用です。デフォルト値は
なく、指定しない限りすべてのモードが検索対象になります。

\item[\code{\lopt{must-exist}}]
ディスク検索を含むあらゆる手段を使用して、可能な限りファイル検索を行います。
デフォルトでは、効率重視のため\file{ls-R}データベースのみが検索されます。

\item[\code{\lopt{path}=\meta{パス}}]
ファイル名からパスを推測する代わりに、指定された\meta{パス}（通常通りコロン
区切り）を利用して検索を行います。\samp{//}を含むすべての特殊文字とその展開が
サポートされています。\lopt{path}と\lopt{format}は相容れません。

\item[\code{\lopt{progname}=\meta{プログラム名}}]
プログラム名を設定します。これは\var{.\meta{プログラム名}}接尾辞付きの変数を
介して検索パスに影響を与えます。デフォルトでは\cmd{kpsewhich}です。

\item[\code{\lopt{show-path}=\meta{名前}}]
指定した\meta{名前}と紐づくファイルタイプの検索に用いられるパスを表示します。
\meta{名前}には拡張子（\file{.pk}, \file{.vf}, etc.）またはファイル名を指定する
ことができ、\lopt{format}オプションも併用できます。

\item[\code{\lopt{debug}=\meta{数値}}]
デバッグレベルを\meta{数値}に設定します。
\end{description}

\subsubsection{使用例}
\label{sec:examples-of-use}

このセクションでは\KPS の実行例をいくつか紹介していきます。まずは単純な検索です：
%
\begin{alltt}
> kpsewhich article.cls
   /usr/local/texmf-dist/tex/latex/base/article.cls
\end{alltt}
%
この例では\file{article.cls}を検索しています。拡張子\samp{.cls}には曖昧性がない
ので、わざわざファイルタイプ\code{tex}（\TeX のソースファイル）を指定する必要は
ありません。上の例では、目的のファイルは\dir{texmf-dist} \TL ディレクトリ内の
\dir{tex/latex/base}サブディレクトリの中に見つかりました。同様にして、以下に列挙
する例はいずれも曖昧性のない拡張子のおかげで特に問題なくファイルを見つけることが
できます：
%
\begin{alltt}
> kpsewhich array.sty
   /usr/local/texmf-dist/tex/latex/tools/array.sty
> kpsewhich latin1.def
   /usr/local/texmf-dist/tex/latex/base/latin1.def
> kpsewhich size10.clo
   /usr/local/texmf-dist/tex/latex/base/size10.clo
> kpsewhich small2e.tex
   /usr/local/texmf-dist/tex/latex/base/small2e.tex
> kpsewhich tugboat.bib
   /usr/local/texmf-dist/bibtex/bib/beebe/tugboat.bib
\end{alltt}
%
ところで、最後の例として挙がっているのは\textsl{TUGboat}の記事用の\BibTeX 文献
データベースです。

\begin{alltt}
> kpsewhich cmr10.pk
\end{alltt}
%
拡張子\samp{.pk}をもつ、フォントのビットマップグリフファイルは\prog{dvips}や
\prog{xdvi}などのディスプレイプログラムによって使用されます。Computer Modernの
\samp{.pk}ファイルは通常\TL に含まれていないので（デフォルトではType~1変種が
使用されるため）、上の例では何も出力されません。

\begin{alltt}
> kpsewhich wsuipa10.pk
   /usr/local/texmf-var/fonts/pk/ljfour/public/wsuipa/wsuipa10.600pk
\end{alltt}
%
これらのフォント（ワシントン大学で開発された音声記号）については、まず\samp{%
.pk}ファイルを生成する必要があり、\TL における\MF モードはデフォルトでは解像度
600{\dpi}（dots per inch）設定の\code{ljfour}なので、上のような結果になります。
%
\begin{alltt}
> kpsewhich -dpi=300 wsuipa10.pk
\end{alltt}
%
続いてのケースでは解像度300\dpi を指定（\code{\sopt{-dpi}=300}）していますが、
そのようなフォントファイルは存在しないという結果が得られました。\cmd{dvips}や
\cmd{xdvi}などのプログラムは実行を中断し、\cmd{mktexpk}スクリプトを用いて必要な
\samp{.pk}ファイルを生成することになるでしょう。

次に\cmd{dvips}のヘッダおよび設定ファイルについて考えましょう。2004年以来、汎用
の設定ファイル\file{config.ps}と\PS フォントのマップファイル\file{psfonts.map}%
は独自の検索パスと\dir{texmf}ツリー内での配置場所を持っているので、それらを取り
扱う前に\TeX サポートのための汎用プロローグ\file{tex.pro}の例を示しました。
拡張子\samp{.ps}には曖昧性があるので、\file{config.ps}については該当するファイル
タイプ（\code{dvips config}）を明示的に指定する必要があります。
%
\begin{alltt}
> kpsewhich tex.pro
   /usr/local/texmf/dvips/base/tex.pro
> kpsewhich --format="dvips config" config.ps
   /usr/local/texmf/dvips/config/config.ps
> kpsewhich psfonts.map
   /usr/local/texmf/fonts/map/dvips/updmap/psfonts.map
\end{alltt}

今度はURW Timesの\PS サポートファイルについて考えます。標準的なフォント命名規則
に基づけば、これらのプレフィックスは\samp{utm}です。最初に検索するのはマップ
ファイルの名前を格納している設定ファイルです：
%
\begin{alltt}
> kpsewhich --format="dvips config" config.utm
   /usr/local/texmf-dist/dvips/psnfss/config.utm
\end{alltt}
%
このファイルには
%
\begin{alltt}
  p +utm.map
\end{alltt}
%
という記述があり、\file{utm.map}を参照しているので、続いてこのファイルの位置を
確認してみましょう：
%
\begin{alltt}
> kpsewhich utm.map
   /usr/local/texmf-dist/fonts/map/dvips/times/utm.map
\end{alltt}
%
このマップファイルはURWコレクションに含まれるType~1 \PS フォントのファイル名を
定義しています。ファイルには下記のような記述が並んでいます（以下は抜粋です）：
%
\begin{alltt}
utmb8r  NimbusRomNo9L-Medi    ... <utmb8a.pfb
utmbi8r NimbusRomNo9L-MediItal... <utmbi8a.pfb
utmr8r  NimbusRomNo9L-Regu    ... <utmr8a.pfb
utmri8r NimbusRomNo9L-ReguItal... <utmri8a.pfb
utmbo8r NimbusRomNo9L-Medi    ... <utmb8a.pfb
utmro8r NimbusRomNo9L-Regu    ... <utmr8a.pfb
\end{alltt}
%
例えば、Times Romanを例にとって、\file{texmf}ディレクトリ内における\file{%
utmr8a.pfb}ファイルの位置を検索してみます：
%
\begin{alltt}
> kpsewhich utmr8a.pfb
   /usr/local/texmf-dist/fonts/type1/urw/times/utmr8a.pfb
\end{alltt}

ここまでの例が、いかに簡単に指定したファイルを見つけることができるかを示して
いるはずです。ここで示したテクニックは、何らかの理由で間違ったバージョンの
ファイルが使用されてしまっていると疑われるときに特に役立ちます。\cmd{kpsewhich}%
コマンドを用いれば、どのファイルが一番最初に見つかっているのかを確認することが
できます。

\subsubsection{デバッグアクション}
\label{sec:debugging}

ときとして、あるプログラムがファイル参照をどのように解決しているかについて調査
する必要が生じる場合があります。そのような場合のために、\KPS はさまざまなレベル
のデバッグオプションを提供しています：
%
\begin{description}
\makeatletter
\setbox\z@=\hbox{\code{00}}
\newcommand{\dbgitem}[1]{\item[\code{\hbox to\wd\z@{\hfill #1}}]}
\makeatother

\dbgitem{1}
\code{stat}コマンドによるディスク検索の状況。きちんと更新された\file{ls-R}データ
ベースを使用して検索が行われている場合、このデバッグオプションはほとんど何も出力
しないはずです。

\dbgitem{2}
ハッシュテーブルの参照（\file{ls-R}、マップファイル、設定ファイルなど）。

\dbgitem{4}
ファイルI/O操作。

\dbgitem{8}
各ファイルタイプに適用されるパスの情報。これは特定のファイルに対する検索パスが
どこで定義されているのかを調べるのに役立ちます。

\dbgitem{16}
各パス要素に属するディレクトリの一覧（ディスク検索にのみ関係）。

\dbgitem{32}
ファイル検索。

\dbgitem{64}
変数の値。
\end{description}
%
デバッグレベルを\code{-1}に設定すると上のすべてが有効になります。多くの場合、
実用上はこれが一番便利でしょう。

同様に\cmd{dvips}プログラムでも、デバッグオプションをいくつか組み合わせることで
どこのファイルが読み込まれているか詳細を確認することができます。またファイルが
見つからない場合に、デバッグ出力はプログラムがどこに対してファイル検索を行った
かを示してくれるので、どこに問題があるのかを把握することができます。

一般的に言って、\KPS ライブラリは多くのプログラムから内部的に呼び出されるもの
なので、デバッグオプションは環境変数\var{KPATHSEA\_DEBUG}を上記リストの値
（もしくはそれらの組み合わせ）に設定することによって指定するのがよいでしょう。
\footnote{Windowsユーザ向けの情報：Windowsではすべてのデバッグメッセージを1つの
ファイルにリダイレクトするのは困難です。デバッグの際は、一時的に\code{SET
\var{KPATHSEA\_DEBUG\_OUTPUT}=err.log}などと設定するのがよいでしょう。}

例として、以下のような内容の小さな\LaTeX ソースファイル\file{hello-world.tex}を
考えてみます。
%
\begin{verbatim}
  \documentclass{article}
  \begin{document}
  Hello World!
  \end{document}
\end{verbatim}
%
この小さなファイルは\file{cmr10}フォントのみを使用するのですが、\cmd{dvips}が
どのように\PS ファイルを用意するのか確認してみましょう（ここではComputer Modern%
のType~1バージョンを使用したいので\sopt{Pcms}を指定します）。
%
\begin{alltt}
> dvips -d4100 hello-world -Pcms -o
\end{alltt}
%
上記の例では\cmd{dvips}のデバッグクラス4（フォントパス）と\KPS のパス要素展開を
組み合わせました（\cmd{dvips}のリファレンスマニュアルを参照）。この出力（かなり
いじっていますが）を図\ref{fig:dvipsdbga}に示します。
%
\begin{figure*}[tp]
\centering
\input{texlive-common/examples/ex6a.tex}
\caption{設定ファイルを見つける}
\label{fig:dvipsdbga}
\end{figure*}
%
\cmd{dvips}は起動後、まず作業ファイルを探します。はじめに他のファイルの検索に
用いられる検索パスを定義する\file{texmf.cnf}が見つかり、続いてファイル検索を
最適化するファイル名データベース\file{ls-R}とエイリアスを定義している\file{%
aliases}が見つかります。\cmd{dvips}はさらに汎用の設定ファイル\file{config.ps}%
やカスタマイズ設定を記述する\file{.dvipsrc}を探し出します（上の例では、後者は
``not found''という結果になっています）。最後に\cmd{dvips}はComputer Modernの
\PS フォント用の設定ファイル\file{config.cms}を探します（これは\sopt{Pcms}の
効果です）。このファイルには\TeX 間の関係を定義するマップファイルのリストが
記述されています。
%
\begin{alltt}
> more /usr/local/texmf/dvips/cms/config.cms
   p +ams.map
   p +cms.map
   p +cmbkm.map
   p +amsbkm.map
\end{alltt}
%
\cmd{dvips}はこのようにしてすべてのファイルを見つけ、さらに常に使用されること
になっている汎用マップファイル\file{psfonts.map}も読み込みます（このファイル
ではすべての\PS フォントに共通する定義が行われています。\PS マップファイルの
取り扱いの詳細については\ref{sec:examples-of-use}節の最後の部分を参照して
ください）。

ここにきて、\cmd{dvips}はやっとプログラム自身の情報をユーザに提示します：
%
\begin{alltt}
This is dvips(k) 5.92b Copyright 2002 Radical Eye Software
\end{alltt}
%
その後プロローグファイルが検索されます：
%
\begin{alltt}\small
kdebug:start search(file=texc.pro, must_exist=0, find_all=0,
  path=.:~/tex/dvips//:!!/usr/local/texmf/dvips//:
       ~/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//).
kdebug:search(texc.pro) => /usr/local/texmf/dvips/base/texc.pro
\end{alltt}

以上で必要なファイルが揃ったので、\cmd{dvips}は日付と時刻を出力し、そして
\file{hello-world.ps}というファイルが生成されることを予告します。併せて、
そのファイル生成の際にはフォントファイル\file{cmr10}が必要であることと、その
フォントが``resident''（ビットマップ不要）として扱われる旨が表示されます。
%
\begin{alltt}\small
TeX output 1998.02.26:1204' -> hello-world.ps
Defining font () cmr10 at 10.0pt
Font cmr10 <CMR10> is resident.
\end{alltt}

これでやっと\file{cmr10.tfm}の検索が行われ、それが見つかれば、もういくつかの
プロローグファイルが参照され（出力には出ていません）、最終的にType~1のフォント
実体\file{cmr10.pfb}が出力ファイルに含まれることになります（最終行）。
%
\begin{alltt}\small
kdebug:start search(file=cmr10.tfm, must\_exist=1, find\_all=0,
  path=.:~/tex/fonts/tfm//:!!/usr/local/texmf/fonts/tfm//:
       /var/tex/fonts/tfm//).
kdebug:search(cmr10.tfm) => /usr/local/texmf/fonts/tfm/public/cm/cmr10.tfm
kdebug:start search(file=texps.pro, must\_exist=0, find\_all=0,
   ...
<texps.pro>
kdebug:start search(file=cmr10.pfb, must\_exist=0, find\_all=0,
  path=.:~/tex/dvips//:!!/usr/local/texmf/dvips//:
       ~/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//).
kdebug:search(cmr10.pfb) => /usr/local/texmf/fonts/type1/public/cm/cmr10.pfb
<cmr10.pfb>[1]
\end{alltt}

\subsection{ランタイムオプション}

その他の\Webc の便利な機能として、数々のメモリパラメタ（例えば配列サイズ）
を\KPS が読み込む設定ファイル\file{texmf.cnf}でコントロールできることが挙げられ
ます。メモリ設定は\TL ディストリビューションに含まれる\file{texmf.cnf}のPart 3%
に記述されています。より重要なことは：
%
\begin{description}
\item[\var{main\_memory}]
\TeX, \MF, \MP に使用を許可する合計のメモリ量（ワード数）。これらの設定を反映する
には、値を適用した上でそれぞれのフォーマットを生成する必要があります。例えば、
もし「巨大な」バージョンの\TeX を生成したとして、それを利用するにはフォーマット
ファイル\file{hugetex.fmt}を呼び出す必要があります。
%\KPS が使用するプログラム名を指定する通常の方法を利用して、\var{main\_memory}の
%値は\file{texmf.cnf}から読み出されます。［意味不明。要検証］

\item[\var{extra\_mem\_bot}]
「大きな」\TeX のデータ構造（ボックス、グルー、ブレイクポイントなど）を配置する
ための追加領域。特に\PiCTeX を使用する際に便利です。

\item[\var{font\_mem\_size}]
フォント情報を格納するために使用するメモリ量（ワード数）。これは読み込まれるTFM%
ファイルの合計サイズと概ね一致します。

\item[\var{hash\_extra}]
制御綴を格納するハッシュテーブルのための追加領域。デフォルト値は\code{600000}です。
\end{description}
%
こうしたパラメタの存在は動的な配列・メモリ確保の完全な代替となるものではありません。
しかし、そうした変更を現在の\TeX ソースに対して適用するのは容易でないので、これらの
実行時パラメタの存在はある程度の柔軟性をもたせる実用上の妥協策です。

\subsection{\code{\$TEXMFDOTDIR}}
\label{sec:texmfdotdir}

ここまでさまざまな箇所で、（カレントディレクトリを最初に検索するようにするため）
ドット\samp{.}から始まる検索パスを紹介してきました：
%
\begin{alltt}\small
TEXINPUTS=.;$TEXMF/tex//
\end{alltt}
%
実は、これは単純化した表記です。\TL が提供している実際の\file{texmf.cnf}では
単に\samp{.}と書く代わりに\code{\$TEXMFDOTDIR}を使用しています：
%
\begin{alltt}\small
TEXINPUTS=$TEXMFDOTDIR;$TEXMF/tex//
\end{alltt}
%
（実際のファイルでは、2つ目のパス要素も\code{\$TEXMF/tex//}よりは少し複雑
です。とはいえ、それは些末なことなので、ここでは\code{\$TEXMFDOTDIR}の話に
注目してください。）

パス定義において、単に\samp{.}と書く代わりに\code{\$TEXMFDOTDIR}を使用する
理由は、単純にその値を上書きできるメリットがあるからです。例えば、複雑な
ドキュメントは数多くのソースファイルが、多くのサブディレクトリにまたがって
配置されている場合があります。そのような場合、\var{TEXMFDOTDIR}の値を
\code{.//}に（例えば、そのドキュメントをビルドする環境で）設定するだけで、
サブディレクトリのすべてが検索されるようになります。（警告：\code{.//}を
デフォルトの設定にはしないでください。そうした設定は極めて好ましくなく、
任意のドキュメントについてすべてのサブディレクトリを検索するようにする
ことには潜在的なセキュリティ上の問題があります。）

また別のケースでは、カレントディレクトリを一切検索したくないという場合も
考えられます。それは例えば、すべてのファイルを明示的なパスで記述している
ような状況で起こり得ます。そのような場合、\var{TEXMFDOTDIR}の値は\code{%
/nonesuch}や任意の存在しないディレクトリに設定しておくとよいでしょう。

\code{\$TEXMFDOTDIR}のデフォルト値は、\TL の\file{texmf.cnf}に定義されて
いるように単に\samp{.}です。

\section{謝辞}

\TL は事実上すべての\TeX ユーザ会の貢献に支えられています。現在の\TL 監修者はKarl
Berryです。過去から現在に至るまでの、その他の主要な貢献者は以下の通りです
（敬称略）：
%
\begin{itemize}
\item 英語圏、ドイツ、オランダ、ポーランドの\TeX ユーザ会（それぞれTUG, DANTE e.V.,
  NTG, GUST）。技術的・経営的なインフラの提供してくれました。ぜひお近くの\TeX ユーザ
  会に加入してください！（\url{https://tug.org/usergroups.html}を参照）
\item CTANチーム（url{https://ctan.org}）。\TL イメージを配布し、\TL が依存する各種の
  パッケージアップデートを行うための共通基盤の提供をしてくれています。
\item Nelson Beebe。\TL 開発陣に数々のプラットフォームを提供し、彼自身も多くの包括的
  なテストを行ってくれました。また彼の比類なき書誌学的な貢献にも敬意を表します。
\item John Bowman。彼の高度なグラフィックツールAsymptoteを\TL に対応させるため数多く
  の変更を加えてくれました。
\item Peter Breitenlohnerと\eTeX チーム。将来の\TeX のために安定した基盤を構築して
  くれました。特にPeter氏は、長年に渡ってGNU autotools関連のヘルパーとして活躍し、
  ソースコードを最新の状態に保ってくれました。Peter。2015年10月に亡くなりましたが、
  私たちは彼のことを忘れません。
\item Jin-Hwan ChoとすべてのDVIPDFM$x$チームメンバー。素晴らしいドライバを開発し、
  設定周りの諸問題に対する責任ある対応をしてくれました。
\item Thomas Esser。彼の素晴らしい\teTeX パッケージなしには\TL は存在し得ません
  でした。
\item Michel Goossens。この文書のオリジナル版の共著者です。
\item Eitan Gurari。彼の\TeX4htは\TL 公式ドキュメントのHTML版生成に利用されています。
  彼は急な依頼をしても、毎年快く\TeX4htの改善に取り組んでくれました。Eitanは2009年
  6月に若くして亡くなりましたが、私たちは彼のことを忘れません。
\item Hans Hagen。多くのテストを引き受け、彼の\ConTeXt パッケージ（\url{http://%
  pragma-ade.com}）を\TL フレームワークに対応させるとともに、継続的に\TeX 開発に
  協力してくれました。
\item \Thanh, Martin Schr\"oderと\pdfTeX チーム（\url{https://tug.org/applications/%
  pdftex/}）。彼らは\TeX を継続的に拡張してくれています。
\item Hartmut Henkel。\pdfTeX, \LuaTeX をはじめ多くのプロジェクトに顕著な貢献を
  してくれました。
\item 平田俊作。DVIPDFM$x$について多くの新規および継続的な貢献をしてくれました。
\item Taco Hoekwater。\MP と{(Lua)\TeX}（\url{https://luatex.org}）自体に対して大きな
  変更を施したほか、\ConTeXt の\TL 対応や\KPS のマルチスレッド機能、その他数々の貢献
  をしてくれました。
\item Khaled Hosny。\XeTeX, DVIPDFM$x$に加え、アラビア語用のものを含め多くのフォント
  に対して多くの貢献をしてくれました。
\item Pawe{\l} Jackowski。Windows用インストーラ\cmd{tlpm}、Tomasz {\L}uczak氏は\cmd
  {tlpmgui}を開発してくれました。これらのプログラムは過去の\TL で使用されていました。
\item 角藤亮。日本語\TeX 用のW32\TeX, W64\TeX ディストリビューション（\url{%
  http://w32tex.org}）のためにWindowsバイナリを提供し、さらに開発に関わる数々の貢献を
  してくれました。
\item Jonathan Kew。優れた\TeX エンジンである\XeTeX を開発し、時間と労力を割いてその
  処理系を\TL に導入してくれました。彼はさらに初期バージョンの\MacTeX を開発し、我々の
  おすすめするフロントエンドである\TeX worksも開発しました。
\item 北川弘典。($\varepsilon$-)\pTeX のメンテナンスと関連する多くのサポートを担って
  くれました。
\item Dick Koch。\TL チームと友好的かつ緊密に連携しながらMac{\TeX}（\url{https://tug.%
  org/mactex}）のメンテナンスを行ってくれています。
\item Reinhard Kotucha。{\TL} 2008のインフラとインストーラに対する主要な貢献者で、
  さらにWindows研究や\cmd{getnonfreefonts}スクリプトの開発などに多大な努力をして
  くれています。
\item Siep Kroonenberg。彼も{\TL} 2008のインフラとインストーラの（特にWindowsについて）
  主要貢献者で、その新機能について解説するためマニュアルを大幅に改定してくれました。
\item Clerk Ma。エンジンのバグ修正と拡張を行ってくれました。
\item Mojca Miklavec。\ConTeXt 開発の重要な協力者で、多くのバイナリビルドを行い、
  その他にも多くの仕事を行ってくれています。
\item Heiko Oberdiek。\pkg{epstopdf}をはじめ数々のパッケージを開発し、巨大だった
  \pkg{pst-geo}データファイルを圧縮して\TL に含められるようにしてくれました。そして
  何より、彼の\pkg{hyperref}パッケージについての偉業に敬意を表します。
\item Phelype Oleinik。2020年にグループ区切りでの\cs{input}対応を多くのエンジンに
  適用したほか、多くの貢献をしてくれました。
\item Petr Ol\v{s}ak。チェコ・スロバキア関連のプロダクトを統括し、注意深くチェック
  してくれました。
\item 大島利雄。Windows向けDVIビューア\cmd{dviout}を開発してくれました。
\item Manuel P\'egouri\'e-Gonnard。パッケージアップデートとドキュメントの改善に協力
  してくれたほか、\cmd{texdoc}コマンドを開発しました。
\item Fabrice Popineau。はじめて\TL のWindowsサポートを行い、またフランス語
  ドキュメントに貢献してくれました。
\item Norbert Preining。現在の\TL インフラとインストーラの主要開発者で、Frank
  K\"usterと共に\TL のDebianパッケージを用意してくれています。彼は現在も広範に\TL
  に関わるさまざまな仕事を引き受けてくれています。
\item Sebastian Rahtz。\TL の創始者で、長年そのメンテナンスを行っていました。
  彼は2016年3月に亡くなりましたが、私たちは彼のことを忘れません。
\item Luigi Scarso。\MP, \LuaTeX その他のプログラムを継続的に開発してくれています。
\item Andreas Scherer。\TL で用いているCWEB実装である\code{cwebbin}の開発および
  オリジナルCWEBの継続的なメンテナンスを行ってくれました。
\item 田中琢爾。($\varepsilon$-)(u)\pTeX のメンテナンスと関連する多くのサポートを
  担ってくれました。
\item Tomasz Trzeciak。Windowsについて広範な協力をしてくれました。
\item Vladimir Volovich。さまざまなプログラムの\TL への組み込みとメンテナンスの
  ために多くの手伝いをしてくれました。特に\cmd{xindy}の組み込みが実現したのは彼の
  おかげです。
\item Staszek Wawrykiewicz。\TL 全体についての主要なテスターで、ポーランド語に
  関わる多くの貢献（フォントやWindowsインストールなど）をしてくれました。Staszek氏
  は2018年2月に亡くなりましたが、私たちは彼のことを忘れません。
\item Olaf Weber。過去何年にも渡って辛抱強く\Webc のメンテナンスを行ってくれました。
\item Gerben Wierda。初期のmacOSサポートの開発とメンテナンスを行ってくれました。
\item Graham Williams。\TeX カタログの創始者です。
\item Joseph Wright。各種エンジンで同じプリミティブを使用できるようにするため多くの
  貢献をしてくれました。
\item 山下弘展。\pTeX と関連する多くのサポートを担ってくれました。
\end{itemize}

バイナリのビルド担当者：
%
Marc Baudoin (\pkg{amd64-netbsd}, \pkg{i386-netbsd}),
Ken Brown (\pkg{i386-cygwin}, \pkg{x86\_64-cygwin}),
Simon Dales (\pkg{armhf-linux}),
角藤亮 (\pkg{win32}),
Dick Koch (\pkg{universal-darwin}),
Mojca Miklavec (\pkg{x86\_64-darwinlegacy}),
Norbert Preining (\pkg{aarch64-linux},
                  \pkg{armhf-linux},
                  \pkg{i386-freebsd}, \pkg{amd64-freebsd},
                  \pkg{i386-linux}, \pkg{x86\_64-linux},
                  \pkg{i386-solaris}, \pkg{x86\_64-solaris},
                  \pkg{x86\_64-linuxmusl})。
%
\TL のビルドプロセスについては\url{https://tug.org/texlive/build.html}を参照して
ください。

このマニュアルの翻訳者：
%
朝倉卓人（日本語）、
Denis Bitouz\'e、Patrick Bideault（フランス語）、
Carlos Enriquez Figueras（スペイン語）、
Jjgod Jiang、Jinsong Zhao、Yue Wang、Helin Gai（中国語）、
Nikola Le\v{c}i\'c（セルビア語）、
Marco Pallante、Carla Maggi（イタリア語）、
Petr Sojka、Jan Busa（チェコ・スロバキア語）、
Boris Veytsman、Vladimir Lomov（ロシア語）、
Uwe Ziegenhagen（ドイツ語）。
%
\TL のドキュメントウェブページは\url{https://tug.org/texlive/doc.html}です。

もちろん、最も重要な謝辞はDonald Knuthに対して贈られるべきです。まず\TeX を発明
してくれたこと、そしてそれを世界に広めてくれたことについて、深く感謝します。

\section{更新履歴}
\label{sec:history}

\subsection{過去}

最初に議論が始まったのはオランダ\TeX ユーザ会が4All{\TeX} CDをMS-DOSユーザの
ために用意し始めたときのことでした。そのときは、すべてのシステムに向けて1つの
合理的なCDを作成することが望ましいとされました。これは、当時あまりに漠然とした
目標でしたが、結果的には4All{\TeX} CDを完成させたのみならず\TeX ディレクトリ
構造（TDS, \url{https://tug.org/tds}）についての作業チームをTUGに発足させる
ことにつながりました。作業チームはどのようにすれば一貫性があり、管理の容易な
\TeX サポートファイルのコレクションを作成できるか議論を重ねました。TDSについて
の完全な原稿は1995年12月発行の\textsl{TUGboat}に掲載されましたが、かなり早い
段階から望ましい成果物はCD上のモデル構造であることは明らかでした。いま皆さんに
とってお馴染みのディストリビューションは、この作業チームの議論のかなり直接的な
成果と言えます。また4All{\TeX} CDの成功から、同様の簡単なシステムを作れば
Unix系システムのユーザも恩恵に与ることができることも明らかで、この事実も\TL
にもう1つの大きな流れを作りました。

私たちは、1995年の秋にまずUnix系のTDS CDの開発に取り掛かり、すぐに
Thomas Esserの\teTeX が理想的なディストリビューションであることがわかりました。
\teTeX はすでに複数のプラットフォームをサポートしており、さまざまなファイル
システムに対応するように設計されていました。Thomas氏の協力を得て活動は1996年の
はじめに本格化し、最初のバージョンが1996年の5月にリリースされました。1997年の
頭にKarl Berryが大規模な修正を加えた新しいバージョンの\Webc をリリースし、
Thomas氏が\teTeX に加えていたほとんどすべての機能が利用可能になりました。この
\Webc に\teTeX の\cmd{texconfig}スクリプトを加えたものはバージョン2のベースに
採用されることが決まりました。バージョン3はOlaf Weberによってさらに大きく修正
された{\Webc} 7.2をベースにしました。同時に、新しいバージョンの\teTeX も開発
され、\TL もすぐにそのほとんどの新機能を取り込みました。バージョン4も同じ
パターンでのリリースとなり、新しい\teTeX と新しい{\Webc} 7.3 を利用して作成
されました。Fabrice Popineauの貢献もあり、この時点までに\TL は完全なWindows%
サポートを完成させていました。

バージョン5（2000年3月）では多くの部分が改修・チェックされ、何百ものパッケージ
がアップデートされました。パッケージの詳細はXMLファイルに保存されるようになり
ました。一方で{\TL} 5における大きな変更として、すべての有償ソフトウェアは取り
除かれました。このときから\TL に含まれるすべてのものはDebianフリーソフトウェア
ガイドライン（\url{https://www.debian.org/intro/free}）互換であることが求め
られるようになりました。私たちはすべてのパッケージのライセンスを確認するよう
最善を尽くしましたが、もし何か間違いがあればご連絡ください。

バージョン6（2001年7月）にはさらに多くのパッケージアップデートが取り込まれ
ました。このバージョンで最大の更新点はインストールについての新しい選択肢です。
ユーザはより詳細に必要とするコレクションを選択できるようになりました。特定の
言語と関連するコレクションが大きく見直され、そうしたコレクションを選択すれば
対応するマクロやフォントがインストールされるだけでなく、適切な\file{language.%
dat}も用意されるようになりました。

2002年のバージョン7での大きな変更としてはMac OS Xサポートの追加と、例年通り
無数のパッケージやプログラムのアップデートが挙げられます。このときの大きな
目標はソースコードを\teTeX のそれと統合し、バージョン5, 6間の不整合を修正する
ことでした。

\subsubsection{2003}

2003年も例年通り数多くのアップデートと追加パッケージがあり\TL は巨大化して
もはや1枚のCDに収まらないことがわかりました。そのため、私たちはこれを3つの
異なるディストリビューションに分離しました（\ref{sec:tl-coll-dists}節（\p.%
\pageref{sec:tl-coll-dists}）を参照）。その他の変更点：
%
\begin{itemize}
\item \LaTeX チームからのリクエストを受けて、標準設定における\cmd{latex},
  \cmd{pdflatex}コマンドが\eTeX エンジンを使用するように変更
  （\p.\pageref{text:etex}参照）
\item 新しいLatin Modernフォントを追加（そして推奨）
\item Alpha OSFのサポートを終了（HPUXのサポートは既に終了していました）。
  これは新しいバイナリをコンパイルするためのハードウェアを誰も所有して
  いなかった（そして新しい有志も現れなかった）ためです。
\item Windowsサポートの大きな変更。XEmacsベースの統合環境が始めて導入され
  ました。
\item Windows向けの重要な追加プログラム（Perl, Ghost\-script, Image\-Magic,
  Ispell）が\TL のディレクトリにインストールされるようになりました。
\item \cmd{dvips}, \cmd{dvipdfm}, \cmd{pdftex}などによって使用されるフォント
  マップファイルが新しい\cmd{updmap}によって生成され、\dir{texmf/fonts/map}%
  に配置されるようになりました。
\item \TeX, \MF, \MP がデフォルトでほとんどの入力文字（文字コード32以上）
  をそのままファイル（例えば\cs{write}の出力先）、ログファイル、ターミナルに
  出力するようになりました。すなわち\code{\symbol{`\^}\symbol{`\^}}表現への
  変換が\emph{行われないように}なりました。\TL~7では、この変換はシステムの
  ロケール設定に依存していました。今後はロケール設定は\TeX のコアプログラム
  の挙動に影響を与えなくなります。もし何らかの理由により\code{\symbol{`\^}%
  \symbol{`\^}}表現による出力が必要な場合は\file{texmf/web2c/cp8bit.tcx}の
  ファイル名を変更してください。
  （将来的にはもう少し簡単な方法を用意する予定です。）
\item このドキュメントを全面的に改訂しました。
\item 最後に、バージョン番号が大きくなってきたので、今後は単にリリース年で
  表すことにしました。すなわち今回のバージョンは{\TL} 2003となります。
\end{itemize}

\subsubsection{2004}

2004年には数多くの更新がありました：
%
\begin{itemize}
\item ローカルにインストールしたフォントで、独自の\file{.map}や（あまりない
と思いますが）\file{.enc}を利用するものがある場合、それらのサポートファイル
を移動する必要があります。

\file{.map}ファイルについては\var{TEXFONTMAPS}パスに含まれる（各TEXMFツリー
の）\dir{fonts/map}以下のサブディレクトリのみが検索されるようになりました。
同様に\file{.enc}ファイルについても\var{ENCFONTS}パスに含まれる\dir{fonts/%
enc}以下のサブディレクトリのみが検索対象になりました。しばらくの間は\cmd{%
updmap}コマンドが将来的に問題となり得るファイルについて警告を出します。

より詳細な対策その他の情報については\url{https://tug.org/texlive/mapenc.html}%
を参照してください。

\item \TeX コレクションに\MIKTEX ベースのインストールCDが追加されました。
\MIKTEX 実装の\Webc がお好みの場合はそちらをお使いください。詳細は\ref{sec:%
overview-tl}節（\p.\pageref{sec:overview-tl}）を参照。

\item 従前のリリースにおいて、\TL における唯一の巨大なTEXMFツリーであった\dir
{texmf}を\dir{texmf}, \dir{texmf-dist}, \dir{texmf-doc}の3つに分割しました。
詳細は\ref{sec:tld}節（\p.\pageref{sec:tld}）と各ツリーの\file{README}を参照
してください。

\item すべての\TeX 関連の入力ファイルを各\dir{texmf*}ツリーの\dir{tex}サブ
ディレクトリに集約しました（これまでは\dir{tex}, \dir{etex}, \dir{pdftex},
\dir{pdfetex}等々に分けられていました）。詳細は\file{texmf-dist/doc/generic/%
tds/tds.html#Extensions}を参照してください。

\item （ユーザによって直接実行するためのものではない）補助スクリプトを各\dir
{texmf*}ツリーの\dir{scripts}サブディレクトリに移動し、\code{kpsewhich\space
\lopt{format=texmfscripts}}で探せるようにしました。こうした補助スクリプトを
呼び出すプログラムについては改修の必要があります。詳細は\url{https://tug.org/%
tds/tds.html\#Scripts}を参照してください。

\item \file{cp227.tcx}の設定により、ほとんどすべてのフォーマットで大半の文字を
\code{\symbol{`\^}\symbol{`\^}}表現へ変換することなくそのまま出力するように
なりました。特に文字コード32--256の文字とタブ、垂直タブ、改ページは印字可能文字
として扱い変換されません。例外はplain \TeX （32--126のみ印字可能）、\ConTeXt
（0--256を印字可能）と\OMEGA 関連フォーマットです。デフォルトの挙動は{\TL}
2003とほとんど変わりませんが、実装が整理されカスタマイズも容易になりました。
詳細は\file{texmf-dist/doc/web2c/web2c.html#TCX-files}を確認してください。
（ところでUnicode入力については\TeX はエラーを表示して部分的な文字シークエンス
を出力する可能性があります。これは\TeX がバイト指向であるためです。）

\item \prog{pdfetex}が（plain）\prog{tex} を除くすべてのフォーマットのデフォルト
エンジンになりました（もちろん、\prog{latex}等で実行された場合はDVIを出力します
）。つまり、\eTeX 拡張（\dir{texmf-dist/doc/etex/base/}）に加えて\pdfTeX  の
microtypography機能も\LaTeX や\ConTeXt で利用可能になります。

\item この変更は\pkg{ifpdf}（plain \TeX でも\LaTeX でも使用可）または同等のコード
の利用が\emph{これまで以上に重要となった}ということを意味します。なぜなら単純に
\cs{pdfoutput}（または他のプリミティブ）が定義されているかどうかを調べるだけでは
PDF出力が行われているかどうかを判定できなくなったからです。この後方互換性について
今年のリリースでは可能な限り対処しましたが、来年以降はDVI出力を行っているときで
あっても\cs{pdfoutput}が定義されている可能性があります。

\item {\pdfTeX}（\url{https://tug.org/applications/pdftex/}）には多くの新機能が
追加されました：
\begin{itemize}
\item \cs{pdfmapfile}と\cs{pdfmapline}がドキュメント内からのフォントマップ
アクセスをサポートします。
\item Microtypographicフォント展開がより簡単に利用できるようになりました。\\
\url{https://www.ntg.nl/pipermail/ntg-pdftex/2004-May/000504.html}
\item 従来は専用の設定ファイル\file{pdftex.cfg}で設定していたパラメタは、今後
プリミティブを用いて設定されなければなりません。具体的には\file{pdftexconfig.%
tex}で設定されています。\file{pdftex.cfg}はもはやサポートされません。\file{%
pdftexconfig.tex}が変更された場合、すべての\file{.fmt}ファイルを再生成する必要
があります。
\item その他の更新点については\pdfTeX のマニュアルを参照してください：
\file{texmf-dist/doc/pdftex/manual/pdftex-a.pdf}
\end{itemize}

\item \prog{tex}（および\prog{mf}と\prog{mpost}）の\cs{input}プリミティブが
ダブルクオートで囲うことによって空白やその他の特殊文字を含む入力を受け付ける
ようになりました。典型的な使用例：
%
\begin{verbatim}
\input "filename with spaces"   % plain
\input{"filename with spaces"}  % latex
\end{verbatim}
%
詳細については\Webc のマニュアルを参照してください\dir{texmf-dist/doc/web2c}。

\item \Webc にenc\TeX サポートが追加され、この機能は結果的にすべての\TeX
プログラムで\sopt{enc}オプションを通して利用可能になりました（\emph{ただし
フォーマットが生成されている場合に限る}）。enc\TeX は入出力の再エンコーディング
について汎用的なサポートを提供するもので、Unicode（UTF-8形式による）のフル
サポートを可能としています。詳細については\dir{texmf-dist/doc/generic/enctex/}%
と\url{http://olsak.net/enctex.html}を参照してください。

\item \eTeX と\OMEGA を組み合わせた新エンジン\ALEPH が利用可能になりました。
\dir{texmf-dist/doc/aleph/base}と\url{https://texfaq.org/FAQ-enginedev}に
いくらかの情報があります。\ALEPH における\LaTeX ベースのフォーマットは
\prog{lamed}といいます。

\item 最新の\LaTeX は新しいバージョンのLPPLの下でインストールされました。これで
公式にDebian公認のライセンスになりました。他のアップデートについての情報と合わせて
\dir{texmf-dist/doc/latex/base}の\file{ltnews}ファイルに詳細が記載されています。

\item DVIをPNG画像ファイルに変換する新しいプログラム\prog{dvipng}が追加され
ました。\url{https://ctan.org/pkg/dvipng}を参照。

\item mediumサイズのフォント向けに\pkg{cbgreek}パッケージを導入しました。これは
フォント作者（Claudio Beccari）の同意と助言に基づくものです。除外されているフォント
は不可視・アウトライン・透過文字です。これらは比較的使用頻度の低いもので、私たち
は容量を気にする必要がありました。フルセットのフォントはもちろんCTANから入手
できます（\url{http://mirror.ctan.org/tex-archive/fonts/greek/cbfonts}）。

\item \prog{oxdvi}は廃止されました。\prog{xdvi}を使用してください。

\item \cmd{initex}など\cmd{tex}, \cmd{mf}, \cmd{mpost}の\cmd{ini}, \cmd{vir}版
コマンド（リンク）は作成されなくなりました。\cmd{ini}の機能は何年も前からコマンド
ラインオプション\sopt{ini}を通して利用可能です。

\item \pkg{i386-openbsd}プラットフォームのサポートは廃止されました。BSDポート
システム向けの\pkg{tetex}パッケージとGNU/LinuxおよびFreeBSDバイナリが利用可能
なので、ビルド担当のボランティアは他のことに時間と労力を割いた方が良いようです。

\item （少なくとも）\pkg{sparc-solaris}においては\prog{t1utils}を実行する際には
環境変数\var{LD\_LIBRARY\_PATH}を設定する必要があります。なぜなら、このプログラム
はC++によってコンパイルされていますが、それらについて実行時ライブラリの標準的な
配置位置が存在しないためです（これは今に始まったことではありませんが、これまで
ドキュメント化されていませんでした）。同様に\pkg{mips-irix}においても、MIPSpro~%
7.4ランタイムが必要です。
\end{itemize}

\subsubsection{2005}

2005年も例年通り膨大なパッケージとプログラムのアップデートがありました。前年と
比べるとインフラは安定していますが、必然的にいくつかの変更はありました：
%
\begin{itemize}
\item システムツリーの設定を変更する新しいスクリプト\cmd{texconfig-sys}, \cmd{%
updmap-sys}, \cmd{fmtutil-sys}が導入されました。\cmd{texconfig}, \cmd{updmap},
\cmd{fmtutil}スクリプトは\dir{$HOME/.texlive2005}以下のユーザ設定を変更するよう
になりました。

\item 上の変更に対応して、設定ファイルを探すべきTEXMFツリーを指定する新しい環境
変数\var{TEXMFCONFIG}と\var{TEXMFSYSCONFIG}（それぞれユーザ用とシステム用）が
追加されました。したがって個人用の\file{fmtutil.cnf}や\file{updmap.cfg}がある
場合は、これらのパス内に移動する必要があります。もしくは\file{texmf.cnf}を用いて
\var{TEXMFCONFIG}, \var{TEXMFSYSCONFIG}の値を再定義する手もあります。いずれに
しても、実際の設定ファイル位置と\var{TEXMFCONFIG}, \var{TEXMFSYSCONFIG}の指す
位置は必ず一致していなければなりません。詳細は\ref{sec:texmftrees}節（\p.%
\pageref{sec:texmftrees}）を参照してください。

\item 昨年は\pdfTeX が使用されていたとしても、DVI出力を行う場合には\cs{%
pdfoutput}等のプリミティブが未定義になるよう後方互換性を維持していました。
今年は、予告していたとおり、この後方互換性に対するケアは終了します。そのため
もし\code{\cs{ifx}\cs{pdfoutput}\cs{undefined}}のようなコードを利用してPDF出力
か否かを判定している場合、修正が必要になります。この場合\pkg{ifpdf}パッケージ
（plain \TeX でも\LaTeX でも使用可能です）を使用するか、そのしくみを真似する
のがいいでしょう。

\item 昨年、ほとんどのフォーマットで出力文字（8-bit）がそのまま維持されるよう
になりました（前のセクションを参照してください）。新しいTCXファイル\file{%
empty.tcx}を用いてより簡単に\code{\symbol{`\^}\symbol{`\^}}表現を利用する
かつての挙動に戻せるようになりました：
%
\begin{verbatim}
latex --translate-file=empty.tcx yourfile.tex
\end{verbatim}

\item DVIをPDFに変換するため、新しく\prog{dvipdfmx}プログラムが追加され
ました。これは活発にメンテナンスされている\prog{dvipdfm}の後継です
（\prog{dvipdfm}は今でも利用可能ですが、推奨はされません）。

\item Adobe Acrobat Readerを再起動することなくPDFのリロードを可能にする
\prog{pdfopen}と\prog{pdfclose}が追加されました（\prog{xpdf}, \prog{gv},
\prog{gsview}などAcrobat以外のPDFリーダにはそもそもこのような問題はあり
ませんでした）。

\item 一貫性のため\var{HOMETEXMF}と\var{VARTEXMF}はそれぞれ\var{TEXMFHOME}%
と\var{TEXMFSYSVAR}に変更されました。ユーザごとのツリーを示す\var{TEXMFVAR}%
もデフォルトで存在していることに注意してください。このリストの最初の項目も
再度確認してください。
\end{itemize}

\subsubsection{2006--2007}

2006--2007年における\TL への大きな出来事は\XeTeX の追加でした。このプログラム
は\cmd{xetex}と\cmd{xelatex}として利用可能です（\url{https://scripts.sil.org/%
xetex}参照）。

{\pdfTeX}（\url{https://tug.org/applications/pdftex}）と同様に、\MP にも将来的
な拡張の計画も含めて特筆すべきアップデートがありました \url{https://tug.org/%
metapost/articles}。

\TeX の\file{.fmt}（高速フォーマット）と\MP, \MF 用の同等ファイルは\dir{%
texmf/web2c}直下から同サブディレクトリに移されました（一方で\dir{texmf/web2c}%
直下も既存の\file{.fmt}ファイルのために検索対象に残っています）。それらのサブ
ディレクトリにはそれぞれのエンジン名（\dir{tex}, \dir{pdftex}, \dir{xetex}等）
が付けられています。通常の使い方をしている限り、この変更による影響はないはず
です。

（plain）\cmd{tex}コマンドは先頭行の\code{\%\&}（使用フォーマットの指定に使用
する）を解釈しなくなりました。\cmd{tex}コマンドは純粋なKnuthian \TeX です。
（\LaTeX など他のコマンドは今後も\code{\%\&}を解釈します。）

当然のことながら、この期間にも（いつも通り）上記以外に何百ものパッケージや
プログラムのアップデートがありました。平常通り、それらについてはCTAN（\url{%
https://ctan.org}）を確認してください。

内部的には、ソースツリーをSubversionで管理するようになり、その標準Webインター
フェースでソースツリーを閲覧できるようになりました（\TL のウェブサイトから
リンクされています）。この変更は最終的な配布版には関係ありませんが、この変更
によって今後の開発基盤が安定すると期待しています。

最後に、2006年5月にThomas Esserが\teTeX の更新を終了することを発表しました
（\url{https://tug.org/tetex}）。結果として、特にGNU/Linuxのディストリビュータ
から、にわかに\TL が注目されることになりました。\TL には新しく\pkg{tetex}%
スキームが追加され、これを用いると旧来の\teTeX と概ね同等のものをインストール
することができます。私たちは、早晩この変化が全世界の人々の\TeX 環境の改善に
つながることを願っています。

\subsubsection{2008}

今年は\TL のインフラが全面的に再設計・再実装されました。インストールについて
の完全な情報は\file{tlpkg/texlive.tlpdb}というテキストファイルに保存される
ようになりました。インフラ刷新による変化は色々ありますが、これによって一度
インストールした\TL をインターネットを利用してアップグレードできるようになり
ました。この機能は\MIKTEX には何年も前からあったものです。今後はCTANで新しい
パッケージがリリースされる度にアップデートを行うことができるはずです。

大きな出来事として、新しいエンジン{\LuaTeX}（\url{https://luatex.org}）が追加
されました。このエンジンは組版にさらなる柔軟性を与えるだけでなく、\TeX 文書の
内外で利用できる素晴らしいスクリプト言語の処理系を提供してくれます。

WindowsとUnix系プラットフォームのサポートがより統一的になりました。具体的
には、\TL に同梱されるようになった処理系によってWindowsでもPerlスクリプトと
Luaスクリプトが利用可能になりました。

新しい\prog{tlmgr}スクリプトは（\ref{sec:tlmgr}節）は\TL の初期インストール
後の管理を行う汎用インターフェースです。このコマンドはパッケージアップデート
と継続的なフォーマット・マップファイル・言語ファイル等の再生成を行います
（オプションで、ローカルに追加されたものについても行います）。\prog{tlmgr}が
開発されたので、これまでフォーマットやハイフネーション設定ファイルを管理して
いた\prog{texconfig}は廃止されました。

また新しい索引作成支援プログラム\prog{xindy}（\url{http://xindy.sourceforge.%
net/}）がほとんどのプラットフォーム向けに提供されるようになりました。

\cmd{kpsewhich}コマンドは与えられたファイルについて、すべてのマッチを返す
ことができるようになりました（オプション\lopt{all}）。特定のサブディレクトリ
内のマッチだけを返すことも可能です（オプション\lopt{subdir}）。

\cmd{extractbb}コマンドという形で、\prog{dvipdfmx}プログラムにバウンディング
ボックス情報を抽出する機能が追加されました。これにより\prog{dvipdfm}が持って
いたほとんどの機能が\prog{dvipdfmx}にも実装されたことになります。

\file{Times-Roman}や\file{Helvetica}のようなフォントエイリアスは削除されま
した。パッケージごとにそうしたエイリアスに求める挙動が異なり（例えば、期待
されるエンコーディングが異なるなど）、またそれに対する良い解決策も存在しない
ためです。

ポーランド語向けの\pkg{platex}フォーマットは、まったく別の日本語用プログラム
\prog{platex}と名前が衝突しているため削除されました。代わりに、今後は\pkg{%
polski}パッケージが主としてポーランド語サポートを提供します。

内部的には、アップデートの簡便性のため、\WEB の文字列プールファイルをバイナリ
にコンパイルするようになりました。

最後に、`\TeX\ tuneup of 2008'に述べられているDonald Knuthによる変更が今回の
リリースに反映されました。詳細は\url{https://tug.org/TUGboat/Articles/tb29-2/%
tb92knut.pdf}を参照してください。

\subsubsection{2009}

2009年、\LuaTeX のOpenTypeサポート等を活用するためLua\LaTeXTeX のデフォルト
の出力フォーマットがPDFに変更されました。新しいコマンド名\cmd{dviluatex}と
\cmd{dvilualatex}を使用するとDVI出力の\LuaTeX を実行できます。\LuaTeX の
ウェブサイトは\url{https://luatex.org}です。

{\OMEGA}（Omega）開発者らとの協議の後、オリジナルの\OMEGA エンジンと{\LAMBDA}%
（Lambda）フォーマットは削除されることになりました。後継である{\ALEPH}（Aleph）
と{\LAMED}（Lamed）は\OMEGA の機能を担うため今後も\TL に残ります。

Computer Modernを含め、新しいバージョンのAMS Type~1 フォントが追加されました。
何年も前にKnuthが\MF のソース修正を行って変更されたいくつかのシェイプがついに
反映され、またヒンティングも更新されました。EulerフォントもHermann Zapfによって
大幅に再デザインされました（\url{https://tug.org/TUGboat/Articles/tb29-2/tb92%
hagen-euler.pdf}参照）。いずれについてもメトリクスは変更されていません。AMS%
フォントのウェブサイトは\url{https://ams.org/tex/amsfonts.html}です。

新しいGUIフロントエンド{\TeX}worksがWindowsと\MacTeX 向けに追加されました。
他のプラットフォーム向けのものや詳細情報については{\TeX}worksのウェブサイト
（\url{https://tug.org/texworks}）を参照してください。{\TeX}worksはmacOS向けの
統合開発環境{\TeX}Shopにインスパイアされたクロスプラットフォームなフロント
エンドで、使い勝手の良さに重きを置いています。

製図用ツールAsymptoteが多くのプラットフォーム向けに追加されました。これは
テキストベースのグラフィクス記述言語で、大雑把には\MP と似たものですが、
高度な3Dサポートその他の機能が利用可能です。ウェブサイトは\url{http://%
asymptote.sourceforge.io}です。

独立した\cmd{dvipdfm}コマンドは\prog{dvipdfmx}に置き換えられました（ただし
特別な互換モードで実行されます）。\cmd{dvipdfmx}はCJKサポートと、\cmd{%
dvipdfm}の最後のリリースから何年にも渡って蓄積された数多くの修正が含まれて
います。

新しいプラットフォーム（\pkg{cygwin}, \pkg{i386-netbsd}）向けのバイナリが
追加されました。ただしOpenBSDユーザは標準的なパッケージシステムを用いて\TeX
をインストールすることが推奨されます。複数のバージョンのOpenBSDで動作する
バイナリを作成するのは困難でした。

その他の雑多な変更：
%
\begin{itemize}[nosep]
\item \pkg{lzma}の安定した代替として\pkg{xz}圧縮（\url{https://tukaani.org/%
  xz/}）を採用しました。
\item 後続の文字列が定義済みの変数と一致しない限り\samp{\$}をファイル名に使用
  できるようになりました。
\item \KPS ライブラリがマルチスレッド化されました（\MP で使用されています）。
\item \TL 全体のビルドがAutomakeベースになりました。
\end{itemize}

最後に過去のバージョンに関することについて告知します。\TL のすべてのリリース
は\url{ftp://tug.org/historic/systems/texlive}から入手できます（CDラベル等
のおまけもあります）。

\subsubsection{2010}
\label{sec:2010news} % keep with 2010

2010年、出力PDFのデフォルトバージョンが1.5になり、これまで以上の圧縮が可能に
なりました。この変更はPDFを出力するすべての\TeX エンジンと\cmd{dvipdfmx}に
ついて適用されました。\LaTeX パッケージ\pkg{pdf14}を使用するか\code{\cs{%
pdfminorversion}=4}を設定するとPDF~1.4出力に戻すことができます。

pdf\LaTeXTeX は\LaTeX の\file{graphics.cfg}が読み込まれていて、PDF出力を
行っている場合、\pkg{epstopdf}を用いて\emph{自動的に}インクルードされた
Encapsulated {\PS}（EPS）ファイルをPDFに変換するようになりました。デフォルト
のオプションは既存のPDFファイルが上書きによって失われてしまうことのないよう
に設定されていますが、\cs{documentclass}よりも前に
\verb|\newcommand{\DoNotLoadEpstopdf}{}|（\cs{def}を用いてもよい）を記述して
読み込み済みのように見せかけることで\pkg{epstopdf}使用を回避できます。また
\pkg{pst-pdf}パッケージを使用した場合も読み込みは行われません。詳細については
\pkg{epstopdf}パッケージのドキュメントを参照してください（\url{https://ctan.%
org/pkg/epstopdf-pkg}）。

関連する変更として、今年からいくつかの定められた外部コマンドが\TeX から（\cs{%
write18}機能を介して）デフォルトで実行できるようになりました。デフォルトで実行
が許可されているコマンドは\cmd{repstopdf}, \cmd{makeindex}, \cmd{kpsewhich},
\cmd{bibtex}, \cmd{bibtex8}です。このリストは\file{texmf.cnf}に定義されています。
こうした外部コマンドをすべて禁止する必要のある環境では、インストーラにオプション
を指定するか（\ref{sec:options}節を参照）、\code{tlmgr conf texmf \var{shell\_%
escape} 0}を実行して設定を上書きしてください。

上とは別の関連する変更は\BibTeX とMakeindexが任意ディレクトリのファイル出力を
（\TeX 本体と同様）デフォルトでは行わなくなったことです。これは、これらのプロ
グラムを制限付き\cs{write18}で実行できるようにするための措置です。この挙動を
変更するためには環境変数\var{TEXMFOUTPUT}を設定するか\var{openout\_any}設定を
変更してください。

\XeTeX が\pdfTeX と同様に同じ行内でのマージンカーニングをサポートするように
なりました（フォント展開は今のところサポートされていません）。

\prog{tlmgr}がデフォルトで各パッケージのバックアップを取るようになったので
（\code{tlmgr option autobackup 1}）、パッケージアップデート時に不具合が発生
しても\code{tlmgr restore}により簡単に復元できるようになりました。もし
インストール後のアップデートを行いたいもののバックアップ用のディスク容量が
ないという場合は\code{tlmgr option autobackup 0}を実行してください。

新規に追加されたプログラム：
%
\begin{itemize}[nosep]
\item \pTeX エンジンと関連する日本語組版のためのユーティリティ
\item {\BibTeX}U: Unicodeサポートが有効な\BibTeX
\item \prog{chktex}: \LaTeXTeX 文書をチェックするツール
  （元々\url{http://baruch.ev-en.org/proj/chktex}から提供されていたもの）
\item \prog{dvisvgm}: DVIをSVGに変換するツール
  （\url{https://dvisvgm.de}）
\end{itemize}

新しいプラットフォーム向けの実行バイナリも追加されました：
\pkg{amd64-freebsd}, \pkg{amd64-kfreebsd}, \pkg{i386-freebsd},
\pkg{i386-kfreebsd}, \pkg{x86\_64-darwin}, \pkg{x86\_64-solaris}.

{\TL} 2009の変更ですが、昨年リリースノートに書き忘れたものがありました。
\TeX4ht関連の多くの実行バイナリ（\url{https://tug.org/tex4ht}）がバイナリ用
ディレクトリから削除されました。汎用の\cmd{mk4ht}コマンドを用いてすべての
\prog{tex4ht}コンビネーションを実行することができます。

最後に、\TeX コレクションDVD上の\TL はライブ実行できなくなりました。
1枚のDVDだけではもはや十分なスペースが確保できないためです。有用な副作用
として、物理DVDからのインストールがこれまでよりかなり高速になりました。

\subsubsection{2011}

macOSバイナリ（\pkg{universal-darwin}, \pkg{x86\_64-darwin}）の動作要件が
Leopard以降になりました。今後PantherとTigerはサポート対象外となります。

一般的なプラットフォーム向けに文献処理ツール\prog{biber}が追加されました。
このプログラムの開発は\LaTeX の参考文献関連機能の完全な再実装である\pkg{%
biblatex}パッケージの開発と緊密に連携しています。


{\MP}（\cmd{mpost}）は\file{.mem}ファイルを作成したり利用したりしなくなり
ました。\file{plain.mp}のような必要ファイルは実行の度に読み込まれなければ
なりません。これは\MP をライブラリとして利用できるようにしたことに関連する
変更です（ライブラリ利用可能になったこともまた顕著な変更ですが、一般の
ユーザにはあまり関係がありません）。

\cmd{updmap}のPerl実装はこれまでWindows専用でしたが、刷新されてすべての
プラットフォームで利用されるようになりました。これもユーザに影響のある
ような変更ではないはずですが、実行速度はかなり向上しました。

\cmd{initex}, \cmd{inimf}コマンドが復活しました（ただし、その他の\cmd{%
ini*}コマンドは復活していません）。

\subsubsection{2012}

\cmd{tlmgr}が複数のネットワークレポジトリからのアップデートをサポートする
ようになりました。\code{tlmgr help}の出力の``multiple repositories''に
関するセクションにはさらなる詳細が記述されています。

\cmd{xetex}, \cmd{xelatex}の双方について\cs{XeTeXdashbreakstate}の
デフォルト値が\code{1}になりました。これによりem-ダッシュとen-ダッシュの
直後の改行が許容されます（これはplain \TeX, \LaTeX, \LuaTeX 等の挙動と
同じです）。既存の\XeTeX 文書で、これまでの行分割とまったく同じ挙動を必要
とする場合は明示的に\cs{XeTeXdashbreakstate}を\code{0}に設定してください。

\cmd{pdftex}と\cmd{dvips}を含むいくつかのプログラムが生成するファイルが
2\,GBを超えられるようになりました。

あまりにも多くのバリエーションが存在するため、35の\PS 標準フォントが\cmd{%
dvips}の出力にデフォルトで埋め込まれるようになりました。

制限付き\cs{write18}実行モードにおいて、\cmd{mpost}がデフォルトで許可される
ようになりました。

\file{texmf.cnf}が\file{../texmf-local}の位置（例えば\file{/usr/local/%
texlive/texmf-local/web2c/texmf.cnf}）でも（存在すれば）みつけられるように
なりました。

\cmd{updmap}スクリプトがグローバルな設定ではなくツリー毎に\file{updmap.cfg}%
を読み込むようになりました。この変更は、\file{updmap.cfg}を直接変更して
いない限りユーザへの影響はないはずです。詳細は\code{updmap \lopt{help}}の
出力を参照してください。

プラットフォーム：\pkg{armel-linux}と\pkg{mipsel-linux}が追加され、\pkg{%
sparc-linux}と\pkg{i386-netbsd}はもはやメインディストリビューションには
含まないことになりました。

\subsubsection{2013}

ディストリビューション構造：トップレベルの\dir{texmf}ディレクトリは、簡潔の
ため\dir{texmf-dist}と統合されました。\KPS 変数\var{TEXMFMAIN}と\var{TEXMF%
DIST}は今後ともに\dir{texmf-dist}を参照することになります。

多くの小さな言語サポートコレクションは、インストールをシンプルにするため、
統合されました。

\MP: PNG出力のネイティブサポートと浮動小数点数（IEEE double）が追加されました。

\LuaTeX: 内蔵Lua処理系のバージョンが5.2に上がりました。また、外部PDFのページ
コンテンツを処理など多くの機能をもつ\pkg{pdfscanner}ライブラリが新たに追加
されました（詳細は\pkg{pdfscanner}のウェブサイトを参照してください）。

\XeTeX （ウェブサイトにさらに多くの情報があります）：
%
\begin{itemize}[nosep]
\item フォントレイアウトにICUに代わってHarfBuzzライブラリを使用するようになり
  ました（ICUも入力エンコーディング、双方向組版、オプショナルなUnicode改行を
  サポートするために依然として利用されてはいます）。
\item グラファイトレイアウトにはSilGraphiteに代わってGraphite2とHarfBuzzが
  利用されるようになりました。
\item MacではATSUI（廃止予定）に代わってCore Textを使用するようになりました。
\item 同名のものがある場合、Type1フォントよりTrueType/OpenTypeフォントが優先
  されるようになりました。
\item 稀に\XeTeX と\prog{xdvipdfmx}でフォント検索の挙動に違いが生じる問題を
  修正しました。
\item OpenTypeのmath cut-insをサポートしました。
\end{itemize}

\prog{xdvi}: レンダリングに\prog{t1lib}に代わってFreeTypeを使用するように
なりました。

\pkg{microtype}: \XeTeX のprotrusion機能と\LuaTeX のprotrusion、フォント
展開、トラッキング機能をサポートしたほか、数々の拡張が行われました。

\prog{tlmgr}: 新しく\code{pinning}アクションが追加され、複数のレポジトリの
管理が簡単になりました。\code{tlmgr \lopt{help}}出力の該当セクションまたは
オンライン\url{https://tug.org/texlive/doc/tlmgr.html#MULTIPLE-REPOSITORIES}%
に詳細が記述されています。

プラットフォーム：\pkg{armhf-linux}, \pkg{mips-irix}, \pkg{i386-netbsd},
\pkg{amd64-netbsd}が追加（または復活）されました。一方\pkg{powerpc-aix}は
廃止されました。

\subsubsection{2014}

% Note: 第2文の訳が正しいか自信なし
2014年もKnuthによる\TeX のアップデートがありました。この変更はすべての
エンジンに影響しますが、ユーザから見える変化は起動時バナーの\code{preloaded
format}の文字列ぐらいでしょう。Knuthによれば、今回の変更により起動時バナーは
バイナリに実際にアンダンプされて読み込まれたフォーマットよりも、読み込まれて
いることが\emph{期待される}フォーマットを反映するようになりました。バナーの
内容はさまざまな方法で上書きされ得ます。

\pdfTeX: 警告を抑制する新しいパラメタ\cs{pdfsuppresswarningpagegroup}と、PDF%
テキストリフローを補助するために単語内スペースを制御する新しいプリミティブ
\cs{pdfinterwordspaceon}, \cs{pdfinterwordspaceoff}, \cs{pdffakespace}が追加
されました。

\LuaTeX: フォント読み込みとハイフネーションについて、大きな変更と修正が
ありました。最大の新要素は新しい\TeX エンジンで、\cmd{luajittex}とその仲間
である\cmd{texluajit}, \cmd{texluajitc}が追加されました。これらはLuaの
JITコンパイラを利用しています（詳細は\textsl{TUGboat}の記事\url{https:%
//tug.org/TUGboat/tb34-1/tb106scarso.pdf}にあります）。\cmd{luajittex}は現在
開発途上にあり、すべてのプラットフォームで利用可能なわけではなく、また\cmd{%
luatex}ほど安定していない可能性があります。\TL チームも\cmd{luajittex}開発陣
も、このエンジンはLuaコードのJITコンパイルについて実験を行う場合を除いては、
使用を推奨していません。

\XeTeX: Macを含むすべてのプラットフォームで同じ画像フォーマットをサポートする
ようになりました。Unicodeの互換性分解フォールバックは回避されるようになりました
（ただしそれ以外については未対応）。\XeTeX の以前のバージョンとの互換性のため、
グラファイトフォントについてはOpenTypeを優先します。

\MP: \code{numberprecision}に加えて、新しい数値体系\code{decimal}のサポート
されるようになりました。Knuthにより\file{plain.mp}の\code{drawdot}の定義が更新
されました。SVGおよびPNG出力についてのバグが修正されました。

{\TL} 2014リリース後どこかのタイミングで\ConTeXt のユーティリティ\cmd{pstopdf}%
は独立のコマンドとしては廃止される予定です。これは同名のOSユーティリティとの
衝突があるためです。同ユーティリティは\code{mtxrun \lopt{script} pstopdf}に
よりこれからも呼び出すことができます。

\cmd{psutils}は新しいメンテナにより大きく修正されました。結果として、いくつかの
あまり使われていないユーティリティ（\cmd{fix*}, \cmd{getafm}, \cmd{psmerge},
\cmd{showchar}）はユーザレベルバイナリとして提供するのではなく\dir{scripts}%
ディレクトリ以下に移動されることになりました（もしこの変更で問題が発生した場合
は戻されるかもしれません）。一方で新しいスクリプト\cmd{psjoin}が追加されました。

\TL ベースのディストリビューション{\MacTeX}（\ref{sec:macos}節）は、今後Latin
Modernと{\TeX} GyreフォントについてのMac専用パッケージを同梱しないことになり
ました。これはユーザが各自でそれらのフォントをシステムで利用できるように設定
するのはそれほど難しくないためです。また\TeX4ht（とりわけ\file{tex4ht.env}）
がGhostscriptを直接利用するようになったのでImageMagickの\cmd{convert}コマンド
も削除されました。

中国語、日本語、韓国語をサポートする\pkg{langcjk}コレクションは大きすぎたので
言語ごとに独立のパッケージに分割されました。

プラットフォーム：\pkg{x86\_64-cygwin}が追加された一方、\pkg{mips-irix}は削除
されました。MicrosoftがWindows XPのサポートを終了したので、\TL もXPではそのうち
動作しなくなるでしょう。

\subsubsection{2015}

\LaTeXe に元々は\pkg{fixltx2e}パッケージを読み込まない限りは適用されなかった
変更がデフォルトで組み込まれるようになりました（逆に、今後は\pkg{fixltx2e}を
読み込んでも何も起こりません）。新たに追加された\pkg{latexrelease}パッケージ
その他の新機構を用いて「どこまでの変更を反映するか」をコントロールすることが
できます。詳細は付属ドキュメントの``{\LaTeX} News \#22''や``{\LaTeX} changes''
に綴られています。ちなみに\pkg{babel}と\pkg{psnfss}は\LaTeX の中核を成す
パッケージながら開発・保守は独立に行われており、今回の変更とは関係がありません
（これまで通り動作するはずです）。

内部的には\LaTeXe 自身がUnicode関連のエンジン設定（カテゴリーコードの初期値
など）を同梱するようになりました。こうした設定は以前は\TL が提供していました。
この変更はユーザには無関係のはずです。低レベルの内部コントロールシークエンス
はリネームされたり削除されたりしていますが、全体としての挙動はこれまでと完全に
一致しているはずです。

\pdfTeX: JFIFと同様JPEGのExif情報もサポートするようになりました。\cs{%
pdfinclusionerrorlevel}の値が負のときは警告を一切発しません。また\prog{xpdf}~%
3.04に対応しました。

\LuaTeX: トークン読み取りのための\pkg{newtokenlib}ライブラリが追加されました。
\code{normal}な乱数生成やその他の部分に関わるバグ修正も含まれています。

\XeTeX: 画像の取り扱いに関する修正がありました。\prog{xdvipdfmx}バイナリは
最初に\prog{xetex}の仲間を検索するようになりました。\code{XDV}の内部オペコード
が変更されました。

\MP: 新しい数値体系\code{binary}が追加されました。\prog{up*tex}に対応する
日本語用の\prog{upmpost}, \prog{updvitomp}プログラムが追加されました。

\MacTeX: CJKサポートGhostscriptパッケージの更新が反映されました。システム環境
設定の``{\TeX} Distribution''ペインがOS X 10.10 Yosemiteでも利用可能になり
ました。リソースフォークフォント（通常拡張子なし）はもはや\XeTeX ではサポート
されなくなりました。一方データフォークフォント（\file{.dfont}）は今後も
サポートされます。

インフラ：\cmd{fmtutil}スクリプトが\cmd{updmap}と同様、ツリー毎に\file{%
fmtutil.cnf}を読み込むように再実装されました。\Webc の\cmd{mktex*}スクリプト
（\prog{mktexlsr}, \prog{mktextfm}, \prog{mktexpk}など）は毎回\code{PATH}%
にあるプログラムよりも、それぞれと同じディレクトリにあるプログラムを優先する
ようになりました。

プラットフォーム：\pkg{kfreebsd}系のプラットフォームサポートは終了しました。
これらのプラットフォームでは、それぞれシステムネイティブな機能を利用して簡単に
\TL を導入できるようになったためです。いくつかの追加プラットフォームがカスタム
バイナリの形でサポートされるようになりました（\url{https://tug.org/texlive/%
custom-bin.html}）。加えていくつかのプラットフォームサポートがDVDでは省略
されるようになりましたが（単純に容量不足のためです）、インターネット経由でこれ
まで通りインストールすることができます。

\subsubsection{2016}

\LuaTeX: プリミティブについての大きな変更（リネームと削除）とノード構造の
部分的な再設計がありました。この変更はHans Hagen氏による記事``{\LuaTeX} 0.90
backend changes for PDF and more''（\url{https://tug.org/TUGboat/tb37-1/%
tb115hagen-pdf.pdf}）に要約されています。すべての詳細については\LuaTeX の
マニュアル\file{texmf-dist/doc/luatex/base/luatex.pdf}を参照してください。

\MF: \MF にLua処理系を組み込んだ実験的なプログラムMFluaとMFluajitが追加され
ました。現状これらは試用と実験のためのものです。

\MP: バグ修正と{\MP} 2.0に向けた内部的準備が行われました。

\LuaTeX とオリジナルの\TeX を除くすべての処理系が\var{SOURCE\_DATE\_EPOCH}に
対応しました（\LuaTeX も次のリリース時に対応する予定です）。環境変数\var{%
SOURCE\_DATE\_EPOCH}が設定されている場合、その値がPDF出力のタイムスタンプと
して利用されます。\var{SOURCE\_DATE\_EPOCH\_TEX\_PRIMITIVES}も設定されている
場合、\var{SOURCE\_DATE\_EPOCH}の値が\TeX のプリミティブ\cs{year}, \cs{month},
\cs{day}, \cs{time}の初期化にも利用されます。\pdfTeX のマニュアルに詳細と
使用例が記載されています。

\pdfTeX: 通常実行の毎に異なる値の出力をコントロールするためのプリミティブ\cs{%
pdfinfoomitdate}, \cs{pdftrailerid}, \cs{pdfsuppressptexinfo}が追加されました。
これらの機能はPDF出力のためのもので、DVIのものではありません。

\XeTeX: プリミティブ\cs{XeTeXhyphenatablelength}, \cs{XeTeXgenerateactualtext},
\cs{XeTeXinterword\-spaceshaping}, \cs{mdfivesum}が追加されました。文字クラスの
上限が4096に制限されました。DVIのidバイトが更新されました。

その他のユーティリティ：
%
\begin{itemize}[nosep]
\item \cmd{gregorio}はグレゴリオ聖歌楽譜を組版するためのパッケージ\pkg{%
  gregoriotex}に含まれる新しいプログラムです。このツールは\var{shell\_escape%
  \_commands}にデフォルトで含まれています。
\item \cmd{upmendex}は索引作成プログラムで、概ね\cmd{makeindex}と互換なもの
  ですが、Unicodeソートをサポートする他、いくつかの変更が加えられています。
\item \cmd{afm2tfm}はアクセントベースの高さ調整を上向きのみに行うようになり
  ました。\sopt{a}を使用するとすべての調整を省略します。
\item \cmd{ps2pk}が拡張PK/GFフォントを扱えるようになりました。
\end{itemize}

\MacTeX: システム環境設定の``\TeX\ Distribution''ペインが廃止され、そこで
取り扱われていた機能は\TL ユーティリティに移されました。同梱のGUIアプリケー
ションはアップデートされました。さまざまなCJKフォントをGhostscriptで扱いたい
ユーザのために新しく\cmd{cjk-gs-integrate}スクリプトが追加されました。

インフラ：システムレベルの\cmd{tlmgr}設定ファイルがサポートされました。また
パッケージのチェックサムを認証する機能が追加されました。GPGが利用可能な場合は
ネットワークアップデート時に署名も認証されるようになります。これらの認証は
インストーラと\cmd{tlmgr}の両方で行われます。GPGが利用できない場合、アップ
デートはこれまで通り処理されます。

プラットフォーム：\pkg{alpha-linux}と\pkg{mipsel-linux}は削除されました。

\subsubsection{2017}

\LuaTeX: コールバックや組版制御の機能が追加され、これまで以上に内部処理に
アクセスできるようになりました。動的なコード読み込みを行うための\code{ffi}%
ライブラリがいくつかのプラットフォーム向けに追加されました。

\pdfTeX: 昨年導入された環境変数\var{SOURCE\_DATE\_EPOCH\_TEX\_PRIMITIVES}%
は\var{FORCE\_SOURCE\_DATE}にリネームされました（機能はまったく同一です）。
トークンリスト\cs{pdfpageattr}が文字列\code{/MediaBox}を含んでいる場合、
デフォルト\code{/MediaBox}の出力が省略されるようになりました。

\XeTeX: Unicode/OpenTypeのmath機能はHarfBuzzのMATHテーブルサポートに基づく
ようになりました。またいくつかのバグが修正されました。

\prog{dvips}: \cmd{dvipdfmx}との一貫性と他のパッケージから期待される挙動に
合わせるため、最後の用紙サイズspecialが適用されるようになりました。\sopt{%
L0}オプションを使用（または設定ファイルで\code{L0}指定）した場合、最初の
specialが優先される従来の挙動に戻ります。

\epTeX, \eupTeX: \pdfTeX 由来のプリミティブ\cs{pdfuniformdeviate},
\cs{pdfnormaldeviate}, \cs{pdf\-randomseed}, \cs{pdfsetrandomseed},
\cs{pdfelapsedtime}, \cs{pdfresettimer}が追加されました。

\MacTeX: 今年から、\MacTeX としてはAppleがセキュリティパッチを提供している
macOSのバージョンのみをプラットフォーム\pkg{x86\_64-darwin}としてサポート
することになりました。これにより、現在サポート対象となるのはYosemite, El~%
Capitan, Sierra（つまりmacOS 10.10以上）です。それよりも古いバージョンの
macOS向けのバイナリは\MacTeX には同梱されていませんが、\TL には含まれて
います（\pkg{x86\_64-darwinlegacy}, \pkg{i386-darwin}, \pkg{powerpc-darwin}）。

インフラ：\var{TEXMFLOCAL}がデフォルトで\var{TEXMFSYSCONFIG}および\var{%
TEXMFSYSVAR}に先んじて検索されるようになりました。これはローカルなファイル
がシステムのそれを上書きするのがより期待される挙動であろうとの判断からです。
また\cmd{tlmgr}に新しく\code{shell}モード（対話的実行もしくはスクリプトから
使用されることを意図するものです）と\code{conf auxtrees}アクション（独自
ツリーの追加と削除が容易にできます）が追加されました。

\cmd{updmap}と\cmd{fmtutil}: これらのスクリプトは明示的にいわゆるシステム
モード（\code{updmap-sys}, \code{fmtutil-sys}コマンドの実行または\sopt{sys}%
オプションの利用）またはユーザモード（\code{updmap-user}, \code{fmtutil-user}%
コマンドの実行または\sopt{user}オプションの利用）を指定せずに実行された場合、
警告を表示するようになりました。これは長年に渡って意図せずユーザモードで
スクリプトが実行され、その後システム側のアップデートが反映されない問題へ
対処するための措置です。詳細は\url{https://tug.org/texlive/scripts-sys-user.%
html}を参照してください。

\cmd{install-tl}: macOSにおける\var{TEXMFHOME}等の個人用パスのデフォルト値が
\MacTeX のデフォルト値\dir{~/Library/...}に合わせられました。新しく\sopt{%
init-from-profile}オプションが追加され、指定したプロフィールの値に基づいて
インストールを開始できるようになったほか、明示的にプロフィールを保存する
\code{P}コマンドが追加されました。またプロフィールで指定する変数の名前が
更新されました（古い変数名も引き続き使用可能です）。

Sync\TeX: 一時ファイルの名前が\file{foo.synctex.gz(busy)}のような形から\file{%
foo.synctex(busy)}に変更されました（\file{.gz}の部分が省略されます）。一時
ファイルを削除するフロントエンドやビルドシステムは対応が必要かもしれません。

その他のユーティリティ：\cmd{texosquery-jre8}は新しいクロスプラットフォームな
プログラムで、\TeX 文書の中からロケールその他のOS情報を収集するためのものです。
このツールは制限付きシェル実行時でも起動できるよう、デフォルトで\var{shell\_%
escape\_commands}に追加されています（\prog{texosquery}はJREの古いバージョンも
サポートしていますが、古いJREで実行する場合には制限モードでは実行できません。
古いJREは既にOracleによってサポートされておらず、セキュリティ上の懸念がある
ためです）。

プラットフォーム：上の\MacTeX の項目を確認してください。それ以外の変更は
ありません。

\subsubsection{2018}

\KPS: システムディレクトリ以外に対してはデフォルトで大文字・小文字を区別せず
ファイル検索を行うようになりました。これまで通り大文字・小文字を区別したい
場合は\file{texmf.cnf}または環境変数で\var{texmf\_casefold\_search}を\code{0}%
に設定してください。詳細は\KPS のマニュアル（\url{https://tug.org/kpathsea}）
を参照してください。

\epTeX, \eupTeX: 新プリミティブ\cs{epTeXversion}が追加されました。

\LuaTeX: {\TL} 2019でLua 5.3に移行するための準備として、ほとんどのプラット
フォーム向けにバイナリ\cmd{luatex53}が追加されました。有効化するためには
\code{luatex}にリネームしてください。もしくは{\ConTeXt} Garden（\url{%
https://wiki.contextgarden.net}）のファイルを使用してください（詳細はサイトを
参照してください）。

\MP: 間違ったパス方向とTFM, PNG出力に関する問題が修正されました。

\pdfTeX: ビットマップフォントについてエンコーディングベクタが許容されるよう
になり、カレントディレクトリがPDF ID中にハッシュされなくなりました。\cs{%
pdfprimitive}とそれに関連するバグ修正が行われました。

\XeTeX: PDF画像挿入時に\code{/Rotate}がサポートされるようになりました。
出力ドライバが正常終了しなかった際の終了ステータスが非ゼロ値になりました。
UTF-8やプリミティブ周りのさまざまな不具合が修正されました。

\MacTeX: 下記のサポートmacOSバージョン変更を確認してください。加えて、
\MacTeX によって\dir{/Applications/TeX/}以下にインストールされていたファイル
が整理されました。今後このディレクトリ直下にはGUIプログラム（BibDesk, LaTeXiT,
{\TL} Utility, {\TeX}Shop）が置かれ、サブディレクトリに追加のユーティリティや
ドキュメントが配置されます。

\cmd{tlmgr}: 新しいフロントエンド\cmd{tlshell}（Tcl/Tk）と\cmd{tlcockpit}
（Java）が追加されました。それに伴い、\cmd{tlmgr}がJSON出力に対応しました。
\code{uninstall}コマンドは\code{remove}の別名になりました。新しいアクション
および同名オプションとして\code{print-platform-info}が追加されました。

プラットフォーム：
%
\begin{itemize}[nosep]
\item \pkg{armel-linux}と\pkg{powerpc-linux}は削除されました。
\item \pkg{x86\_64-darwin}のサポート対象はmacOS 10.10--10.13（Yosemite, El~%
  Capitan, Sierra, High~Sierra）になりました。
\item \pkg{x86\_64-darwinlegacy}のサポート対象は10.6--10.10です（10.10について
  は\pkg{x86\_64-darwin}の利用をおすすめします）。\pkg{powerpc-darwin}と\pkg{%
  i386-darwin}が削除されたことによって、10.5（Leopard）のサポートは完全的に
  終了しました。
\item Windows XPはもはやサポートされません。
\end{itemize}

\subsubsection{2019}

\KPS: ブレース展開とパス分割の一貫性が高まりました。設定ファイルでは\samp{.}を
ハードコードする代わりに新しい変数\var{TEXMFDOTDIR}を使用することになりました。
これは、追加のディレクトリやサブディレクトリの検索を容易にするためです（詳細は
\file{texmf.cnf}内のコメントを参照してください）。

\epTeX, \eupTeX: 新プリミティブ\cs{readpapersizespecial}と\cs{expanded}が追加
されました。

\LuaTeX: Luaのバージョンが新しい算術演算とインターフェースの変更を含む5.3に
上がりました。PDF読み込みに独自ライブラリpplibが用いられるようになったので、
popplerへの依存がなくなりました（同時にC++にも依存しなくなりました）。これに
伴いLuaインターフェースも変更になっています。

\MP: 常に\lopt{restricted}が有効となる\cmd{r-mpost}コマンドが導入され、
同コマンドはデフォルトで制限リストに追加されるようになりました。デシマル・
バイナリモードにおける最小精度は2になりました。バイナリモードはMPlibでは
サポートされなくなりましたが、スタンドアロンな\MP では今でも利用可能です。

\pdfTeX: 新プリミティブ\cs{expanded}が追加されました。新しいパラメタ\cs{pdf%
omitcharset}が\code{1}に設定されている場合、\code{/CharSet}はPDF出力で省略
されるようになりました。これはその値がPDF/A-2およびPDF/A-3の仕様を満たすこと
を保証できないためです。

\XeTeX: クロスエンジン・サポートのための新プリミティブ\cs{expanded},
\cs{creationdate}, \cs{elapsedtime}, \cs{filedump}, \cs{filemoddate},
\cs{filesize}, \cs{resettimer}, \cs{normaldeviate}, \cs{uniformdeviate},
\cs{randomseed}が追加されました。また\cs{Ucharcat}はアクティブ文字を生成
できるように拡張されました。

\cmd{tlmgr}: ダウンロード用ツール\cmd{curl}をサポートしました。ローカル
バックアップの際に（利用可能であれば）\cmd{lz4}と\cmd{gzip}を\cmd{xz}を適用
する前に使用するようになりました。環境変数\var{TEXLIVE\_PREFER\_OWN}が設定
されていない限り、圧縮およびダウンロード用に用いるプログラムについては\TL
が同梱するものよりもシステムに用意されているものを優先して使用するように
なりました。

\cmd{install-tl}: macOSおよびWindowsでは新オプション\sopt{gui}（引数なし）
がデフォルトになりました。この状態では新しいTcl/TK GUIが起動されます（詳細
は\ref{sec:basic}節、\ref{sec:graphical-inst}節を参照してください）。

ユーティリティ：
%
\begin{itemize}[nosep]
\item \cmd{cwebbin}（\url{https://ctan.org/pkg/cwebbin}）が\TL における
  CWEB実装となりました。この実装ではより多くの言語がサポートされ、簡易な
  索引を作成する\cmd{ctwill}プログラムが追加されています。
\item \cmd{chkdvifont}: DVIファイルやtfm/ofm, vf, gf, pkからフォント情報
  を抽出して報告します。
\item \cmd{dvispc}: スペシャルを考慮して、DVIをページ独立にします。
\end{itemize}

\MacTeX: \pkg{x86\_64-darwin}のサポート対象は10.12以上（Sierra, High~Sierra,
Mojave）になりました。\pkg{x86\_64-darwinlegacy}は引き続き10.6以降をサポート
します。スペルチェッカExcaliburはもはや同梱されません（32-bitサポートが必要
なためです）。

プラットフォーム：\pkg{sparc-solaris}は削除されました。

\subsubsection{2020}

全般：
%
\begin{itemize}[nosep]
\item すべての\TeX エンジン（\cmd{tex}を含む）の\cs{input}プリミティブが、
  システム依存の拡張としてファイル名をグループ区切りの引数として受け取れる
  ようになりました。標準的なスペーストークン区切りのファイル名に関する
  挙動は従来から一切変更されていません。このグループ区切り引数は\LuaTeX では
  元々実装されていたもので、今年からすべてのエンジンで利用可能になりました。
  ASCIIのダブルクオテーション文字（\code{"}）はファイル名から除去されますが、
  その他の変更が引数に対してトークン化後に行われることはありません。この変更は
  今のところ\LaTeX の\cs{input}コマンドには影響を与えません。このコマンドは
  標準の\cs{input}プリミティブを再定義したマクロだからです。
\item 新しいオプション\lopt{cnf-line}が\cmd{kpsewhich}, \cmd{tex}, \cmd{mf}と
  その他すべてのエンジンで利用可能になりました。このオプションは任意の
  texmf設定項目をコマンドラインで指定するためのものです。
\item ここ数年でさまざまなプリミティブが各種エンジンに追加されたのは、すべての
  処理系で共通の機能を利用可能にするためです。
  （cf.\,\textsl{\LaTeX\ News \#31}, \url{https://latex-project.org/news}）
\end{itemize}

\epTeX, \eupTeX: 新しいプリミティブ\cs{Uchar}, \cs{Ucharcat},
\cs{current(x)spacingmode}, \cs{ifincsname}が主にクロスエンジン・サポートのため
追加されました。また\cs{fontchar??}と\cs{iffontchar}の仕様が改訂されました。
\eupTeX に限り\cs{currentcjktoken}も利用可能になりました。

\LuaTeX: HarfBuzzライブラリが導入され、\cmd{luahbtex}と\cmd{luajithbtex}が
追加されました。前者は\cmd{lualatex}で使用されることになりました。新しい
プリミティブとして\cs{eTeXgluestretchorder}, \cs{eTeXglueshrinkorder}が
追加されました。

\pdfTeX: 新プリミティブ\cs{pdfmajorversion}が追加されました。これは単に
PDF出力のバージョン番号を変更するもので、PDFの内容そのものに対しては一切の
効果を持ちません。\cs{pdfximage}と類似するコマンドは\cs{openin}と同様の
方法で画像ファイルを検索するようになりました。

\pTeX: 新プリミティブ\cs{ifjfont}, \cs{iftfont}が追加されました。\epTeX,
\upTeX, \eupTeX も同様です。

\XeTeX: \cs{Umathchardef}, \cs{XeTeXinterchartoks}, \cs{pdfsavepos}の
挙動が修正されました。

Dvips: ビットマップフォントについてエンコーディングが出力されるようになり、
コピー＆ペーストがしやすくなりました
（\url{https://tug.org/TUGboat/tb40-2/tb125rokicki-type3search.pdf}）。

\MacTeX: \MacTeX と\pkg{x86\_64-darwin}のサポート対象がmacOS 10.13以上
（High~Sierra, Mojave, Catalina）になりました。\pkg{x86\_64-darwinlegacy}は
macOS 10.6以上をサポートします。Apple社の要請に基づき、\MacTeX は公証を
受け、そのコマンドラインプログラムはhardened runtimeをもつようになって
います。BibDeskと\TL ユーティリティは公証を受けていないため\MacTeX に含ま
れていませんが、\file{README}にはそれらを入手できるURLが記載されています。

\pkg{x86\_64-darwinlegacy}: \cmd{xdvi}を含め、X11サポートを終了しました。

\cmd{tlmgr}とインフラ：
%
\begin{itemize}[nosep]
\item ダウンロード失敗時に（一度だけ）自動的に再試行するようになりました。
\item 新オプション\code{tlmgr check texmfdbs}が追加されました。これにより
  \file{ls-R}ファイルと各ツリーにおける\code{!!}指定の整合性を確認する
  ことができます。
\item パッケージコンテナに\code{tlnet/archive/\textsl{pkgname}.rNNN.tar.xz}%
  といった形でバージョン情報を含むファイル名が用いられるようになりました。
  この変更はユーザに直接影響しないはずですが、ディストリビューションとしては
  大きな変更点です。
\item \code{catalogue-date}情報は、パッケージアップデートには関係がないことが
  多いため、\TeX カタログには伝達されないことになりました。
\end{itemize}

\subsubsection{2021}

全般：
%
\begin{itemize}[nosep]
\item Donald Knuthによる{\TeX\slash\MF} Tuneup 2021の変更内容を取り込み
  ました（\url{https://tug.org/TUGboat/tb42-1/tb130knuth-tuneup21.pdf}）。
  こうしたコードは\code{knuth-dist}および\code{knuth-local}パッケージとして
  CTANから入手することもできます。大方の予想通り、このTuneupによる修正は
  極めて特殊なケースに対するもので、実用的な挙動に関しては何ら影響は
  ありません。
\item オリジナルの\TeX 以外：\cs{tracinglostchars}が3以上に設定されている
  場合、存在しない文字が入力された際は単にメッセージをログファイルに出力
  するだけではなく、エラーを起こすようになりました。また当該文字コードは
  16進数で表示されます。
\item オリジナルの\TeX 以外：新しい整数パラメタ\cs{tracingstacklevels}が
  導入されました。その値が正かつ、\cs{tracingmacros}の値も正の場合、
  関連するログ出力でマクロ展開の深さを示すプレフィックスが付くように
  なります（例えば、深さ2のときは\verb|~..|）。また、マクロ展開の
  トレースはこのパラメタで指定された数値以上に深いものについては
  切り捨てられます。
\end{itemize}

{\ALEPH}（Aleph）：\ALEPH 上の\LaTeX フォーマットである\prog{lamed}は
\TL から除かれました。\code{aleph}バイナリそのものは\TL に残り、また
サポートも続きます。

\LuaTeX:
%
\begin{itemize}[nosep]
\item Luaインタプリタのバージョンが5.3.6になりました。
\item 新しい\cs{tracingstacklevels}の一般化として、\cs{tracingmacros}%
  で用いられるネストレベルへのコールバックが追加されました。
\item 数式グリフはテキストとして処理されないようにマークされました。
\item 伝統的な数式コードパスのためにwidth/id補正をやめました。
\end{itemize}

\MP:
%
\begin{itemize}[nosep]
\item 再現可能な出力を行うため、環境変数\var{SOURCE\_DATE\_EPOCH}が
  サポートされました。
\item \code{mpto}で不要な\code{\%}が付いていたバグが修正されました。
\item \sopt{T}オプションをドキュメント化したほか、マニュアルに細かい
  修正を行いました。
\item \verb|mp_solve_rising_cubic|が期待通り動作するように、
  2進モードと10進モードにおける\code{epsilon}の値を変更しました。
\end{itemize}

\pdfTeX:
%
\begin{itemize}[nosep]
\item 新プリミティブ\cs{pdfrunninglinkoff}, \cs{pdfrunninglinkon}を
  導入しました。これらは例えばヘッダーやフッターでリンクが生成される
  のを防止するのに使うことができます。
\item \cs{pdfendlink}が\cs{pdfstartlink}と異なるネストレベルで現れた
  場合に、停止する代わりに警告を発するようになりました。
\item \cs{pdfglyphtounicode}の代入結果を\code{fmt}ファイルにダンプ
  するようになりました。
\item ソース：upstreamへの追随が困難なので、\code{poppler}サポート
  は除去されました。\TL では、\pdfTeX は常に\code{libs/xpdf}（調整
  された\cmd{xpdf}の内部ライブラリ）が使われてきました。
\end{itemize}

\XeTeX: 数式カーニングに関する修正をしました。

\begin{samepage}
DVIPDFM$x$:
%
\begin{itemize}[nosep]
\item Ghostscriptはデフォルトで安全に呼び出されるようになりました。
  （すべての入力ファイルが信頼できるという前提の下で）この安全な
  呼び出しを無効化する場合は\sopt{i dvipdfmx-unsafe.cfg}を使用して
  ください。これはPSTricksを\XeTeX で使用する場合には必須です。
  すなわち
  \verb|xetex -output-driver="xdvipdfmx -i dvipdfmx-unsafe.cfg -q -E" ...|%
  としてください。
\item 画像ファイルが見つからなかった場合、失敗ステータスで終了します。
\item カラーサポートのためのspecial書式を拡張しました。
\item \code{ExtGState}を操作するためのspecialを追加しました。
\item \code{pdfcolorstack}, \code{pdffontattr}と互換のspecialを
  追加しました。
\item \code{dviluatex}の拡張\verb|fnt_def|を試験的にサポートしました。
\item 仮想フォントに関する新機能として日本語フォント定義のフォール
  バックを実装しました。
\end{itemize}
\end{samepage}

Dvips:
%
\begin{itemize}[nosep]
\item デフォルトのPostScript文書のタイトルは入力ファイルのベースネーム
  になりました。またこの設定は新オプション\sopt{title}でも上書きする
  ことができます。
\item EPSやその他の画像ファイルが見つからない場合、失敗ステータスで
  終了します。
\item 仮想フォントに関する新機能として日本語フォント定義のフォール
  バックを実装しました。
\end{itemize}

\MacTeX: \MacTeX とその新しいバイナリフォルダ\pkg{universal-darwin}は
macOS 10.14以上（Mojave, Catalina, Big~Sur）を要求するようになりました。
\pkg{x86\_64-darwin}バイナリフォルダは廃止されました。\pkg{x86\_64-%
darwinlegacy}はUnix版の\cmd{install-tl}でのみ利用可能で、macOS 10.6以上
をサポートしています。

今年はMacにとっては重要な年です。というのも、Appleが新しいARMマシンを
11月に発表し、今後何年もARMマシンとIntelマシンの販売・サポートを行う
としたからです。\pkg{universal-darwin}にあるすべてのプログラムはARMと
Intelの両方に対応した実行ファイルを持っています。いずれのバイナリも
同じソースからコンパイルされています。

\MacTeX の追加プログラムであるGhostscript, LaTeXiT, {\TL} Utility,
{\TeX}Shopはいずれも両方のアーキテクチャに対応しており、また署名済み
のhardened runtimeを持つようになったので、すべて今年の\MacTeX に
含められました。

\cmd{tlmgr}とインフラ：
%
\begin{itemize}[nosep]
\item メインリポジトリの\file{texlive.tlpdb}バックアップを1つに
  限定しました。
\item システム・Perlバージョン依存性をさらに軽減しました。
\item \cmd{tlmgr info}が新しいエントリ\code{lcat-*}と\code{rcat-*}%
  （それぞれローカル・リモートカタログに対応）を表示するように
  なりました。
\item サブコマンドの完全なログは\file{texmf-var/web2c/tlmgr-%
  commands.log}に移動しました。
\end{itemize}

\subsubsection{2022}

全般：
%
\begin{itemize}[nosep]
\item 独自の形式HINTを出力するHi\TeX が追加されました。HINTは技術文書を
  モバイル端末で読むのに適するようにデザインされたものです。HINTビューアは
  GNU/Linux, Windows, Android向けのものが開発されていますが、\TL には含まれて
  いません。
\item \prog{tangle}, \prog{weave}: 3つ目の引数（省略可）に出力先のファイルを
  指定できるようになりました。
\item \WEB プログラムについて「ミニインデックス」を作成するためのKnuth製の
  プログラム\prog{twill}が収録されました。
\end{itemize}

エンジン共通の拡張（Knuthian \TeX, Aleph, Hi\TeX を除く）：
%
\begin{itemize}[nosep]
\item \cs{show}の出力をファイルにリダイレクトする\cs{showstream}プリミティブ
  が追加されました。
\item 空行や垂直ボックスの終端などに挿入される\cs{par}トークンを別のトークンに
  変更するためのプリミティブ\cs{partokenname}, \cs{partokencontext}が追加
  されました。
\end{itemize}

\epTeX, \eupTeX:
%
\begin{itemize}[nosep]
\item 新プリミティブ\cs{lastnodefont}, \cs{suppresslongerror},
  \cs{suppressoutererror}, \cs{suppressmathparerror}が追加されました。
\item \pdfTeX の拡張\code{\cs{vadjust} pre}がサポートされました。
\end{itemize}

\LuaTeX:
%
\begin{itemize}[nosep]
\item 構造化PDF 2.0出力がサポートされました。
\item PDF 2.0のPNG /Smaskもサポートされました。
\item バリアブルフォントのインターフェースが\cmd{luahbtex}に追加されました。
\item \cs{mathdefaultsmode}のデフォルトラジカルスタイルが変更されました。
\item 選択したdiscretionaryの作成しないようにするオプション機能が追加されました。
\item TrueTypeフォント実装を改善しました。
\item \cs{fontdimen}アロケーションがより効率的になりました。
\item 方向同期ノードが後ろに続くローカル\code{par}ノードのみからなる段落は無視する
  ようになりました。
\end{itemize}

\MP: マクロ展開が停止しなくなるバグを修正しました。

\pdfTeX:
%
\begin{itemize}[nosep]
\item 構造化PDF 2.0出力がサポートされました。
\item レタースペーシング済みフォントについて、指定のある場合は明示的に
  \cs{fontdimen6}を使用するようになりました。
\item 警告は常に行頭に出力されるようになりました。
\item 自動カーニング（\cs{pdfappendkern}と\cs{pdfprependkern}）についても
  protrusionを行うようになりました。同様に自動カーニングの位置にも明示的
  もしくは暗黙的なハイフネーションが行われます。
\end{itemize}

\pTeX など：
%
\begin{itemize}[nosep]
\item 現在の\LaTeX をより強力にサポートする\pTeX\ 4.0.0にメジャー
  アップデートされました。
\item 新プリミティブ\cs{ptexlineendmode}, \cs{toucs}が追加されました。
\item これまでは\upTeX, \eupTeX でのみサポートされていた\cs{ucs}が\pTeX と\epTeX
  でもサポートされました。
\item 北川氏のTUGboat記事（\url{https://tug.org/TUGboat/tb41-3/%
  tb129kitagawa-char.pdf}）にあるように、8-bit文字と和文文字が区別される
  ようになりました。
\end{itemize}

\XeTeX: \XeTeX とPSTricksの透過機能（Ghostscriptの実装の問題で、この機能を
使うと安全性が損なわれます）を必要とする文書を簡単に処理できるように、新たな
ラッパ\cmd{xetex-unsafe}と\cmd{xelatex-unsafe}が追加されました。

DVIPDFM$x$:
%
\begin{itemize}[nosep]
\item \sopt{dNOSAFER}を指定しなくてもPSTricksをサポートするようになりました
  （透過機能を除く）。
\item ビットマップフォントの解像度を指定する\sopt{r}が再び動作するようになりました。
\end{itemize}

Dvips: デフォルトでは回転されたページサイズ用の自動メディア調整を試行しないように
なりました。新設の\lopt{landscaperotate}オプションを指定すると再度有効化されます。

\prog{upmendex}: 実験的にアラビア文字・ヘブライ文字をサポートしました。全般的に
文字分類と多言語サポートが強化されました。

Kpathsea: \code{kpsewhich -all}の結果において通常（非\sopt{all}）の探索の結果が
一番に出力されるようになりました。

\prog{tlmgr}とインフラ：
%
\begin{itemize}[nosep]
\item \code{mirror.ctan.org}についてデフォルトでHTTPSを使うようになりました。
\item 再配置が簡単になるように\code{SELFAUTOPARENT}の代わりに\code{TEXMFROOT}を
  使うようになりました。
\item \prog{install-tl}: あるパッケージのダウンロードやインストールに失敗した際、
 自動的に後続のパッケージのインストールを続行し、後で（一度だけ）再試行するように
 なりました。
\end{itemize}

\MacTeX: \MacTeX とそのバイナリフォルダ\dir{universal-darwin}がmacOS 10.14以上（Mojave,
Catalina, Big~Sur, Monterey）になりました。\dir{x86_64-darwinlegacy}フォルダのバイナリ
（Unix版の\prog{install-tl}でのみインストール可能）macOS 10.6（Snow Leopard）以降を
サポートします。

プラットフォーム：サポート対象のプラットフォームに増減はありません。
来年（2024年）のリリースからはWindows向けのバイナリを32-bitから64-bitに変更する
予定です。残念ながら両方を同時にうまくサポートすることはできません。

\subsubsection{2023}

Windows: 以前からアナウンスしていた通り、\TL は32-bitバイナリの代わりに64-bitバイナリを
収録するようになりました。新しいディレクトリ名は\dir{bin/windows}です（64-bitバイナリを
名前に``32''と付くディレクトリに配置するのは不適当に思われたため）。この変更がWindowsユーザ
に余計な仕事を発生させることは承知の上ですが、これよりも良い方法は見つかりませんでした。
32-bit Windowsのサポートが必要な方は、\TL 2022をインストールする必要がある場合があります。
Windows~11以降では、ARM上のWindowsは64-bit AMD/Intelをエミューレートするので最新の\TL を
利用することができます。一方、ARM上のWindows~10は64-bit AMD/Intelをエミューレートできない
ため、32-bit \TL が必要です。詳細は\TL のWindows向け特別ページ（\url{https://tug.org/%
texlive/windows.html}）も参照してください。

\TeX エンジン共通の拡張（オリジナルの\TeX と\eTeX を除く）：\cs{special}の直後に新しい
キーワード``\code{shipout}''が置かれた場合、その引数トークンの展開が\cs{shipout}時
（すなわち\cs{immediate}なしの\cs{write}と同じタイミング）まで遅延されるようになりました。

\epTeX と\eupTeX:
%
\begin{itemize}[nosep]
\item 素の(u)\pTeX はビルドされなくなりました。今後\code{ptex}, \code{uptex}コマンドは
  それぞれ\code{eptex}, \code{euptex}の互換モードを起動します。{\pTeX} toolsについても
  同様です（後述）。
\item 新プリミティブ：\cs{tojis}, \cs{ptextracingfonts}, \cs{ptexfontname}。
\item \cs{font}で新しいJIS/UCSシンタックスがサポートされました。
\end{itemize}

\LuaTeX:
%
\begin{itemize}[nosep]
\item ファミリ適用を許容したまま、数式文字のクラスを保持するための新プリミティブ
  \cs{variablefam}。
\item r2lアノテーション領域の改善。
\item エンジン共通の遅延\cs{special}（上述）。
\item {\LuaTeX} 1.17.0が5月にリリースされました：\pkg{socket}ライブラリはデフォルトでは
  無効化されました。新しいコマンドラインオプション\lopt{socket}または\lopt{shell-escape}%
  （\lopt{shell-restricted}ではありません）を利用すると\pkg{socket}が有効になります。
  また\pkg{mime}ライブラリは常に利用可能になりました。新しい関数\code{os.socketsleep}と
  \code{os.socketgettime}も常に利用可能です。その他、セキュリティの向上も図られました。
\end{itemize}

\MP: バグ修正を行いました。精度改善のため\code{svg->dx}と\code{svg->dy}は
\code{double}になりました。\code{mp\_begin\_iteration}が更新されました。
\code{mplib}のメモリリークが修正されました。

\pdfTeX:
%
\begin{itemize}[nosep]
\item \code{/Info}辞書を完全に省略するための新プリミティブ\cs{pdfomitinfodict}。
\item \code{/ProcSet}配列の省略をコントロールする新プリミティブ\cs{pdfomitprocset}：
  このパラメタの値が負のとき、または値がゼロで\pdfTeX がPDF~1.x出力を生成中の場合は
  \code{/ProcSet}が含められます。
\item \cs{pdfinterwordspaceon}下において、現在のフォントエンコーディングが
  \code{/space}文字をスロット32に持っている場合はそれが利用されます。そうでない場合は
  \code{/space}には（新規の）デフォルトフォント\code{pdftexspace}が用いられます。この
  デフォルトフォントは新プリミティブ\cs{pdfspacefont}によって上書きすることが可能です。
  この新手順は\cs{pdffakespace}でも用いられます。
\end{itemize}

\pTeX など：
%
\begin{itemize}[nosep]
\item 前述の通り、\code{ptex}は独自のバイナリではなく\code{eptex}の互換モードを
  起動するようになりました。
\item {\pTeX} tools（\prog{pbibtex}, \prog{pdvitype}, \prog{ppltotf}, \prog{ptftopl}）
  はそれぞれ\upTeX バージョンの対応ツールに統合され、互換モードで動作するようになりました。
\end{itemize}

\XeTeX: \cs{XeTeXupwardsmode}が有効になっている際の\cs{topskip}と\cs{splittopskip}の
計算に関するバグ修正と、上述のエンジン共通の遅延\cs{special}追加が行われました。

DVIPDFM$x$: pdfmark/bookmarkを作成する新オプション\lopt{pdfm-str-utf8}が追加されました。

{\BibTeX}u:
%
\begin{itemize}[nosep]
\item この\BibTeX 拡張は、オリジナルよりも遥かに強力な（Unicodeベースの）多言語
  サポートを備えた\BibTeX のほぼ完全上位互換プログラムです。\TL には数年前に
  取り込まれました。
\item 今年はCJK言語をサポートするための機能がさらに追加されました。また日本語
  組版用の\prog{(u)pbibitex}その他のプログラムと同様の拡張も行われました。
\end{itemize}

\KPS: Windows版と同様、Unix系プラットフォームでもファイルエンコーディング推定を
サポートしました。(\code{e})\code{p}(\code{la})\code{tex}と\code{pbibtex}で
有効になっています。

\prog{tlmgr}とインフラ：
%
\begin{itemize}[nosep]
\item macOSでのデフォルトをテキストモードに変更しました。
\item コアパッケージを先にインストールし、それ以外のパッケージのリトライは1回に
  なりました。
\item ディスクの空き容量が十分かどうか、簡易チェックを行うようになりました。
\end{itemize}

\MacTeX:
%
\begin{itemize}[nosep]
\item \MacTeX とそのバイナリディレクトリ\dir{universal-darwin}の要求は
  macOS 10.14以上になりました（Mojave, Catalina, Big~Sur, Monterey, Ventura）。
  Unix版の\prog{install-tl}でのみ利用可能な\dir{x86_64-darwinlegacy}バイナリ
  ディレクトリはmacOS 10.6（Snow~Leopard）以降をサポートしています。
\item \MacTeX のGUIパッケージに、macOS向けのHINT文書\footnote{\prog{hitex}や
  \prog{hilatex}エンジンで作成される、モバイル向け文書。詳細はHi\TeX の
  ウェブサイト（\url{https://hint.userweb.mwn.de/hint/hitex.html}）を参照して
  ください。}ビューア\prog{hintview}が追加されました。GUIパッケージはドキュメント
  フォルダはインストールしなくなりました。代わりに、新規ユーザのための短い
  \file{READ ME}と\prog{hintview}に関するページが追加されました。
\item DVDの\dir{Extra}ディレクトリ内の追加\TeX ソフトウェアは、ダウンロード
  サイトのリンクを含むドキュメントに置き換えられました。
\end{itemize}

プラットフォーム：
%
\begin{itemize}[nosep]
\item 前述の通り、新しい\dir{windows}バイナリディレクトリは64-bit Windowsバイナリを
  格納しています。
\item \dir{bin/win32}バイナリディレクトリは削除されました。32-bitと64-bitの両方を
  同時にサポートすることはできないためです。
\item \dir{i386-cygwin}バイナリディレクトリも削除されました。Cygwinがi386のサポートを
  終了したためです。
\end{itemize}

\subsubsection{2024}

エンジン共通の拡張（Knuthian {\TeX}, {\eTeX}, {\LuaTeX}を除く）：
%
\begin{itemize}[nosep]
\item \cs{output}と\cs{write}のブレースの不正利用によるクラッシュを防止。
\item 内部ループのわずかな最適化（いずれの変更もDavid Fuchs由来）。
\end{itemize}

\LuaTeX:
%
\begin{itemize}[nosep]
\item ファイル書き込み時のLuaレベルチェックを\TeX レベルチェックと同等に。
\item Lua変数\code{texconfig.trace\_extra\_newline}が設定されている場合、ログファイル
  の各マクロパラメタの間に改行を出力。2020--2023年はこれが規定の挙動でした。それ以前は、
  他のエンジンと同様このような空行は一切出力されませんでした。
\end{itemize}

\MP: 区間演算のためのMPFIライブラリが導入されました。
このライブラリは\lopt{numbersystem=interval}で有効化されます。

\pdfTeX:
%
\begin{itemize}[nosep]
\item ビッグエンディアンシステムにおけるテキスト抽出の信頼性向上。
\item 破損したPFB, FMT, PDFファイルに対するチェックの強化。
\item 異常なPDFのインクルードがあった場合に、破損したPDFを生成するのを抑止。
\item マニュアルを\LaTeX に変換し、校正も実施。ただし重要な更新はわずかです。
\end{itemize}

\epTeX, \eupTeX:
%
\begin{itemize}[nosep]
\item 新しいシンプルなエンコーディング変換ユーティリティ\cmd{ptekf}。
\item \cmd{eptex}の独立バイナリを廃止。このコマンドは、今後は\cmd{euptex}のレガシー
  エンコーディングモードを起動するようになります。
\end{itemize}

\XeTeX: BMP範囲外のUnicode文字を含むファイル名をサポート。

DVIPDFM$x$:
%
\begin{itemize}[nosep]
\item \pdfTeX と同じ方法でタイムゾーンオフセットを計算。
\item 新しいAdobe-Japan1-UCS2 CMapに対応するために異体字セレクタを処理。
\item (u)\pTeX のため仮想フォントのマルチバイト文字をOFMフォントにフォールバック。
\end{itemize}

\KPS:
%
\begin{itemize}[nosep]
\item Lua\LaTeXTeX に向けて、\code{TEXMF}(\code{SYS})\code{VAR}以下への書き出しも許可するべく
  ファイル名の拡張された安全性チェックをサポート。これにともない、新しい関数と対応する
  \cmd{kpsewhich}のオプションを追加。
\item 新しい環境変数\var{TEXMF\_OUTPUT\_DIRECTORY}を追加（従来の\var{TEXMFOUTPUT}とは別）。
  これによりサブプログラムが\lopt{output-directory}設定にアクセスできるようになります。
\end{itemize}

CWEB:
%
\begin{itemize}[nosep]
\item バックエンド\TeX エンジンとして\LuaTeX をサポート。
\item ブレークポイントのない行におけるバッファオーバーフローを修正。
\end{itemize}

\prog{tlmgr}:
%
\begin{itemize}[nosep]
\item バグ報告情報にアクセスするための新アクション\code{tlmgr bug}。
\item LWPサポートを強化するため（特にmacOSで重要）、独自のルート証明書バンドルをすべての
  プラットフォームで利用。
\item ローカルの\TL より古いリモートリポジトリ（つまりミラーの状態）を検出した場合は
  アップデートを行わないことで、誤ったパッケージ削除を防止。
\item \ConTeXt の紙面サイズ設定をサポート。
\item ミラーリポジトリ（mainとtlcontrib）用のtlpdbsakeバックアップを除去。
\end{itemize}

\MacTeX: 最新版のGhostscript 10.02.1を同梱。4つのGUIプログラムと最新\TL を収録。バイナリは
macOS 10.14（Mojave, 2018）以降のサポートを維持（いつも通り、古いMacは\TL に含まれる
\pkg{x86\_64-darwinlegacy}バイナリではサポートされていますが、\MacTeX ではサポート外です）。

\subsection{現在：2025}
\label{sec:tlcurrent}

エンジン共通の拡張（Knuthian \TeX を除く）：
%
\begin{itemize}[nosep]
\item すべてのフォーマット（plain \TeX と\LaTeX の両方）でPDF-1.7を生成するように変更。
  以前は1.5でした。印刷所などのために、古いバージョンを出力したい場合があり得ます。
  そのような場合はいくつか方法があり、例えばPDF-1.4を出力したい場合は次のようにします：
  \begin{itemize}[nosep]
  \item \cmd{ps2pdf14}を\TeX が生成したPDFに対して実行します。このシンプルなラッパーは
    Ghostscriptに含まれています。それ以外の外部ソフトウェアも同様の処理が可能です。
  \item \LaTeX のPDFバックエンドを用いる場合：\verb|pdf_version_gset:n{1.4}|
  \item \pdfTeX: \verb|\pdfmajorversion=1 \pdfminorversion=4|
  \item \LuaTeX: \verb|\pdfvariable majorversion=1 \pdfvariable minorversion=4|
  \item \XeTeX: \verb|\special{pdf:majorversion:1}\special{pdf:minorversion:4}|
  \end{itemize}
\item \TeX が\sopt{halt-on-error}オプションが原因で終了した場合、ヘルプメッセージを
  ログファイルに書き出します。これはデフォルトの挙動と一致します。
\item 新しいプリミティブパラメータ\cs{ignoreprimitiveerror}：1に設定された場合、
  ``\code{Infinite glue shrinkage found in box being split}''のエラーは警告に
  下げられ、プログラムの終了ステータスが失敗に変更されません。それ以外の数値は
  将来的な変更のために予約されています（背景は\href{https://www.latex-project.org/%
  news/latex2e-news/ltnews39.pdf}{{\LaTeX} News 39}の``Enhancements to the new
  mark mechanism''セクション）。
\item フォントを2048\,pt以上に設定した際にはエラーメッセージを出力します。以前は
  （手当されることのない）算術オーバーフローまたはユーザの指定値の暗黙的変更が
  行われていました。
\end{itemize}

\LuaTeX:
%
\begin{itemize}[nosep]
\item LuaJIT 2.1.1736781742。
\item 新しい\code{luaffi}ライブラリ、aarch64のサポート。
\item \cs{tracinglostchars=4}指定時には、組版時に必要になるのを待たずにグリフ
  処理時に欠落文字について警告を出します。\cs{tracinglostchars=5}ではこの
  \kenten{早めの}診断情報をエラーにします。
\item 新しいプリミティブ\cs{mathemptydisplaymode}：1に設定された場合、
  ディスプレイ数式の前の空の段落は無視されます。デフォルトでは、ディスプレイ数式
  前のdirノードを含む段落は無視されません。これは伝統的な挙動と一致します。
\item PNG処理時、今後はマスクにattrは設定されません。この削除変更について要望を
  受けた場合には\code{makeattr}機能を追加することは可能ですが、そのような場合は
  画像ではなく適切なPDFを埋め込むことを推奨します（その方が堅牢です）。
\item 即時代入時にトークン結合子を処理。
\item 先述のエンジン共通変更。
\end{itemize}

\pdfTeX:
%
\begin{itemize}[nosep]
\item 新しい\cs{pdfptexuseunderscore}プリミティブ：さまざまな辞書エントリで
  \code{.}の代わりに\code{\_}を使用するようになります。例えば\code{%
  PTEX.Fullbanner}は\code{PTEX\_Fullbanner}になります。
\item フォントが変更されたからといって本物のスペースを省略しないように
  なりました。
\item 単語間スペースをoverfullした行で検出した際は上限値を増加させます。
\item \cs{maxdimen}を超過する代わりに、画像内に埋め込まれた$1\times 1$のような
  極小解像度を無視します。
\item 先述のエンジン共通変更。
\end{itemize}

\epTeX, \eupTeX
%
\begin{itemize}[nosep]
\item 新しい\cs{kcatcode}（\code{modifier}: 20, \code{latin\_ucs}: 14）により
  複数のコードポイントをもつ結合文字、Unicodeラテン文字および16-bit OFM
  Level-0をサポート。
\item 先述のエンジン共通変更。
\end{itemize}

\XeTeX: 先述のエンジン共通変更。

DVIPDFM$x$:
%
\begin{itemize}[nosep]
\item \cmd{extractbb}実行ファイルは\prog{dvipdfmx}へのリンクではなく、独立に
  メンテナンスされるスクリプトとなりました。
\item 仮想フォントを介した文字結合のため\upTeX の新しいエンコーディングをサポート。
\item 127個以上のグリフを持つTrueTypeフォント埋め込みの修正。
\item 画像を複数回読み込む際の問題の修正。
\end{itemize}

CWEB:
%
\begin{itemize}[nosep]
\item \prog{cweave}と\prog{ctwill}に混合ステートメントのための新しい\code{+F}%
  オプションを追加。
\item PDFのブックマークページとtable-of-contentsを同期。
\item Martin Ruckert氏の手法によるインデックスソートの高速化。
\item names-of-the-sectionsをソートするための新しいマクロ\cs{9}。
\item \prog{ctwill-proofsort}のソートアルゴリズムを改善。
\item \prog{ctwill}フォーマットでnames-of-the-sectionsを出力。
\end{itemize}

Dvips: 仮想フォントを介した文字結合のため\upTeX の新しいエンコーディングをサポート。

\KPS: \cmd{kpsewhich}に2つ以上のファイル検索が指定された場合、ファイルが見つからない
  場合には空行を出力。

\prog{tlmgr}:
%
\begin{itemize}[nosep]
\item \cmd{tlmgr info}：与えられたパッケージのもつファイルを報告するだけの
  新オプション\lopt{only-files}。
\item \cmd{tlmgr search}：新オプション\lopt{json}。
\end{itemize}

プラットフォーム：
%
\begin{itemize}[nosep]
\item CentOS 7のサポートが2024年7月30日に（セキュリティアップデートも含めて）終了
  したことにともない、\pkg{x86\_64-linux}バイナリはAlma Linux 8でビルドされるように
  なりました。我々はこのことを残念に思っていますが、他の代替が見つかりませんでした。
  古いシステム向けのバイナリは利用可能です（\url{https://tug.org/texlive/custom-%
  bin.html}を参照）。
\item \TL は\file{scripts-targets.lst}ファイルの提供を開始します。このファイルは
  シンボリックリンクの貼られたスクリプトのリンク名とターゲットを含んでおり、
  ディストリビューション作成者の利便性が念頭にあります。このファイルは\TL の
  ソースディレクトリ\dir{Build/source/texk/texlive/linked_scripts}にあります。
  同ディレクトリに以前より長く存在するファイル\file{scripts.lst}のメンテナンスは
  継続されます。
\end{itemize}

Windows: \prog{uninstall-windows}や\prog{runscript}で使用されていたVisual Basicは
Powershellに置き換えられました。これはVBはWindows~11ではオプショナルであるためです。

\MacTeX: 今年も\MacTeX-2025はmacOS 10.14（Mojave, 2018）以上でArmとIntelの両方の
プロセッサをサポートします。これによってインストールされるものは以下の通りです。
%
\begin{itemize}[nosep]
\item \TL 2025。
\item Ghostscript-10.04.0。
\item \pkg{dvisvgm}の\pkg{libgs}と\pkg{mutool}。従来は\pkg{dvisvgm}サポートはX11を
  必要としていましたが、2025年にこの要件は削除され、\pkg{dvisvgm}はX11の有無に
  かかわらず動作するようになりました。
\item HintView 2.0：最新のHi\TeX に追加された色拡張にも対応。
\item Asymptote：macOS 10.11（Big Sur, 2020）以上が必要。
\item {\TeX}Shop 5.49：作文ツールなど最新のApple Intelligence機能をサポート。
\end{itemize}

\subsection{未来}

私たちはこれからも新しいバージョンのリリースを続けるつもりで、より多くの
ドキュメントとプログラム、これまで以上に良質で品質の保証されたマクロと
フォントのツリー、その他\TeX に関連するあらゆる成果物を提供していく
つもりです。こうした仕事はすべてボランティアが余暇を使用して行っており、
そのために常にやるべきことが残っています。ぜひ\url{https://tug.org/%
texlive/contribute.html}を読んで、コントリビューションを検討してください。

\begin{samepage}
間違いの指摘や提案、ヘルプの要望は下記にご連絡ください。メーリングリストを
購読せずに投稿しても構いませんが、英語で書いてください。
%
\begin{quote}
\email{tex-live@tug.org} \\
\url{https://tug.org/texlive}
\end{quote}
%
\medskip
\noindent \textit{Happy \TeX ing!}
\end{samepage}

\end{document}
