帰ってきた「しっぽのさきっちょ」

しっぽのさきっちょ: 2017-10-01 付 (2017-10-02 更新)

そうだ, TeX Live 2017 (for Windows) をインストールしよう!

no extension

(あれ? 前にも似たようなタイトルで記事を書いたような…)

最近 $\mathrm{\TeX}$ 絡みの記事を書いてる関係で『LaTeX2ε美文書作成入門』を読み返しているのだが,久しぶりに $\mathrm{\TeX}$ をいじってみようかな,と思い立ったり。 私の環境は TeX Live 2014 のままだったので,この機会にいったん環境を削除して TeX Live 2017 を入れ直すことにした。

TeX Live のインストール

Windows の場合は,以下の場所からインストーラ install-tl-windows.exe を取得する。

For typical needs, we recommend starting the TeX Live installation by downloading install-tl-windows.exe for Windows (15mb), or install-tl-unx.tar.gz (4mb) for everything else.
via Installing TeX Live over the Internet

そのままインストーラを実行すればいいのだが,私の環境では Explorer からの起動では途中で処理が失敗してしまった。 私のようにうまくいかない場合は,コマンドプロンプト(NYAGOS でもオッケ)から起動すれば上手くいく。

$ install-tl-windows.exe

インストーラを起動して最初の画面がこれ。

Install TeX Live 2017 (1)
Install TeX Live 2017 (1)

特に理由がなければ “Simple install (big)” を選択すればいいようだ。 まぁ simple と言いつつ全部入ってしまうんだけど(笑)1

ちなみに TeX Live の内容はかなり巨大で,全てをインストールするとなると相当な時間がかかる。 インストールが終わるまで待っているのは時間の浪費なので,他の作業のついでにバックグラウンドで行うようにするのがいいだろう。

“Next” ボタンを押して次の画面へ。

Install TeX Live 2017 (2)
Install TeX Live 2017 (2)

さらに “Install” ボタンを押して次の画面へ。

Install TeX Live 2017 (3)
Install TeX Live 2017 (3)

この画面でファイルを展開し,以下の画面を起動する。 この画面が本当のインストーラである。

Install TeX Live 2017 (4)
Install TeX Live 2017 (4)

既定では「既定リポジトリを変更」のチェックが外れているが,リポジトリを手動で選択できるようチェックを入れる。

「次へ」ボタンを押して次の画面へ。

Install TeX Live 2017 (5)
Install TeX Live 2017 (5)

この画面でリポジトリを選択する。 日本国内であれば “Japan” のリポジトリのどれかを選択すればいいだろう。

「次へ」ボタンを押して次の画面へ。

Install TeX Live 2017 (6a)
Install TeX Live 2017 (6a)

この画面でインストール先のフォルダを決定する。 既定は C:\texlive\2017 フォルダだが,変更するなら「変更」ボタンを押して以下のプロンプトでインストール先のフォルダを変更できる。

Install TeX Live 2017 (6b)
Install TeX Live 2017 (6b)

インストール先を決定したら「次へ」ボタンを押して次の画面へ。

Install TeX Live 2017 (7)
Install TeX Live 2017 (7)

この画面では各種オプションを指定する。 分からなければ規定値のままでも特に問題はない。

「次へ」ボタンを押して次の画面へ。

Install TeX Live 2017 (8)
Install TeX Live 2017 (8)

これまでの指定内容で問題なければ「導入」ボタンを押してインストール処理を開始する。

Install TeX Live 2017 (9a)
Install TeX Live 2017 (9a)

上述したようにインストール処理が完了するまでにかなりの時間がかかる。 私の場合は5時間以上もかかった。 休日だったからよかったものの,インストールを開始してから朝食の準備を始めて,掃除・洗濯を終わらせて昼食を食べてもまだ終わらなかったほどだ(笑)

処理が完了すると以下の表示になる。

Install TeX Live 2017 (9b)
Install TeX Live 2017 (9b)

これで画面下にある「終了」ボタンを押して画面を閉じればインストール完了である。

正常にインストールすれば環境変数 PATH にインストール先フォルダが追加される。 たとえば ,インストール先が C:\texlive\2017 なら C:\texlive\2017\bin\win32PATH に追加される2

この状態で uplatex コマンドを起動して動作確認をする。

$ uplatex.exe -v
e-upTeX 3.14159265-p3.7.1-u1.22-161114-2.6 (utf8.uptex) (TeX Live 2017/W32TeX)
kpathsea version 6.2.3
ptexenc version 1.3.5
Copyright 2017 D.E. Knuth.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the e-upTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the e-upTeX source.
Primary author of e-upTeX: Peter Breitenlohner.

これで無問題。

64ビット版

TeX Live の実行モジュールには64ビット版が存在するようだ。 インストーラが別途用意されているのではなく, zip ファイル(tl-win64.zip)が配布サイトにひっそりと置かれている。 日本国内の ring サーバでは以下の場所にある。

取得した zip の中身をインストール先フォルダの直下に展開すればよい。 インストール先フォルダが C:\texlive\2017 なら C:\texlive\2017\bin\win64 フォルダに展開されるはずである。 この C:\texlive\2017\bin\win64 フォルダへ PATH を通せばいいのだが,自動ではやってくれないので,手動で環境変数 PATH を設定する。

32ビット版のインストールが正しく終了していれば PATH に32ビット版モジュールへのパス C:\texlive\2017\bin\win32 がセットされているはずだが,この値を変更するのではなく,32ビット版と64ビット版の両方に PATH が通るようにする(全てのモジュールが64ビット版に置き換えられてるわけではないらしい)。

SET PATH=...C:\texlive\2017\bin\win64;C:\texlive\2017\bin\win32;...

ここまで完了したら以下のコマンドを必ず実行して最新状態にしておく。

$ fmtutil-sys --all

では,32版と同じように uplatex コマンドを起動して動作確認をしてみよう。

$ uplatex.exe -v
e-upTeX 3.14159265-p3.7.2-u1.22-170924-2.6 (utf8.uptex) (TeX Live 2017/W32TeX)
kpathsea version 6.2.3
ptexenc version 1.3.5
Copyright 2017 D.E. Knuth.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the e-upTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the e-upTeX source.
Primary author of e-upTeX: Peter Breitenlohner.

あれ? 微妙にバージョンが違わね? まぁこっちが新しいならいいか。

tlmgr によるアップデート

TeX Live は多数のパッケージで構成され,かつ常にメンテナンスされている。 TeX Live の各パッケージを更新するには tlmgr コマンド3 を使う。

tlmgr コマンドでインストールしたパッケージを更新するには tlmgr update コマンドを起動する。 以下は全パッケージを更新する場合。

$ tlmgr update --self --all
tlmgr.pl: package repository ftp://ftp.kddilabs.jp/CTAN/systems/texlive/tlnet (verified)
tlmgr.pl: saving backups to C:/texlive/2017/tlpkg/backups
[1/9, ??:??/??:??] update: animate [3112k] (45378 -> 45431) ... done
[2/9, 00:30/02:12] update: etoc [1225k] (45380 -> 45429) ... done
[3/9, 00:41/02:09] update: luatexko [255k] (44141 -> 45434) ... done
[4/9, 00:48/02:23] update: media9 [6692k] (45129 -> 45432) ... done
[5/9, 01:16/01:32] update: ocgx2 [14k] (45337 -> 45430) ... done
[6/9, 01:21/01:38] update: xetexko [282k] (43173 -> 45435) ... done
[7/9, 01:25/01:40] update: xltabular [71k] (45412 -> 45433) ... done
[8/9, 01:28/01:43] auto-install: amscls-doc (45436) [2080k] ... done
[9/9, 01:39/01:39] update: collection-langenglish [1k] (45076 -> 45436) ... done
running mktexlsr ...
done running mktexlsr.
running mtxrun --generate ...
done running mtxrun --generate.
tlmgr.pl: package log updated: C:/texlive/2017/texmf-var/web2c/tlmgr.log

ちなみに tlmgr コマンド自身を手動で更新するには以下のインストーラをダウンロードして実行する。

インストールされているパッケージの情報を確認するには tlmgr info コマンドを使う。 たとえば $\mathrm{Lua\TeX}$-ja なら以下の通り。

$ tlmgr info luatexja
package:     luatexja
category:    Package
shortdesc:   Typeset Japanese with Lua(La)TeX
longdesc:    The package offers support for typesetting Japanese documents with LuaTeX. Either of the Plain and LaTeX2e formats may be used with the package.
installed:   Yes
revision:    45216
sizes:       src: 477k, doc: 3889k, run: 1725k
relocatable: No
cat-version: 20170904.0
cat-date:    2017-09-04 14:48:49 +0200
cat-license: bsd
cat-topics:  japanese luatex class
collection:  collection-langjapanese

texmf.cnf について

TeX Live の設定は texmf.cnf ファイルに記述されている。 texmf.cnf の場所を確認するには kpsewhich コマンドを使う。

$ kpsewhich -all texmf.cnf
c:/texlive/2017/texmf.cnf
c:/texlive/2017/texmf-dist/web2c/texmf.cnf

TeX Live の設定を変更するにはこれらのファイルを変更すればいいんだけど,ファイルの中身を見るに,怖くてあまり触りたくない。 そこで texmf-local/web2c フォルダを作ってそこに空の texmf.cnf ファイルを放り込む。

$pwd
C:\texlive\2017
$ cd ..
$ mkdir texmf-local
$ cd texmf-local
$ mkdir web2c
$ cd web2c
$ echo>texmf.cnf
$ kpsewhich -all texmf.cnf
c:/texlive/texmf-local/web2c/texmf.cnf
c:/texlive/2017/texmf.cnf
c:/texlive/2017/texmf-dist/web2c/texmf.cnf

texmf-local/web2c/texmf.cnf はインストール先フォルダのひとつ上のフォルダに作られる点に注意。 このファイルは自前で作ったファイルなので好きに弄っていいわけだ。 ちなみに texmf.cnf の設定内容の優先順位は kpsewhich コマンド実行結果の表示順のとおり4。 つまり c:/texlive/2017/texmf-dist/web2c/texmf.cnf の内容を書き換えたければ,書き換えたい部分を c:/texlive/texmf-local/web2c/texmf.cnf にコピペして弄ればいいのだ。

では,いくつか設定変更を行う。 そうそう。 もし設定変更で構成が変わったら mktexlsr を実行しておくこと。

$ mktexlsr
mktexlsr: Updating C:/texlive/texmf-local/ls-R...
mktexlsr: Updated C:/texlive/texmf-local/ls-R.
mktexlsr: Updating C:/texlive/2017/texmf-config/ls-R...
mktexlsr: Updated C:/texlive/2017/texmf-config/ls-R.
mktexlsr: Updating C:/texlive/2017/texmf-var/ls-R...
mktexlsr: Updated C:/texlive/2017/texmf-var/ls-R.
mktexlsr: Updating C:/texlive/2017/texmf-dist/ls-R...
mktexlsr: Updated C:/texlive/2017/texmf-dist/ls-R.
mktexlsr: Done.

外部コマンドの自動実行(Restricted Shell Escape)

TeX Live のコマンドを実行する際,あるコマンドから別のコマンドを自動的に実行する仕組みがある。 しかし,勝手にどんなコマンドでも実行できる,というわけにはいかないので,実行できるコマンドをあらかじめ指定しておく。 自動実行可能な外部コマンドの一覧を指定するのが shell_escape_commandsTeX Live 2017 では以下のような設定になっている。

shell_escape_commands = \
bibtex,bibtex8,\
extractbb,\
gregorio,\
kpsewhich,\
makeindex,\
repstopdf,\
texosquery-jre8,\

設定状態は kpsewhich コマンドでも確認できる。

$ kpsewhich -var-value=shell_escape_commands
bibtex,bibtex8,extractbb,gregorio,kpsewhich,makeindex,repstopdf,texosquery-jre8,

実はこれには日本語用の pbibtex などが含まれていない。 ちなみに,いわゆる「角藤版」と呼ばれる W32TeX では以下のように設定されているらしい。

shell_escape_commands = \
bibtex,pbibtex,jbibtex,repstopdf,epspdf,extractbb,\
makeindex,mendex,kpsewhich

そこで texmf-local/web2c/texmf.cnf ファイルにこの記述を追加して設定を上書きする。 一応 kpsewhich コマンドでも確認しておこう。

$ kpsewhich -var-value=shell_escape_commands
bibtex,pbibtex,jbibtex,repstopdf,epspdf,extractbb,makeindex,mendex,kpsewhich

よしよし。

ところで shell_escape_commands の設定はセキュリティ上のリスクを伴うものであることをお忘れなく。 過去には shell_escape_commands に関する脆弱性問題もあったようだ。

文字エンコーディングの自動判別

$\mathrm{p\TeX}$ の処理系には,入力テキストの文字エンコーディングを自動判別する機能があり texmf.cnf の以下の記述により有効になっている。

% Guess input encoding (SJIS vs. Unicode, etc.) in pTeX and friends?
% Default is 0, to not guess.
guess_input_kanji_encoding = 1

これはこれで問題ないのだが,自動判別機能は完璧ではないので間違うことも稀にある。 少なくとも $\mathrm{up\TeX}$ 系は入力が UTF-8 固定なので自動判別機能は不要である。

そこで,またまた texmf-local/web2c/texmf.cnf ファイルに追記して以下のように設定を書き換える。

guess_input_kanji_encoding.uptex = 0
guess_input_kanji_encoding.uplatex = 0

一応 kpsewhich コマンドで設定を確認しておこう。

$ kpsewhich -var-value=guess_input_kanji_encoding -progname=platex
1
$ kpsewhich -var-value=guess_input_kanji_encoding -progname=uplatex
0

$\mathrm{p\LaTeX}$ と $\mathrm{up\LaTeX}$ で設定が異なることが確認できた。

漢字の埋め込み設定

DVI から PDF に変換するドライバ dvipdfmx 用に漢字の埋め込み設定をしておく。 設定には updmap コマンドを使う。

まずは設定状態を確認する。

$ kanji-config-updmap status
CURRENT family for ja: ipaex
Standby family : ipa
Standby family : ms
Standby family : yu-win10

この状態で,たとえば IPAex 書体から游書体に切り替えたいのであれば以下のコマンドを実行すればよい5。 本当に変更されると困るので --dry-run オプション付きで。

$ kanji-config-updmap-sys --dry-run yu-win10
Setting up ... ptex-yu-win10.map
updmap --sys --quiet --nomkmap --nohash -setoption jaEmbed yu-win10
updmap --sys --quiet --nomkmap --nohash -setoption jaVariant ""
updmap --sys

ちなみにフォントの埋め込みを行わない場合は nofont を指定する。

$ kanji-config-updmap-sys --dry-run nofont
Setting up ... ptex-noEmbed.map
updmap --sys --quiet --nomkmap --nohash -setoption jaEmbed noEmbed
updmap --sys --quiet --nomkmap --nohash -setoption jaVariant ""
updmap --sys

さらに --jis2004 オプションを付けて起動すると字形が JIS X 0213:2004 に対応したものになるのだが

$ kanji-config-updmap-sys --dry-run --jis2004 ipaex
Setting up ... ptex-ipaex.map
updmap --sys --quiet --nomkmap --nohash -setoption jaEmbed ipaex
updmap --sys --quiet --nomkmap --nohash -setoption jaVariant -04
updmap --sys

IPA/IPAex 書体, MS, Windows 用の游書体は JIS X 0213:2000 (あるいはそれ以前)または JIS X 0213:2004 のどちらかの字形しか持っていないため --jis2004 を付けても意味がない。 --jis2004 オプションが有効なのは macOS 用の游書体(yu-osx),ヒラギノ書体(hiragino-pron),モリサワ書体(morisawa-pr6n),小塚書体(kozuka-pr6, kozuka-pr6n)である。

ちなみに IPAex フォントは2015年のバージョン3リリースで JIS X 0213:2004 の字形に対応しているらしい(異体字を含む)。

ところで游書体は Windows 環境では 8.1 から標準搭載されているが, Office ユーザ向けにフォントパックが公開され Windows 7 でも利用可能になっている。

試しに何かタイプセットしてみる

ちうわけでいつものあの文書ですね。

いやぁ,いい加減これも内容が古すぎてアレなのだが,いまさら書き直す気にはならないし,すっかり $\mathrm{\LaTeX}$ 動作テスト用の文書になってしまった。 早速リポジトリをローカルに clone して,いきなり latexmk を起動する。

$ latexmk charset.tex
...
Latexmk: All targets (charset.dvi charset.pdf) are up-to-date

よし! ちゃんと動いたな。 ついでに PDF を PDF/A に変換しておこう。

$ ps2pdf14 -dPDFA -dPDFACompatibilityPolicy=1 -sProcessColorModel=DeviceCMYK charset.pdf charset-pdfa.pdf

生成したファイルをチェックする。

Output PDF/A
Output PDF/A

よしよし。 ちゃんと PDF/A になってるな。

ブックマーク

参考図書

photo
[改訂第7版]LaTeX2ε美文書作成入門
奥村 晴彦 黒木 裕介
技術評論社 2017-01-24
評価

LaTeX2e辞典~用法・用例逆引きリファレンス (DESKTOP REFERENCE) 公共政策入門 ミクロ経済学的アプローチ Rで楽しむ統計 (Wonderful R 1) 岩波データサイエンス Vol.5 数学ガールの秘密ノート/積分を見つめて (数学ガールの秘密ノートシリーズ) 岩波データサイエンス Vol.6 独習 LaTeX2ε 具体例から学ぶ 多様体 【改訂第3版】基礎からわかる情報リテラシー はじめて学ぶリー群 ―線型代数から始めよう

ついに第7版が登場。紙の本で買って常に側に置いておくのが吉。

reviewed by Spiegel on 2017-09-27 (powered by G-Tools)


  1. 日本語組版に必要なパッケージをインストールするには “Simple install (big)” が手っ取り早い。 TeX Live のパッケージ群を熟知している方なら “Custom install” でもいいかもしれないが。 [return]
  2. Windows には「システム環境変数」と「ユーザ環境変数」の2つがあって,ユーザに固有の環境変数は「ユーザ環境変数」のほうに設定できるようになっている。環境変数 PATH は「システム環境変数」と「ユーザ環境変数」の両方に存在し,両方を足し合わせたものが実際の PATH として機能する。私が以前にインストールした TeX Live 2014 では PATH を「システム環境変数」のほうにセットしていたが, 2017 では「ユーザ環境変数」のほうにセットしているようだ。私のように TeX Live を入れ直したり,バージョン別に TeX Live を使い分けている人は環境変数に注意した方がいいだろう。 [return]
  3. Windows 環境では tlmgr コマンドはバッチファイルで提供される。実体は Perl スクリプトである。 [return]
  4. texmf.cnf の優先順位に関する完全なリストは kpsewhich -var-value=TEXMFCNF コマンドから取得できる。 [return]
  5. Windows 環境でフォントを切り替える場合は kanji-config-updmap コマンドではなく kanji-config-updmap-sys コマンドを使わないとうまくいかないようだ。ちなみに -sys 付きのコマンドではシステム設定を変更する。 texmf-local フォルダに環境をまるっとコピーしたらいけるかな? 試す気はないが。 [return]