コンピュータ

TeXLive2016に移行完了

[備忘録]
TeXシステムを最新のTeXLive2016に移行した。一応前のシステムも残してあるが、新しい文書はTeXLive2016の方で書くことにした。以下、メモ。

  • TeXLive2016の実行ファイルのパスを /usr/texbin というシンボリック・リンクにして、これを使うことにした。起動時にパスを通すために、これを .profile に追加するのが普通だが、そうしなくても使えている(理由はあとで)ので、以前のシステムを使うためにも、さしあたってはパスは以前のまま。
  • TeXLive2016付属のasymptoteのバージョンは2.38なのだが、古いgsをサポートしていない。そこで、バージョン9.20のgsをHomebrewで入れて、こちらにパスを通すようにした。困ったことに、以前のシステムのasymptote 2.18はgs9.20では使えない。だから、以前のシステムでasymptoteを使うときは、古いgsにパスを通す必要がある。asymptoteだけは完全に新しい方に移行するというのが現実的かもしれない。
  • TeX用のエディターとして Sublime Text 3 を使い始めた。LaTeXToolsを入れ、自前のビルドシステムを準備した。自前のビルドの際に、/usr/texbin にパスを通してプログラムを呼び出すようにしているので、起動時にパスを通しておかなくても動くようにはなっている。
  • LaTeXToolsのビルドシステムを使えば、サブファイルの1行目に、
    %!TeX root = main_file.tex
    

    とメイン・ファイルを指定できるらしいが(ちなみに、これはTeXShopでも可能)、自前ビルドだと、これが使えない。ちょっとのことだが、けっこうイライラするので、なんとかしたい。

  • dvipdfmx まわりが随分と変わったらしく、以前
    \usepackage[dvipdfm]{graphicx,color}
    \usepackage{mediabb}
    

    と書いていた部分は、修正が必要。まず、mediabbは不要、というか使えなくなっているらしい。代わりにdvipdfmxが画像のサイズなどを自動的に調べてくれるようだ。また、graphicxのオプションでは、dvipdfmが使えない。dvipdfm.defがない、というエラーが出る。ドライバーの指定としては、dvipdfmx とすればよい。つまり、

    \usepackage[dvipdfmx]{graphicx,color}
    %\usepackage{mediabb} %% この行は削除する。
    

    と修正する。

TeXLive2016でトンボが切れる件(とりあえず解決)

順次TeXLive2016に移行中だが,トンボが切れてしまうことがあって,悩んでいた。ドキュメントクラスとして jsarticle の方を使えばよいのだが,jarticleを使うと,トンボを付けたとき,右と下が切れてしまうのだ。

\documentclass[b5paper,tombow]{jarticle}

とすると,これまでの tetex だと,a4サイズのPDFのほぼ中央にb5サイズの本体がくる形で,トンボもおおよそ左右上下に均等な感じで印刷されていた。ところが,TeXLive2016に移行して組版したところ,PDFがa4よりかなり小さくて,右と下が切れた感じなのだ。

TeXが生成するdviには,そもそも紙のサイズという概念がなく,通常はa4サイズで出力される,というような話を以前どこかで読んだ記憶があった。dviからpdfへ変換する段階で紙のサイズを指定することができる,という話も。そこで,紙のサイズを指定するために,これも以前行ったように \special{...} を使ってみた。

\documentclass[b5paper,tombow]{jarticle}
\special{papersize=210mm,297mm}

とすることで,トンボ付きa4サイズのPDFが出来た。ということで,とりあえず解決。

ところで,以前サイズ指定を行ったときは,

\documentclass[b5paper,tombow]{jarticle}
\AtBeginDvi{\special{papersize=210mm,297mm}}

のようにしていたと思うのだが,今回はこれではダメだった。何故なんだろう。

Sublime Text 3での自前LaTeXビルド(Mac版)

以前Windows版の自前LaTeXビルドを作ったので、Mac版も簡単かと思ったら、思わぬところでてこずってしまった。platex, dvipdfmx, Skim を連続して行うコマンドを作れないのだ。検索したり試行錯誤したり、いろいろやった結果、インラインでシェルスクリプトを実行させることで、望みの結果が得られた。

Sublime Text 3のメニューから、Tools –> Build System —> New Build System… と進むと、untitled.sublime-build というファイルが作られて編集状態となる。これを次のようにして、適当な名前で保存する。今回は、pLaTeX-dvipdfmx-Skim.sublime-build という名前にした。こうすると、Build Systemに、pLaTeX-dvipdfmx-Skim という項目が追加される。

{
	"osx" : {
		"selector" : "source.tex",
		"path" : "/usr/texbin:$PATH",
		"shell" : false,
		"cmd" : [
			"/bin/sh", "-c", 
			"platex $file -interaction=nonstopmode && dvipdfmx $file_base_name.dvi && open -a Skim $file_base_name.pdf"
		]
	}
}

ポイントは、シェル(/bin/sh)を -cオプションで起動することにより、そのあとに書いたシェルスクリプトを実行させること。プログラムは && で区切る。こうすると、TeXの文法エラーで止まったとき、それ以降のプログラムは実行されない。

TeXstudioからTeXLive2016を使う(Mac版)

TeXstudioはTeX用の統合エディター。MacではTeXShopが定番ではあるが、code foldingができないのが不満。TeXMakerとそれから派生したTeXstudioでは、latexの\begin...\end環境とセクションなどのcode foldingが出来るらしい。TeXMakerもインストールしたのだが、TeXstudioの方が、さらに高機能らしいので、そちらも導入した。

設定は簡単。とりあえず、latexとdvipfmxへのパスを通せばよい。日本語LaTeXを使うために、コマンドの部分を修正する。LaTeXのところは /usr/texbin/platex -src -interaction=nonstopmode %.texとし、DviPdfのところを /usr/texbin/dvipdfmx %.dvi とする。latexのオプションは修正の余地があるが、とりあえず、元のままにして、プログラムだけをlatexからplatexへと変更した。あと、エディター部分でフォントを適当に。Source Code Pro にしたが、ここはお好みで。

ここで問題が。PDFをプレビューするのだが、内部ビューアーだと日本語フォントが表示されないのだ。フォントを埋め込んでいてもダメ。検索したところ、poppler-dataというのをインストールする必要があるらしい。

実は、Homebrewでpopplerは入れてあった。後は、TeXstudioがそれを認識できるようにすればよい。TeXstudioは /usr/local/share/poppler を読みに行くらしいので、

ln -s /usr/local/Cellar/poppler/0.16.7/share/poppler /usr/local/share/poppler

とシンボリック・リンクを張ってみた。これで、日本語も表示されるようになった。

実は、内部ビューアーを使わずに Skim を外部ビューアーで使う手もあって、こちらも快適。Sublime Textなどは純粋なエディターで内部ビューアーを持っていないから、Skimを使うことになる。

TeXLive2016を使い始める

TeXLive 2016 自体はずっと以前にダウンロードしていたのだが、自前のフォント設定などの移行が大変そうなので、これまで使わずにいた。新旧2つのTeXシステムを共存できそうだったので、使い始めることにした。以下、備忘録。

ダウンロードしていたのは、MacTeX版ではなくオフィシャルのポータブル版。と言っても、USBメモリーにインストールする予定はないのだが。これを、$HOME/texlive2016portable 以下にインストールした。$HOME は自分のルート。Macの場合、/Users/自分のアカウント になっている。以下、作業内容。texlive2016portable までのパスをTLROOT と略記する。

  • Pathの変更。
    export PATH=/usr/texbin:$PATH
    

    などとし、/usr/texbin は本当のパスへのシンボリック・リンクとする。
    これを変更することで、複数のTeXシステムを使い分けることにした。

    TeXLive2016portableを使う場合。

    ln -s TLROOT/bin/x86_64-darwin  /usr/texbin
    

    今までのuptetexを使う場合。

    ln -s PathToOldTeXSystem/bin  /usr/texbin
    
  • TeXLiveのアップデート。
    パスを通したあと、

    sudo tlmgr update --self --all
    

    として最新版にアップデートする。500個くらいアップデートがあって、けっこう時間が掛かった。

  • ヒラギノフォントへのシンボリック・リンクを作る。
    Homebrewでgsは入れているのだが、リンクされているgsのバージョンが7.07と古かったので、texlive付属のスクリプトで自動的にリンクを作ることができなかった。手動でリンクを TLROOT/texmf-local/fonts/opentype/ 以下に作成する。ファイルが認識できるように sudo texhash する。
  • ヒラギノを埋め込むようにMapを設定。
    以前は手動で行っていたが、今はスクリプトでできるようだ。便利だが、何が行われているのかが分からないのは不安な気もする。

    sudo kanji-config-updmap-sys hiragino-pron
    

    で完了。ログを読むと、updmap-sys は TLROOT/texmf-dist/web2c/updmap.cfgTLROOT/texmf-config/web2c/undmap.cfg を読み込んで、 TLROOT/texmf-config/web2c/updmap.cfg に新たな設定を書き込んだらしい。もっとも、TLROOT/texmf-config/web2c/updmap.cfg は今回新たに作成されているのだが。それを開くと、

    jaEmbed hiragino-pron
    jaVariant -04
    

    の2行からなるファイルだった。

以上で、インストール作業は完了。ターミナルから試してみる。

ln -s TLROOT/bin/x86_64-darwin  /usr/texbin

として、/usr/texbin をTeXLiveのバイナリーに設定。which platex して確認。適当なファイルを作成して、platex sample.tex とすれば、sample.dvi が出来る。次いで、dvipdfmx sample.dvi とすれば sample.pdf が出来る。OKですね。

次の作業は、エディターから使えるようにすること。候補としては、TeXMaker, TeXstudio それから、Sublime Text 3 だが、それは後ほど。

MacのThunderbirdでAppleのメールが使えなくなった話(とりあえず解決)

今朝、Macを開いたら、メーラーが me.com のサーバーに接続できない旨のエラーメッセージを出す。これまでもたまにこういうことはあったが、たいていは再トライで繋がっていた。ところが今回は違う。何度やってもダメ。ちなみに iPhone では普通に繋がるし、Macでも普段使ってないApple純正のメールでは大丈夫。AppleのメールではなくThunderbirdを使っているのは、いろいろと理由があるのだが、それは別の話。とにかく繋がらないことには話にならない。

検索すると同様の人がけっこう居るらしい。Appleの認証方式が変わったとか、なんとか。ふーん、と思いつつ、Apple IDの管理ページというのに行ってみた。ここからセキュリティーに行って App用パスワードというのを取得すればよいらしい。ところが、ログインしても、ただ単に「Apple IDのアップデート」という表示が出るだけで、先に進めない。ちなみに、ワタシの場合、me.com (=icloud.com?)のメールはプライマリーのApple IDになっておらず、例えば iTunes store での買い物とか、メインのApple IDは、以前から使っている別のメールだったりするのだが、それが関係しているのかも分からない。いずれにしても、Apple IDにログインは出来るものの、先に進めないのだ。

途方にくれて、Thunderbirdに戻ったのだったが、あれ?普通に受信出来てるじゃないか! さっきの「Apple IDのアップデート」というのが、アップデートされたのでOKですよ〜とかいう意味だったのだろうか。にわかには信じられないのだが。

ということで、とりあえず解決なのだが、いろいろと謎だらけで根本的解決じゃないと思われる。ああ、いらいらするなあ。

Euwe, KramerのMiddleGameの本

MacBook AirにChessX (チェスのデータベース・ソフト) をインストールした。Max Euwe, Hans KramerのMiddleGame (中盤戦の教科書) を引っ張り出して,第1巻の最初のゲームを再生させてみた。Alekhine 対 Junge (1942年,モスクワ)。

テーマは,ビショップなのだが,様々なタクティクス的要素が素敵すぎる。作戦・戦略(Strategy)の本なのだが,具体的な戦術(Tactics)抜きには語れないということか。

[ctpgn id=20160918a, layout=left]
[Event “EuKra0101”]
[Site “Crakow”]
[Date “1942.??.??”]
[Round “?”]
[White “Alekhine Alexander”]
[Black “Junge Klaus”]
[Result “1-0”]
[ECO “C86”]
[PlyCount “55”]

1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Qe2 b5 7. Bb3 O-O 8. c3
d5 9. d3 dxe4 10. dxe4 Bg4 11. h3 Bh5 12. Bg5 Ne8 13. Bxe7 Bxf3 14. Qxf3 Nxe7
15. Rd1 Nd6 16. Nd2 c6 17. Nf1 Qc7 18. a4 Rad8 19. Ng3 Nec8 20. axb5 axb5 21.
Nf5 $1 Nb6 ( 21… Nxf5 22. exf5 $1 { White would be threatening to split open
Black’s Kingside by f6, a threat which Black could not parry, as the Bishop
pins his f-pawn.} )22. Qe3 Nxf5 ( 22… Nbc4 23. Bxc4 Nxf5 24. exf5 bxc4 25.
f6 gxf6 26. Qg3+ Kh8 27. Qh4 Qe7 28. Qxc4 Qe6 29. Qxe6 fxe6 30. Rxd8 Rxd8 31.
Ra6 Rd6 32. g3 Rd1+ 33. Kg2 { 0.92} )23. exf5 c5 24. f6 $1 gxf6 25. Qh6 f5 26.
Bxf7+ $3 Qxf7 ( 26… Rxf7 27. Qg5+ Rg7 28. Rxd8+ Kf7 29. Qxf5+ Ke7 30. Ra7
Qxa7 31. Qf8+ Ke6 32. Rd6# )27. Rxd8 Na4 ( 27… Rxd8 28. Qg5+ )28. b3 $1 1-0
[/ctpgn]

ChessXはデータベースソフトではあるが,チェス・エンジンを組み込めるので,分析も出来て便利。Stochfishの最新版をインストールし,分析させながら本文を読み,なるほどねえ・・・。これは良い組み合わせだ。

Sublime Text 3でLaTeXToolsに変更を加えて日本語pLaTeX文書の組版(Windows版)

いろいろやってみたが、一番ポピュラーなLaTeXToolsを使う方法をメモするのを忘れていた。

LaTeXToolsに変更を加えるには、Packages/User にLaTeXTools.sublime-settings という自分用の設定ファイルを作る。これは、Sublime Text 3からLaTeXToolsの設定メニューに入ると作成用のメニューがあるので、それを選ぶと自動的に作られる。変更はこちらに行い、本体はいじらない。変更箇所としては、TeXLiveをインストールした場所の指定、TeXのdistroとしてMikTeXじゃなくてTeXLiveを選んでいること、そして、日本語LaTeXを使うために、command に変更を加える。

まずは、TeXLiveの場所、PDFのPreviewerとしてSumatraPDFを設定、などなど。

// ------------------------------------------------------------------
// Platform settings: adapt as needed for your machine
// ------------------------------------------------------------------

	"osx": 	{
		// Path used when invoking tex & friends; MUST include $PATH
		"texpath" : "$PATH:/Library/TeX/texbin:/usr/texbin:/usr/local/bin:/opt/local/bin"
		// Path to PDF viewer, if needed
		// TODO think about it. Also, maybe configure it here!
	},


	"windows": {
		// Path used when invoking tex & friends; "" is fine for MiKTeX
		// For TeXlive 2011 (or other years) use
		// "texpath" : "C:\\texlive\\2011\\bin\\win32;$PATH",
		"texpath" : "C:\\texlive\\2016\\bin\\win32;$PATH",
		// TeX distro: "miktex" or "texlive"
		"distro" : "texlive",
		// Command to invoke Sumatra. If blank, "SumatraPDF.exe" is used (it has to be on your PATH)
		"sumatra": "",
		// Command to invoke Sublime Text. Used if the keep_focus toggle is true.
		// If blank, "subl.exe" or "sublime_text.exe" will be used.
		"sublime_executable": "",
		// how long (in seconds) to wait after the jump_to_pdf command completes
		// before switching focus back to Sublime Text. This may need to be
		// adjusted depending on your machine and configuration.
		"keep_focus_delay": 0.5
	},

	"linux" : {
		// Path used when invoking tex & friends; MUST include $PATH
		"texpath" : "$PATH:/usr/texbin",
		// Command to invoke Python. Useful if you have Python installed in a
		// non-standard location or want to use a particular version of python.
		// Both Python2 and Python3 are supported, but must have the DBus bindings
		// installed.
		"python": "",
		// The name of the ST2 or ST3 executable. On Ubuntu, both subl and sublime-text are
		// available for ST2; adjust as needed for other platforms, and for ST3
		"sublime": "sublime-text",
		// How long to wait after evince or okular has launched before sending a sync message
		// in seconds, floating point; choose 2.0 or 3.0 on a slower machine, 0.5 on a fast one
		// Note: only tweak this if sync after launching the PDF viewer does not seem to work,
		// or if the PDF viewer opens instantly and you don't want to wait.
		// Default: 1.5 (works on my MBP4,1...)
		"sync_wait": 1.5,
		// Command to invoke Sublime Text. Used if the keep_focus toggle is true.
		// If blank, "subl" or "sublime_text" will be used.
		"sublime_executable": "",
		// how long (in ms) to wait after the jump_to_pdf command completes
		// before switching focus back to Sublime Text. This may need to be
		// adjusted depending on your machine and configuration.
		"keep_focus_delay": 0.5
	},

次に、builder settings のところに、latexmk を呼び出すときに使う command を定義する。これで完了。

	// OPTION: "builder_settings"
	// Specify builder-dependent settings and preferences
	// Possible values: see README or documentation provided with
	// third-party build engine.
	// Builder setting can be general or OS-dependent

	"builder_settings" : {

		// General settings:
		// See README or third-party documentation
		"command" : ["latexmk", "-cd",
			"-e", "$latex = 'platex %O -no-guess-input-enc -kanji=utf8 -interaction=nonstopmode -synctex=1 %S'",
			"-e", "$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B'",
			"-e", "$bibtex = 'pbibtex %O %B'",
			"-e", "$makeindex = 'pmendex %O -o %D %S'",
			"-e", "$dvipdf = 'dvipdfmx %O -o %D %S'",
			"-f", "-norc", "-gg", "-pdfdvi"],

		// (built-ins): true shows the log of each command in the output panel
		"display_log" : false,

		// Platform-specific settings:
		"osx" : {
			// See README or third-party documentation
		},

		"windows" : {
			// See README or third-party documentation
		},

		"linux" : {
			// See README or third-party documentation
		}
	},

Ubuntu 16.04LTSにSublime Text 3をインストール

Macで愛用しているSublime Text 3をWindowsに続いて、Ubuntuにもインストールした。Ubuntuソフトウェアからは見つからなかったので、apt-getするか本家からダウンロードするか迷ったが、本家から、64bit版の sublime-text_build-3114_amd64.deb をダウンロードした。拡張子が .deb ということは、Debianのパッケージということだよね。右クリックして開くアプリを選ぶ。Ubuntu Softwareから開くと、確認の後、自動でインストールしてくれたようだ。

インストールしてくれたのは良いが、すべて自動のため、どこにあるのかわからない状態。ランチャーから検索はできるが、それじゃあね。ターミナルから which subl とすると、/usr/bin/subl と出た。これはシェルスクリプトで、中を読むと、

#!/bin/sh
exec /opt/sublime_text/sublime_text "$@"

つまり、本体は /opt/sublime_text/sublime_text であることが分かった。オフィシャルじゃないアプリは /opt/ 以下に置かれるのだろうか。ともあれ、場所が分かった。アイコンもついているので、そのままドラッグしてランチャーに放り込む。これで、ランチャーから起動することができる。

Sublime Text 3からlatexmk経由でpLaTeXのビルドとプレビュー(Windows版)

表題が長くなったが、内容はこの通り。Windows上でSublime Text 3というエディター(文書編集プログラム)を使い、その中からTeXLive収録のlatexmkというPerlスクリプトを呼び出して、日本語LaTeX(今回はplatex)文書をPDFに組版し、SumatraPDFで結果をプレビューする、というもの。

latexmkには .latexmkrc という環境設定ファイルがあり、それを$HOMEに置いておけば、自動で読みに行くらしいのだが、今回はそれは使わずに、直接にコマンドラインからオプションを渡す方法を試みた。ちなみに前回行ったのは、Sublime Text 3から直接にplatex, dvipdfmx, SumatraPDFを呼び出す単純なもの。latexmkは、bibtexの処理、必要な回数だけのlatex処理など、いろいろ自動でやってくれるらしい。実は、個人的にはあんまり必要としていないんだが、そっち方面は。さらに言えば、Sublime Text 3からlatexmkを起動させるにはLaTeXToolsというプラグインを用いるのが便利で、その使い方がよく紹介されているのだが、そのままでは日本語LaTeXには対応していないので、修正が必要。それもやってみたのだが、別にLaTeXToolsに依存しなくてもできるはずだ、と始めたのが今回の作業。

前置きが長くなった。一番の難関は、latexmkに”-e”オプションでPerlスクリプトを正しく渡すにはどうするか、ということ。ダラー$とか引用符とか、二重引用符とかバックスラッシュとか、どのステップでどういう文字列になって、最終的にどの形でlatexmkに渡されることになるのか、そこが分からなくて、エラー続きだった。結局、つぎのようにすれば上手くいった。

{
	"cmd" : [
		"latexmk", "-cd",
		"-e", "\\$latex = 'platex %O -no-guess-input-enc -kanji=utf8 -interaction=nonstopmode -synctex=1 %S'",
		"-e", "\\$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B'",
		"-e", "\\$bibtex = 'pbibtex %O %B'",
		"-e", "\\$makeindex = 'pmendex %O -o %D %S'",
		"-e", "\\$dvipdf = 'dvipdfmx %O -o %D %S'",
		//"-e", "\\$pdfmode = 3",
		"-e", "\\$pdf_previewer = 'SumatraPDF -reuse-instance %O %S'",
		"-f", "-norc", "-gg", "-pdfdvi", "-pv",
		"$file"
	]
}

ポイントは $latex などのダラー付きの変数に対して、バックスラッシュ(\)を2重に付けるということ。これが分からなくて苦労した。