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 のみで、残りが実行されない。どういう訳か分からないが。

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 を書き込んで、一旦ログアウト。これでパスが通った。

pdftkを用いてPDFのページ順を変更する

[備忘録]
[加藤和也・黒川信重・斎藤毅]数論1 Fermatの夢 を裁断,スキャン,加工してiPadで読んでいたのだが,どうもスキャンのときにページ順を間違えたらしく,PDFの73ページから130ページが逆順になっていた。ScanSnapでスキャンするときに,逆さまに置いたらしい。再度スキャンしてもよいのだが,pdftkで何とかなるらしい。

この場合,1-72ページをそのまま印刷し,73-130は逆順で印刷,そして131から後は再びそのまま印刷する,という感じでコマンドを入力すればよいらしい。具体的には次のようになる。

pdftk before.pdf  cat 1-72  130-73  131-end output after.pdf

複数のtiff画像をまとめてPDFにする

裁断・スキャンして加工したTIFF画像たちをまとめてPDFにする方法。Acrobatでも出来るが,かなり時間がかかる。また,Windowsの画像梱包(pic2pdf)でも出来るはずなのだが,上手く行かない場合があり,理由も分からない。Macで一番手っ取り早いのはPreviewで読み込んでPDFで保存するというものだが,これだとファイルサイズが増加してしまう。せっかく1bitのモノクロ2値にしてGroup4 FAXの圧縮でファイルサイズを小さく加工したのが台無しになってしまう。

ということで,適当なツールを探していたのだが,UNIX(LINUX)ツールのtiffcpとtiff2pdfを使えばよいことを知ったので,メモ。

たとえば,あるフォルダーにある image001.tiff, image002.tiff, という複数のTIFFファイルをまとめたいとする。まずは,tiffcpを使って,

tiffcp image*.tiff bundle.tiff

とすれば,マルチページTIFFファイル bundle.tiffが出来る。次に,

tiff2pdf -o output.pdf bundle.tiff

とすれば,それが output.pdf というPDFファイルに変換される。

ターミナルからやってみたのだが,あっという間に変換が終わってしまい,処理が速いのに驚く。ターミナルからコマンドラインで出来るというのも,スクリプトで一括処理させるのに都合がよい。

gsdjvuをビルドしてdjvudigitalを使う

[備忘録]Ubuntu上でgsdjvuを自前ビルド&インストールしたのでメモ。

使いたいのは djvudigital というプログラム。djvudigital hoge.pdf とすれば,hoge.djvu が出来上がるというもの。そのためには,DjvuLibre というものを入れる必要がある。

DjvuLibre自体はSynapticパッケージマネージャーから簡単にインストール出来るのだが,これだけではダメ。djvudigitalを使おうとすると,これこれが必要なので,別途インストールしてね,的なメッセージが出てしまう。どうやらライセンス(GPLとかCPLとか)の関係で,GSDjvuというものが同梱できないらしい。その辺の事情はGSDjvuのページに書いてある。そこでGSDjvuのページをざっと読んで,自前でのビルドを試みた。

まずはGSDjvuをダンロードする。現時点での最新版は gsdjvu-1.6.tar.gz で,これを解凍した gsdjvu-1.6 というフォルダーを適当な場所に移動させる。今回は,/home/foo/gsdjvu-1.6 とした。ちなみに foo の箇所は自分のアカウント名に置き換え。そして,その中に BUILD という名前のフォルダーを作る。/home/foo/gsdjvu-1.6/BUILD となる。他の名前でも良いと思うが,BUILDがビルド用スクリプトでのデフォルト名になっているので,あとで名前を入力する手間が省ける。

次に,READMEに従って ghostscriptとフォント関係をダウンロード。ghostscript-8.64.tar.bz2 と ghostscript-fonts-std-8.11.tar.gz を指定のサイトからダウンロードして,/home/foo/gsdjvu-1.6/BUILD/ に置く。これ以外にオプションで,解凍ツールとかJPEG, PNG関係のライブラリーがダウンロードリストに載っているが,システムにある場合は,そちらが最新版だろうから,それを使った方が良いだろうというような事が書いてある。実際,これらはすでにシステムに入れてあるので,今回はパスした。

では,ビルド開始。シェルから /home/foo/gsdjvu-1.6/build-gsdjvu なるスクリプトを起動させる。途中でいくつか質問されるが,YESとかYを選択すれば良い。警告(Warning)がたくさん出るので一瞬あせるのだが,無事にビルド出来たようだ。

最後に,インストール。Makefile とか無いので,手動にて移動ならびにシンボリック・リンクを張る。READMEにはrootでインストールする方法が書いてあるが,UbuntuとかMacってルートが居ないんじゃなかったんだっけ? ということで,sudo を付けて次のように。

# sudo cp -r /home/foo/gsdjvu-1.6/BUILD/INST/gsdjvu /usr/local/lib
# cd /usr/local/bin
# sudo ln -s ../lib/gsdjvu/gsdjvu gsdjvu

これで終了。試しに,大鏡の文庫本を変換したら,15MBあったのが,5MBくらいになった。

今回は,Ubuntu上でビルドしたが,Macでもやってみたいと思う。djvulibreはhomebrewで入れてあるので。