TeXLiveの補完ライブラリーを入れる

ライセンス関係とか、いろんな理由でTeXLiveに入ってないものがある。例えば、Mac上でヒラギノフォントを埋め込むためのスクリプトなど。これらを別途入れる。

https://contrib.texlive.info を見ながら、インストールする。

tlmgr repository add http://contrib.texlive.info/current tlcontrib
tlmgr pinning add tlcontrib "*"

そして、全部をインストールするには、

tlmgr install collection-contrib

とする。

さて、無事にインストールされたか、確認する。

which cjk-gs-integrate-macos

とすると、

/usr/local/texbin/cjk-gs-integrate-macos

と出るので、大丈夫だ。

では、フォントのシンボリック・リンクを作成する。

cjk-gs-integrate --link-texmf --cleanup
cjk-gs-integrate-macos --link-texmf

確認してみる。/usr/local/texlive/texmf-local/fonts/opentype/cjk-gs-integrate/ に大量のシンボリック・リンクが作られている。ファイルシステムを検索しているのだろうか、TEXMFHOME以下に置いていた HiraMinPro-W3.otf とか、TeXLive 2020 の配布物である HaranoAjiMincho-Medium.otf などについても、シンボリック・リンクが作られている。あとは、埋め込み設定をするだけ。

LaTeXでの日本語フォントの埋め込み設定

MacBook Proの設定の番外編。TeXLive 2020では、デフォルトで原の味フォント(haranoaji)という奇妙な名前の日本語フォントが埋め込まれるようになっている。源ノ明朝・源ノ角ゴシックをAdobe-Japan1になるように修正したものだという。悪くはないが、ヒラギノに慣れているので、選べるようにしたい。以下、とりあえず上手く行っている方法。

最優先されるupdmap.cfgは、TEXMFHOME=~/Library/texmf/web2c/updmap.cfgである。ここを書き換えて updmap-sys することによって、/usr/local/texlive/2020/texmf-var/fonts/map/dvipdfmx/updmap/kanjix.map に、どのフォントを埋め込むかが反映される。具体的には、~/Library/texmf/web2c/updmap.cfg を次のような感じで書いて、updmap-sysする。

jaEmbed hiragino-pron
jaVariant -04
# jaEmbed haranoaji
# jaVariant -04

この場合、ヒラギノ ProNの jis2004版が埋め込まれる。上の2行をコメントアウトして、下の2行のコメントを外せば、今度は、原ノ味フォントになる。

MacBook Pro 設定メモ(8) Sublime Text 3でTeXとAsymptoteのビルド

Sublime Text 3 は既に入れてある。あとは、TeXとAsymptoteのビルドの設定。これは、以前に作ってあるものを修正するだけ。修正箇所は、パス。今回は、/usr/local/texbin なので、ここにパスを通せばよい。

まず、upLaTeX.sublime-build


{
	"osx" : {
		"selector" : "source.tex",
		"path" : "/usr/local/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin",
		"shell" : false,
		"cmd" : [
			"/bin/sh", "-c", 
			"uplatex -halt-on-error -interaction=nonstopmode -synctex=1 -file-line-error -shell-escape '$file' && dvipdfmx '$file_base_name.dvi' && open -a Skim '$file_base_name.pdf'"
		]
	}
}

つぎに、Asymptote.sublime-build


{
	"osx" : {
		"selector" : "source.asy",
		"path" : "/usr/local/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin",
		"shell" : false,
		"cmd" : [
			"/bin/sh", "-c", 
			"asy -vv -f pdf  '$file' && open -a Skim $file_base_name.pdf"
		]
	},

	"variants" : [
		{
        "name" : "asy -vv -f eps & Preview EPS",
		"osx" : {	
			"path" : "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin",
        	"shell" : false,
			"cmd" : [
				"/bin/sh", "-c", 
				"asy -vv -f eps '$file' && open -a Preview $file_base_name.eps"
				]
			}
		},

		{
        "name" : "asy -V -vv",
		"osx" : {	
			"path" : "/usr/local/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin",
        	"shell" : false,
			"cmd" : [
				"/bin/sh", "-c", 
				"asy -V -vv \"$file\""
				]
			}
		},

		{
        "name" : "asy -vv -noprc -f pdf -render 0 & Skim Preview",
		"osx" : {	
			"path" : "/usr/local/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin",
        	"shell" : false,
			"cmd" : [
				"/bin/sh", "-c", 
				"asy -vv -noprc -f pdf -render 0 \"$file\" && open -a Skim $file_base_name.pdf"
				]
			}
		},

		{
        "name" : "asy -vv -prc -f pdf -render 0 -o filename-prc-render0.pdf",
		"osx" : {	
			"path" : "/usr/local/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin",
        	"shell" : false,
			"cmd" : [
				"/bin/sh", "-c", 
				"asy -vv -prc -f pdf -o $file_base_name-prc-render0.pdf -render 0 \"$file\""
				]
			}
		},

    	{
        "name" : "Skim-Preview",
        "osx" : {
        	"path" : "/usr/local/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin",
			"shell" : false,
			"cmd" : [
				"/bin/sh", "-c", 
				"open -a Skim $file_base_name.pdf"
				]
			}
    	}
   	]
}

Asymptoteの方は、variantsをたくさん作ったのだが、まあ、これはなくてもいいか。3Dの場合だけ、renderをいくつにするか、prcかnoprcかで悩むことがあるのだが、それは、ソースファイルの方に設定を書けばよいだけなので。

MacBook Pro 設定メモ(6) TeXLive

いよいよ、TeXLiveのインストール。何度かやったことがある作業なので、大丈夫なはずだが・・・。

まずは、http://mirror.ctan.org/systems/texlive/tlnet からインストーラーである install-tl-unx.tar.gz をダウンロードする。どこでも良いが、Safariが自動的に HOME/Downloads/ にダウンロードしたので、そこで作業する。解凍すると、install-tl-20200525 というフォルダーが出来る。そこに移動して、install-tl というperlスクリプトを起動する。

cd ~/Downloads/install-tl-20200525/
sudo perl install-tl -no-gui

そうそう、準備として、システム環境設定のセキュリティとプライバシーから、プライバシーに進み、フルディスクアクセス権をターミナルに与えるという設定にした。これが必要かどうかは不明だが。また、最初は、sudo 付けなかったのだが、/usr/local/texlive が作れないというエラーが出てしまった。

設定は、概ねデフォルトのまま。インストール先は、/usr/local/texlive/2020 だが、これでよい。高度な設定というボタンから、細かい設定を見ていく。
TEXDIR = /usr/local/texlive/2020
TEXMFLOCAL = /usr/local/texlive/texmf-local
TEXMFHOME = ~/Library/texmf
TEXMFVAR = ~/Library/texlive/2020/texmf-var
TEXMFCONFIG = ~/Library/texlive/2020/texmf-config
となっているが、このままで良いかな。

悩ましいのが、ポータブルにするかということ。前にMacBook Air に入れたときは、ポータブルにしたのだが、結局、それを利用することはなかった。ということで、今回は、ポータブル設定はなし、つまり、ディレクトリーは上記の通りの絶対パスに決めた。

2時間くらいかかっただろうか。なんとか成功し、次のメッセージでインストール完了。

Welcome to TeX Live!

See /usr/local/texlive/2020/index.html for links to documentation.
The TeX Live web site (https://tug.org/texlive/) contains any updates and
corrections. TeX Live is a joint project of the TeX user groups around the
world; please consider supporting it by joining the group best for you. The
list of groups is available on the web at https://tug.org/usergroups.html.

Add /usr/local/texlive/2020/texmf-dist/doc/man to MANPATH.
Add /usr/local/texlive/2020/texmf-dist/doc/info to INFOPATH.
Most importantly, add /usr/local/texlive/2020/bin/x86_64-darwin
to your PATH for current and future sessions.
Logfile: /usr/local/texlive/2020/install-tl.log

/usr/local/texlive/2020/bin/x86_64-darwin にパスを通さねば。以前、インストールしたときは、/usr/texbin というシンボリックリンクを作ったのだが。今回は作れるのか?

/usr/texbin は Operation not permitted ということで、結局作れなかった。/usr/local/以下なら作れるようだ。


sudo ln -s /usr/local/texlive/2020/bin/x86_64-darwin/ /usr/local/texbin

次は、/usr/local/texbin にパスを通す。とりあえず、暫定ということで、

export PATH=/usr/local/texbin:$PATH

とした。zshでも、この構文は使えるらしい。そうすると、which uptex などで、パスが通っていることが確認できた。あとは、ログイン時にパスを通すために、.zshenv に上記の設定を書いた。

最後に、カスタマイズ。TEXMFHOMEである ~/Library/texmf/ 以下に、個人的なマクロ、フォント、クラスファイルなどをコピー。ここは、texhash しなくてもファイルサーチする設定のはず。ただし、updmap-sysは必要。sudo付けないと、/usr/local/texlive/ 以下のファイルに書き込みできないとエラー出るので、sudo updmap-sys とする。ううむ、避けたい事態だが、仕方ないのか。

祈りながら(?)、ターミナルから、uplatex test.tex とする。無事にコンパイルできたようだ。dvipdfmx test.dvi としてPDFも出来た。ちょっと驚いたのが、日本語フォントがヒラギノではなく、HaraNoAji(原ノ味)というフォントだったこと。これでも良いが、ヒラギノに変更できるはずだよね。あとで調べよう。

[追記]何度もインストールしてるのに、今回も完全とは行かなかった。インストールするとき、sudo を付けないと進まなかったため、そうしたのだが、すると、/usr/local/texlive 以下がすべて、所有者 root、グループ wheel になってしまった。そのためか分からないが、updmap-sys も sudo updmap-sys としないと書き込みできないのだが、その際に、次のような警告が出る。

updmap [WARNING]: resetting $HOME value (was /Users/hoge) to root's actual home (/var/root)

その先を読むと、どうやら、TEXMFHOME以下にある /Users/hoge/Library/texmf/web2c/updmap.cfg が読み込まれていないようなのだ。だから、自分で設定したフォントの設定とかがエラーになってしまった。

どうしたものか。選択肢は2つ。修正できるなら修正、そうでなければ、別の場所に改めてインストールし直し。修正を試みた。sudo chown を使って、texlive以下のすべてのファイルを、所有者を自分、グループをadminとした。そうすると、updmap-sys が sudo なしで実行できて、/Users/hoge/Library/texmf/web2c/updmap.cfg も無事に読み込まれたようだった。

ということで、事なきを得たのだが、そもそもの問題は、インストールで sudo を使ったことにあるかなあ。しかし、sudoなしでは書き込めないと言われたしなあ。そういえば、Homebrewも/usr/local 以下にインストールされているのだが、sudo要らなかったような気がするけどなあ。記憶曖昧だが。

Snow Leopard から El Capitan へ

復活したMacBook Airは,いまだ Mac OS X 10.9.5 (Mavericks)のままなのだが,DropboxやBox Syncのサポートが切れてしまい,いよいよアップデートしなくちゃならんなあ,という状況。ただ,/usr/local/ 以下にインストールしているTeXLiveがどうなるのか,とか心配で,踏み切れずにいる。

そこで,まず,古い予備機のMacBook Pro (mid 2009) を,Snow Leopard (10.6.8) からEl Capitan (10.11) に移行することにした。ちなみに,この機種は,ここまでしかアップデートできないらしい。ファイルのバックアップはしてあるので,El Capitan のインストール用pkgをAppleからダウンロードして,起動させて,あとは指示に従う。

インストーラーはあっさりと終了したので,あれ?と思ったが,インストール・プログラムをApplicationフォルダーに作っただけだった。それを起動させる。けっこう時間掛かったが,何とか無事に移行できたようだ。そうそう,クリーン・インストールと迷ったが,今回は上書きでEl Capitanをインストールした。

例によって,初期設定が使いにくいので,ファインダーの設定を変えたり,いろいろ。一番肝心なTeXシステムだが,何と,/usr/texbin が消えていた!ただし,これは /usr/local/texlive/2019/bin/universal-darwin のシンボリック・リンクなので,新たに作ればよいのだが,どうも,/usr/ 以下は,セキュリティ強化の関係で,自由に書き込めないらしい。(詳しくはわからないのだが。) ただし,/usr/local/ 以下はOKらしく,TeXLive本体も無事だった。このあたり,正確なことがわからないのだが。

実害としては/usr/texbinだけなので,これを最近のTeXShopデフォルト?の /Library/TeX/texbin に変更すれば大丈夫だろうと思う。

ということで,しばらく実験して大丈夫そうだったら,MacBook Airの方も,El Capitan あるいは Sierra にアップデートしようかなと思う。

UbuntuでTeX環境を整備するメモ

[備忘録]まったく同じには出来ないが,Mac上で整備したTeX環境とほぼ同じものをUbuntuでも使いたい。またやることになると思うので,メモ。

カスタマイズする内容は,自前のスタイルファイル,日本語フォント。なお,Ubuntuは16.04LTSであり,TeXLive 2017がインストールされている。

スタイルファイルの追加は簡単。TeXLive本体に追加すると,アップデートしたときに,また同じことをする羽目になりそうだから,別の場所に入れる。TEXMFLOCAL でも良いのかもしれないが,TEXMFHOME に入れることにした。
kpsewhich -var-value TEXMFHOME とすると,/home/hoge/texmf (hogeの部分は自分のアカウント) と出るので,ここに追加する。/home/hoge/texmf/tex/platex 以下にスタイルファイル群を入れて,texhash して終了。
ちなみに,TEXMFHOMEは自動的に決まるのではなく,/usr/local/texlive/2017/texmf-dist/web2c/texmf.cnf というファイルで指定されている。

フォントは面倒。TEXMFHOME/fonts/ 以下に,enc, map, tfm ,vf, type1, truetype, いろいろ設置する。これらを認識させるためには,updmap-sys でmapファイルを読み込んで,設定させることになる。updmap-sys が読むファイルとして,TEXMFHOME/texmf/web2c/updmap.cfg というファイルを新たに作り,そこに,例えば,KanjiMap tashotai.map などと書き込む。そして,updmap-sys とすればよい。今回は,Macからコピーした。中身は,

jaEmbed hiragino-pron
jaVariant -04

KanjiMap tashotai.map
Map MinionPro.map

なのだが,最初の2行は自分で書いた記憶がない。大丈夫なのだろうか。まあ,しかし,これで updmap-sys したところ,ちゃんとフォントも埋め込まれたので,良しとしよう。

[追記]TEXMF/texmf/web2c/updmap.cfg は,以前にMacでtexlive2017を入れたときは,kanji-config-updmap-sys –jis2004 hiragino-pron というスクリプトで生成されたものだったようだ。それに自分で,tashotai.map と MinionPro.map の行を追加したらしい。記憶が曖昧だが。

Ubuntu16.04LTSにTeXLive2017を再インストール

とある理由で、再インストールすることに。以下、手順をメモ。

まずは、アンインストール。これが面倒。あちこちにあるtexlive関係のファイルと、無効になるシンボリックリンクなどを一掃する。やり方は検索すると出てくるので、ここは省略。

LINUXにインストールする方法は幾つかあるが、TeXLive本家の最新版からネットインストールする。install-tl-unx.tar.gz をダウンロードして、その階層で tar xvf install-tl-unx.tar.gz などとして解凍する。すると、install-tl-20180204 (数字は、そのときの日付になるのだろう、多分) というフォルダーができる。その中に入り、
sudo ./install-tl
として、ルート権限でインストールすると、/usr/local/texlive/ 以下にインストールされる。ルート権限なしで自分のホームにインストールすることも可能だが、環境変数などを指定することになる。ここでは、前と同じように、/usr/local/texlive とした。

30分ほどでインストール完了。実行ファイルは /usr/local/texlive/2017/bin/x86_64-linux にあるので、これをPATHに追加する。ホーム直下の .profile に
PATH=”/usr/local/texlive/2017/bin/x86_64-linux:$PATH”
を追加する。

これで終わりではなく、ダミーのパッケージを入れる。これは、Ubuntuのパッケージ管理プログラムによって、いらぬ変更をさせないために必要らしい。以前は、この作業をしていなかった。

引き続き、インストーラーがある階層で作業する。ここで、
sudo apt install equivs
wget http://www.tug.org/texlive/files/debian-equivs-2017-ex.txt
equivs-build debian-equivs-2017-ex.txt
sudo dpkg -i texlive-local_2017-1_all.deb
とするとダミーパッケージができるらしい。このあたりは、みようみまね。

[追記]
ちょっと困ったことが。試しに tlmgr を使ってみようと思ったのだが、sudo tlmgr update –list としたところ、command not found なるエラーが。sudoなしのtlmgrだと認識するのだが、管理者権限でtexlive入れたからなあ。検索したところ、同様の事例はけっこうあるようだ。

[追記2]
セキュリティーの関係で、sudo時はユーザーPATHは引き継がれないようだ。少なくとも Ubuntu 16.04 の場合は。パスを追加することも考えたが、/usr/local/texlive 以下のオーナーを自分に変更してしまうことにした。sudoでインストールしているから、現状はオーナー root, グループもrootとなっている。そこで、
sudo chown -R $USER:$USER /usr/local/texlive/
として、オーナー、グループともに、自分に変更。すると、書き込み可能となるので、普通に tlmger できる。とりあえず、これで行こうかと思う。

TextMate2メモ(4) LaTeX Bundleの変更(別バージョン)

TextMateのLaTeX bundleで,LaTeXの実行を指示している箇所が texmate.py にあるので,そこを直接修正することで uplatex での組版ができるようにした。具体的には,pdflatexが選択されているときは,これをptex2pdfで置き換え,また,latexが選択されているときは,これをuplatexで置き換えた。また,latexのあとは,dviをpdfに変換するのだが,dvi2psとps2pdfの組合せの代わりに,dvipdfmxを使うように変更した。具体的は変更は以下の通り。

編集するファイルは,
~/Library/Application Support/TextMate/Managed/Bundles/latex.tmbundle/Support/bin/texmate.py
補助的な関数の定義のあと,914行目からメインのルーティンが始まる。command の種類によって,様々な処理を行うようになっているが,メインは command が latex の場合。そこで,途中の
elif command == 'latex':
以下のブロック(1044行目あたり以降)を次のように書き換えた。

    elif command == 'latex':
        engine_options = construct_engine_options(typesetting_directives,
                                                  tm_engine_options, synctex)
        if engine == 'latex':
            engine = 'uplatex'
            engine_options = "-shell-escape -synctex=1 -interaction=nonstopmode"
        elif engine == 'pdflatex':
            engine = 'ptex2pdf'
            engine_options = "-u -l -ot \"-interaction=nonstopmode -synctex=1 -file-line-error -shell-escape\" "

        command = "{} {}".format(engine, engine_options)
        status = run_latex(command, filename, cache_filename, verbose)
        tex_status, fatal_error, number_errors, number_warnings = status
        number_runs = 1

        if engine == 'latex':
        #    call("dvips {0}.dvi -o '{0}.ps'".format(file_without_suffix),
        #         shell=True)
        #    call("ps2pdf '{}.ps'".format(file_without_suffix), shell=True)
            call("dvipdfmx {0}.dvi", shell=True)
        if tm_autoview and number_errors < 1 and not suppress_viewer:
            viewer_status = run_viewer(
                viewer, filepath, pdffile_path,
                number_errors > 1 or number_warnings > 0 and
                tm_preferences['latexKeepLogWin'],
                'pdfsync' in packages or synctex, line_number)

TextMate2メモ(3) LaTeX Bundleの変更(簡易版)

TextMateのLaTeX bundleは,platex, uplatexをサポートしていない。また,デフォルトはpdflatexとなっている。自分が使いたいのは,uplatexなので,最小限の手間でこれが使えるようにした。実際には,ptex2pdf を使うことにした。これが uplatex, dvipdfmx を順に呼び出してPDFを作るので,pdflatexと同じというわけだ。

~/Library/Application Support/TextMate/Managed/Bundles/latex.tmbundle/Support/lib/Python/tmprefs.py を編集する。36行目からの

        self.default_values = {
            'latexAutoView': True,
            'latexEngine': "pdflatex",
            'latexEngineOptions': "",
            'latexVerbose': False,
            'latexUselatexmk': True,
            'latexViewer': "TextMate",
            'latexKeepLogWin': True,
            'latexDebug': False,
        }

を次のように書き換えた。

        self.default_values = {
            'latexAutoView': True,
            'latexEngine': "ptex2pdf",
            'latexEngineOptions': '-u -l -ot "-synctex=1 -file-line-error -shell-escape"',
            'latexVerbose': True,
            'latexUselatexmk': False,
            'latexViewer': "TextMate",
            'latexKeepLogWin': True,
            'latexDebug': False,
        }

ポイントは,デフォルトのlatexEngineをptex2pdfにして,デフォルトのlatexEngineOptionsを-u -l -ot “-synctex=1 -file-line-error -shell-escape” にしたこと。これで,とりあえずコンパイルできる。ただし,コンソールを見ると,冒頭部分に,
Multiple filename arguments? OK, I’ll take the latter one.
と出力されるので,良きに計らってはくれているものの,パラメーターが正しく渡されていないようだ。

TextMate2メモ(1)

そういえば TextMate というプログラマー御用達のエディターがあったなあ,と検索。以前は日本語が使えなかったと思うが,最新のTextMate2 では普通に日本語が使えるらしい。LaTeX Bundleもあるが,デフォルトがpdflatexで,platex, uplatexは選べない。

ちょっと工夫すれば,uplatex でのコンパイルも出来るようだ。以下,メモ。

一番お手軽なのは,TeX文書の冒頭に,

%!TEX TS-program = ptex2pdf
%!TEX TS-options = -u -l

と,UNIXのshebang的な指示を加えること。ただし,これはエディターによって形式が異なり,TextMateのものは,TeXShopやSublime Textのものとは少し異なっているようだ。できれば,これじゃなく,LaTeX Bundleに手を加えてみたい。