そうだ, TeX Live 2017 (for Windows) をインストールしよう!
(あれ? 前にも似たようなタイトルで記事を書いたような…)
最近 $\mathrm{\TeX}$ 絡みの記事を書いてる関係で『LaTeX2ε美文書作成入門』を読み返しているのだが,久しぶりに $\mathrm{\TeX}$ をいじってみようかな,と思い立ったり。 私の環境は TeX Live 2014 のままだったので,この機会にいったん環境を削除して TeX Live 2017 を入れ直すことにした。
TeX Live のインストール
Windows の場合は,以下の場所からインストーラ install-tl-windows.exe
を取得する。
そのままインストーラを実行すればいいのだが,私の環境では Explorer からの起動では途中で処理が失敗してしまった。 私のようにうまくいかない場合は,コマンドプロンプト(NYAGOS でもオッケ)から起動すれば上手くいく。
$ install-tl-windows.exe
インストーラを起動して最初の画面がこれ。
特に理由がなければ “Simple install (big)” を選択すればいいようだ。 まぁ simple と言いつつ全部入ってしまうんだけど(笑)1
ちなみに TeX Live の内容はかなり巨大で,全てをインストールするとなると相当な時間がかかる。 インストールが終わるまで待っているのは時間の浪費なので,他の作業のついでにバックグラウンドで行うようにするのがいいだろう。
“Next” ボタンを押して次の画面へ。
さらに “Install” ボタンを押して次の画面へ。
この画面でファイルを展開し,以下の画面を起動する。 この画面が本当のインストーラである。
既定では「既定リポジトリを変更」のチェックが外れているが,リポジトリを手動で選択できるようチェックを入れる。
「次へ」ボタンを押して次の画面へ。
この画面でリポジトリを選択する。 日本国内であれば “Japan” のリポジトリのどれかを選択すればいいだろう。
「次へ」ボタンを押して次の画面へ。
この画面でインストール先のフォルダを決定する。
既定は C:\texlive\2017
フォルダだが,変更するなら「変更」ボタンを押して以下のプロンプトでインストール先のフォルダを変更できる。
インストール先を決定したら「次へ」ボタンを押して次の画面へ。
この画面では各種オプションを指定する。 分からなければ規定値のままでも特に問題はない。
「次へ」ボタンを押して次の画面へ。
これまでの指定内容で問題なければ「導入」ボタンを押してインストール処理を開始する。
上述したようにインストール処理が完了するまでにかなりの時間がかかる。 私の場合は5時間以上もかかった。 休日だったからよかったものの,インストールを開始してから朝食の準備を始めて,掃除・洗濯を終わらせて昼食を食べてもまだ終わらなかったほどだ(笑)
処理が完了すると以下の表示になる。
これで画面下にある「終了」ボタンを押して画面を閉じればインストール完了である。
正常にインストールすれば環境変数 PATH
にインストール先フォルダが追加される。
たとえば ,インストール先が C:\texlive\2017
なら C:\texlive\2017\bin\win32
が PATH
に追加される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 サーバでは以下の場所にある。
- http://core.ring.gr.jp/pub/text/TeX/ptex-win32/current/TLW64/
- http://ftp.ring.gr.jp/pub/text/TeX/ptex-win32/current/TLW64/
- http://ftp.dnsbalance.ring.gr.jp/pub/text/TeX/ptex-win32/current/TLW64/
取得した 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_commands
で TeX 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
に関する脆弱性問題もあったようだ。
- JVNDB-2016-008562 TeX Live における任意のコマンドを実行される脆弱性 - JVN iPedia - 脆弱性対策情報データベース
- 【重要】TeXシステムの脆弱性の件 - マクロツイーター
文字エンコーディングの自動判別
$\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 でも利用可能になっている。
- Download 游ゴシック 游明朝フォントパック from Official Microsoft Download Center
- 【レビュー】「Office 2016」の「游明朝」「游ゴシック」を旧Officeに追加する公式フォントパック - 窓の杜
試しに何かタイプセットしてみる
ちうわけでいつものあの文書ですね。
いやぁ,いい加減これも内容が古すぎてアレなのだが,いまさら書き直す気にはならないし,すっかり $\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
生成したファイルをチェックする。
よしよし。 ちゃんと PDF/A になってるな。
ブックマーク
-
TeX Live 2014 for Windows — Baldanders.info : この記事の中で pxjahyper パッケージについて説明しているが TeX Live 2017 には既に含まれていた。ブラボー!
参考図書
- [改訂第8版]LaTeX2ε美文書作成入門
- 奥村晴彦 (著), 黒木裕介 (著)
- 技術評論社 2020-11-14
- 大型本
- 4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)
- 評価
2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。版元には PDF 版もある。
-
日本語組版に必要なパッケージをインストールするには “Simple install (big)” が手っ取り早い。 TeX Live のパッケージ群を熟知している方なら “Custom install” でもいいかもしれないが。 ↩︎
-
Windows には「システム環境変数」と「ユーザ環境変数」の2つがあって,ユーザに固有の環境変数は「ユーザ環境変数」のほうに設定できるようになっている。環境変数
PATH
は「システム環境変数」と「ユーザ環境変数」の両方に存在し,両方を足し合わせたものが実際のPATH
として機能する。私が以前にインストールした TeX Live 2014 ではPATH
を「システム環境変数」のほうにセットしていたが, 2017 では「ユーザ環境変数」のほうにセットしているようだ。私のように TeX Live を入れ直したり,バージョン別に TeX Live を使い分けている人は環境変数に注意した方がいいだろう。 ↩︎ -
Windows 環境では
tlmgr
コマンドはバッチファイルで提供される。実体は Perl スクリプトである。 ↩︎ -
texmf.cnf
の優先順位に関する完全なリストはkpsewhich -var-value=TEXMFCNF
コマンドから取得できる。 ↩︎ -
Windows 環境でフォントを切り替える場合は
kanji-config-updmap
コマンドではなくkanji-config-updmap-sys
コマンドを使わないとうまくいかないようだ。ちなみに-sys
付きのコマンドではシステム設定を変更する。texmf-local
フォルダに環境をまるっとコピーしたらいけるかな? 試す気はないが。 ↩︎