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 できる。とりあえず、これで行こうかと思う。

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の文法エラーで止まったとき、それ以降のプログラムは実行されない。

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重に付けるということ。これが分からなくて苦労した。

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

Sublime Text 3にはLaTeXtoolsという強力なパッケージがあるのだが、そのままでは日本語版のplatexでの組版ができない。そこで、いろいろ修正を加えることになるのだが、自分の場合、複雑な処理は必要とせず、単に platex, dvipdfmx, preview すればよいから、もっとシンプルなビルド・システムでよいのだ。むしろ、場合によってはplatexの部分をuplatexに変えたりすることもあるから、その時に応じて適当に選べるようになっていて欲しい。残念ながら、LaTeXtoolsはそうはなっていないようだ。

ということで、あちこち検索しながら試行錯誤。Windowsの場合は、次のようにすれば上手く行った。なお前提として、パスは通してある。また、将来的には Linux, Mac OSX を含めて一つのファイルにしたいので、OS別の処理のため、”windows” : {…} と括ってある。

Tool, buildsystem, new-buildsystemと進むと、untitled.sublime-build なるファイルが作られ、開かれる。そこで、次のように書いて、適当な名前で保存する。今回は、my_platex2pdf.sublime-build とした。

{	
	"windows" : {
		"shell": true,
		"cmd" : [
			"platex", "$file", "-interaction=nonstopmode" ,"&",
			"dvipdfmx", "$file_base_name.dvi", "&",
			"SumatraPDF", "-reuse-instance", "$file_base_name.pdf"
		]
	}
}

Windowsの場合、空白を含むコマンドはダメらしく、上のように、文字列を並べるようにする。それから、複数のコマンド、つまり、platex, dvipdfmx, SumatraPDF を順に起動させるのだが、それらは、”&” で区切るとよいようだ。最後に、これで嵌ったのだが、”shell”: true というのを付けないと、platex のみで、残りが実行されない。どういう訳か分からないが。

WindowsにSublime Text 3をインストール

Macで愛用しているSublime Textだが、Ubuntu, Windows版もあるらしい。まずはWindowsにインストールしてみた。

実はMacで使っているのは、Sublime Text 2というバージョン。同じのにするか新しいのにするか迷ったが、新しい方にした。ベータバージョンみたいだが。また、ポータブル版もあったので、64bitのポータブル版 Sublime Text 3を選びインストール。

インストール直後の作業をメモ。

  • Package Controlを入れる。本家サイトにあるインストール用のコードをコピーする。コンソールを表示させ、コマンドラインに貼り付け、エンターを押して入力。多分、ここが一番心理的ハードルが高い。
  • 日本語をインライン入力できるようにする。Package ControlからInstall Packageを選び、さらに IME Supportというのを選択すればよい。
  • メニューの日本語化。これはなくてもよいが。というか、Macでは英語メニューのまま使っているのだが。Package ControlからInstall Packageと進み、Japanizeを検索。これで、トップメニューが日本語化する。サブメニューも日本語化したい場合は、Sublime Text 3/Data/Packages/Default というフォルダーを作り、その中に、Sublime Text 3/Data/Packages/Japanize フォルダーにある6個の *.jp ファイルをコピーし、さらに、拡張子の .jp を削除する。こうすると、拡張子は .sublime-menu となって有効になる。
  • フォントの設定。Sublime Text 3/Data/Packages/User/Preferences.sublime-settings ファイルを編集する。”font_face”: “SourceHanCodeJP-Regular”, “font_size”: 12, を書き込む。

とりあえず、こんなとこかな。LaTeX用のプラグインはまた後で。

Ubuntu 16.04 LTS に TeXLive 2016 をインストール

[メモ]

GUIを使いたかったので、準備として perl-tk をインストール。DVDイメージのダウンロードとネットインストールが選べるが、ネットインストールにした。

TeXLiveのホームページから、install-tl-unix.tar.gz をダウンロードして解凍。install-tl-20160730 なるフォルダーができるので、ターミナルで中に入り、install-tl なるPerlスクリプトを起動する。最初、perl ./install-tl -gui としたのだが、TEXDIR が書き込めないという表示が出た。デフォルトの設定だと、/usr/local/texlive/2016 になっている。デフォルトのままで行きたかったので、sudo perl ./install-tl -gui としたところ、書き込めない表示も出ずに、あとはデフォルトの設定のままメニュー通りに進んで、無事に完了。

PATHの設定まではしてくれないようで、which latex としても何も出ず。ううむ。どの設定ファイルに書き込むべきか、いつも悩むのだが、隠しファイルの(表示メニューからわざわざ表示するとしないと、表示されないようになっていた。Mac OSX と同じですな) .profile を編集する。末尾に、PATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATH を書き込んで、一旦ログアウト。これでパスが通った。

Ubuntu 16.04 LTS (2)

Ubuntu 16.04 LTS をクリーン・インストールしたので、全くの最初からのやり直し。以下、作業メモ。

  • 電波弱いので無線LANをもう1つのに変えようとしたが、パスワード入れるも何故か無反応。画面右上の無線LANアイコンから「接続を編集する」というのを選ぶと、当該のSSIDが未接続となっている。それを編集して、パスワードを入力して保存。それから、そのSSIDを選ぶとあっさりと繋がった。結果オーライながら、謎である。
  • しばらくコンピューターから離れていると、画面がロックされていて、そのたびにパスワードを入れるのが、鬱陶しい。出来れば画面ロックまでの時間を10分とか自在に設定したい。システム設定から「画面の明るさとロック」を選ぶといろいろ設定出来るようになっているが、いま一つパラメーターの意味が分からないなあ。とりあえず、画面オフまでのアイドル状態の時間を10分にし、ロックするはオフにした。また、サスペンドからの復帰時にパスワードを要求するというのもオフにした。自宅だからこれでよい。
  • アプリが何処にあるか分からない。ドックにはFirefoxがあるが、ターミナルがない。ドックの1番目にアイコンが「コンピューターを検索」となっていて、ここに端末とかターミナルとか入れると、確かに端末が出てくる。しかし、これではなあ。よく使うターミナルとかエディターとかが直ぐに使えるようになってないと。geditで検索したらテキストエディターという名前のアプリが出てきた。ううむ、確かにこれなのだろうが、名前がなあ。
  • アプリは、ドック(ランチャー)の「コンピューターを検索」から、アプリアイコン(Aに似たデザイン)をクリックすると、最近使ったものから始めて、一覧が見れるようになっている。とりあえずはよしとする。ホントはディレクトリーの位置を知りたいのだが。
  • フォルダーの名前を英語に変更する。ターミナルから、env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update とする。
  • パッケージ管理用に、synapticをインストールする。以前のバージョンだと最初からあったと思うのだけど。ターミナルから、sudo apt-get install synaptic と。
  • synaptic package manager から基本的なアプリをインストールする。まずは、build-essentialなのだが、おや、既にインストールされている。
  • Ubuntu Softwareというアプリが最初から入っているのだが、以前あったUbuntu Software Centerとは違うようだ。検索してUbuntu Software Centerをインストールする。しかし,この2つのアプリ、名前だけでなくアイコンまでそっくりなので紛らわしい。