TeX Live 2022 に更新後 .sty が見えないことへの対処

背景

TeX Live を 2019 から 2022 にアップデートしたところ,TeX Live に含まれていない手作業で texmf-local に追加していたはずの .sty が見えなくなりました。 すなわち,次のエラーによってタイプセットできなくなりました。

! LaTeX Error: File `FILENAME.sty' not found.

ここで,TeX Live 2022 における TeXWorks のパスの確認や mktexlsr などは TeX Live 2019 と同様に行ったはずでした。

目的

TeX Live 2022 にアップデートしたのちに,手作業で追加していた .sty が見えなくなったことに対し,見えるようにします。 本来的な解決ではなく,対症療法です

前提

  • TeX Live のインストールから使用までは経験がある。
  • 手作業でパッケージを導入していて(texmf-localディレクトリを使っている),mktexlsr がわかる。
  • TeX Live をインストーラによってインストールした。
  • Windows 環境である。

内容

準備

次を調べてください。

  • アップデート前(ここでは 2019)で手作業で追加していた .sty が置かれているディレクトリ。
    • 私の環境では C:\texlive\texmf-local\tex\latex。

通常の操作

次の通りに作業してください。

  1. 「C:\texlive\2022」を開く。
  2. 管理者権限のもとテキストエディタで「texmf.cnf」を開く。管理者権限で開く方法がわからなければ,「texmf.cnf」をデスクトップなどにコピーしてから開く。
  3. TEXMFLOCAL = $SELFAUTOPARENT/texmf-localと書かれた行を探し出し,TEXMFLOCAL = [アップデート前(ここでは 2019)で手作業で追加していた .sty が置かれているディレクトリの親ディレクトリのうちtexmf-localまで]と書き換える。
    • 私の環境では TEXMFLOCAL = C:/texlive/texmf-local
    • ¥ではなく/に直す。
  4. 上書き保存するをデスクトップなどにコピーしてから開いていた場合は,元のフォルダに上書きコピーする。
  5. mktexlsrを実行する。

TeXWorks を再起動して,タイプセットを試みてください。 今度はアップデート前(ここでは 2019)で手作業で追加していた .sty も見つかるはずです。

texmf.cnfを(不安などの理由で)触りたくない場合の操作

次の通りに作業してください。

  1. 「アップデート前(ここでは 2019)で手作業で追加していた .sty が置かれているディレクトリ」を開く。
  2. 別のウィンドウで「C:\texlive\2022\texmf-local\tex\latex」を開く。
  3. 「アップデート前(ここでは 2019)で手作業で追加していた .sty が置かれているディレクトリ」にあるフォルダ・ファイルを「C:\texlive\2022\texmf-local\tex\latex\local」へコピーする。
  4. mktexlsrを実行する。

TeXWorks を再起動して,タイプセットを試みてください。 今度はアップデート前(ここでは 2019)で手作業で追加していた .sty も見つかるはずです。

詳細

本来,C:\texlive\texmf-local はリリースに依らずに適用したいローカルなフォント・マクロを配置するディレクトリのはずです。 したがって,TeX Live を更新したからといってこのような問題が起こることは本来ないはずです。実際,TeX Live 2022 のマニュアルにもそうあります(3.4.6 ローカルおよび個人用のマクロを利用する)1

したがって,私の環境や設定に何か問題がある可能性が高いのですが,とりあえず動かしたいというのが現状です。 この記事は,偶然にも同様の事象でお困りのかたに向けて書きました。

はじめは mktexlsr が不完全なのではと疑いました。 TeX Live 2022 導入後の mktexlsr を眺めると次のようでした。

C:\WINDOWS\system32>mktexlsr
mktexlsr: Updating C:/texlive/2022/texmf-local/ls-R...
mktexlsr: Updated C:/texlive/2022/texmf-local/ls-R.
mktexlsr: Updating C:/texlive/2022/texmf-config/ls-R...
mktexlsr: Updated C:/texlive/2022/texmf-config/ls-R.
mktexlsr: Updating C:/texlive/2022/texmf-var/ls-R...
mktexlsr: Updated C:/texlive/2022/texmf-var/ls-R.
mktexlsr: Updating C:/texlive/2022/texmf-dist/ls-R...
mktexlsr: Updated C:/texlive/2022/texmf-dist/ls-R.
mktexlsr: Done.

texf-local が C:/texlive/2022/ の下にあります。 これはかなり疑問です。 C:/texlive/2019/にはありませんでした。

ここで,どこを見ているかを疑って調べてみました。

C:\WINDOWS\system32>kpsewhich -var-value TEXMFLOCAL
C:/texlive/2022/texmf-local

したがって,対症療法として texmf-local の場所を指定することにしました。 C:\texlive\2022\texmf.cnf は,次のように書かれており安心して書き換えられます。

% This texmf.cnf file should contain only your personal changes from the
% original texmf.cnf (for example, as chosen in the installer).

ファイルを検索すると C:\texlive\2022\texmf-dist\web2c\texmf.cnf も見つかりますが,こちらは次のように書かれていますので書き換えるべきではありません。

% If you modify this original file, YOUR CHANGES WILL BE LOST when it is
% updated.  Instead, put your changes -- and only your changes, not an
% entire copy! -- in ../../texmf.cnf.  That is, if this file is
% installed in /some/path/to/texlive/2022/texmf-dist/web2c/texmf.cnf,
% put your custom settings in /some/path/to/texlive/2022/texmf.cnf.
% (Below, we use YYYY in place of the specific year.)

書き換えたのちにはめでたく次のようになりました。

C:\WINDOWS\system32>kpsewhich -var-value TEXMFLOCAL
C:/texlive/texmf-local
C:\WINDOWS\system32>mktexlsr
mktexlsr: Updating C:/texlive/texmf-local/ls-R...
mktexlsr: Updated C:/texlive/texmf-local/ls-R.
mktexlsr: Updating C:/texlive/2022/texmf-config/ls-R...
mktexlsr: Updated C:/texlive/2022/texmf-config/ls-R.
mktexlsr: Updating C:/texlive/2022/texmf-var/ls-R...
mktexlsr: Updated C:/texlive/2022/texmf-var/ls-R.
mktexlsr: Updating C:/texlive/2022/texmf-dist/ls-R...
mktexlsr: Updated C:/texlive/2022/texmf-dist/ls-R.
mktexlsr: Done.

さらに,不安なかた向けにはすでに指定されているディレクトリにコピーするというさらなる対症療法も載せておきました。

参考


  1. 2022-06-22。 ↩︎

  2. 2022-06-22。 ↩︎

  3. 2022-06-22。 ↩︎

  4. 2022-06-22。 ↩︎