2014年8月22日金曜日

TeXLive for Android インストールマニュアル

一体どういった層に需要があるのかわかりませんが、どうやらAndroidでTeXをやろうとする人はそれなりにいるらしい。
最近ではGoogle Translateを使ってまで、我がブログを読もうとしたドイツ人もいたらしく、素人のお遊びが随分とワールドワイドに!
また、結構な人がyahoo検索で我がブログに訪れるのですが、
yahoo検索利用者 ⇒ Windows ユーザー (私の中では)
だと思うので、私のLinux前提の記事はさぞ期待はずれであったことでしょう。

そんなこんなで、需要があるなら、もう少し丁寧に書いてみるかなと思ったしだいです。

とりあえず目標はTeX WikiのTeX入門の例くらいなら処理できるくらいの最低限の環境を整えることとします。
サンプルはこちら。(TeX Wikiに載っていたものほとんどそのまんまです。)
もっと複雑なことをしたい人は適宜パッケージ等の追加を行ってください。

私が2年前にTeXを使い始めた時はPATHやらシンボリックリンクなんて全く理解してもいない状態から始めたので、そんな人でもとりあえずインストールは完了するくらいには丁寧に書いたつもりです。


必要なもの
  1. PC (OSはWindows, Linuxどちらでもいいです。Macは持ってないので知りません。)
  2. Android (rootedの必要はありません。約600MBの空き容量が必要です。)
  3. 時間(作業の合間にすごい暇な時間ができます。映画2,3本は見れます。)
  4. 気合(最重要項目です)

今回WindowsはWin 7, LinuxはUbuntu 14.04, AndroidはIdeaPad Tablet A1(Android 2.3.4)を使いました。

  • Androidでの操作
下記の2つをAndroidにインストール
TeXLive for AndroidBusyBox (no root)

TeXLive for Android起動 --> Install TexLive --> Yes


私の端末のように低スペックのものだと下図のように「応答していません」と出ますが、ここは「待機」を選択してください。その後、"hoge is installed"と画面下の方に無事にインストールが終了したことが表示されてきます。



BusyBox起動
インストール --> クリップボードにコピー
2015/1/23追記
最近のバージョンだとクリップボードにコピーの項目がなくなったようです。
インストールが終わったら勝手にクリップボードにコピーされるようになったようです。
仮にコピーされていないようなら下の画像を参考に、自ら打ち込んでください。画像では改行されているように見えますが、改行無しの1行書きです。

再び、TeXLive for Android起動し
その他 --> Preferences -->  Initial command --> 貼り付け





Android側での操作はひとまずこれで終了です。


  • Windows(Win 7)での操作
Linux Userは次の"Linux(Ubuntu)での操作"を見てください。
Installing TeX Live over the Internetからinstall-tl-windows.exeをダウンロード、実行

Custom Install --> Next


Install

"不可欠なプログラムとファイル", "LaTeX基本パッケージ", "日本語"の3つを選択
※LaTeX基本パッケージはなくても動くかもしれません。(2015/2/3)


2015/1/23 追加
"fontとmacroのdocツリーを導入"と"fontとmacroのソースツリーを導入"を「いいえ」にする。(この画像はLinux版なのでWindowsでは若干表示が異なります。)

TeX Liveの導入


終了

C:\texlive\2014\texmf-dist\web2c\texmf.cnfをtexliveフォルダー直下にコピーし、その後編集。
メモ帳を使うと文字コードの関係上見づらいので、ワードパッドを使いましょう。
54行目
TEXMFROOT = /sdcard/texlive/2014
に変更(TeXLive 2014以外のTeXLiveを使用した場合、適宜2013とかに変えてください。)

557-562行目
shell_escape_commands = \
bibtex,bibtex8,bibtexu,upbibtex,biber,\
kpsewhich,\
makeindex,mendex,texindy,xindy,\
mpost,upmpost,\
repstopdf,epspdf,extractbb
に変更



次に C:\texlive\2014\texmf-dist\dvipdfmx\dvipdfmx.cfgを編集
66行目の"K"、97行目の"P"をコメント(各文字の前に%をつける。)

PCとタブレットをUSBでつなぎ、C:\texliveをフォルダまるごとコピーします。この時、コピー先はタブレットが/sdcardと認識するところにしてください。最近の端末ですと内部ストレージが/sdcard, 外部ストレージが/external_sdなどと認識すると思います。microSDを刺したまま、PCにつなぐと内部ストレージと外部ストレージの両方がマウントされるのでコピー先に気をつけてください。
どっちがどっちかわからない場合、microSDを抜いた状態でPCに繋げば間違いありません。

  • Linux(Ubuntu)での操作
Windows Userは次の"再びAndroidでの操作"に進んでください。
Terminalを起動
$ sudo apt-get install perl-tk
$ wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
$ tar xvzf install-tl-unx.tar.gz
$ cd install-tl*
$ sudo ./install-tl -gui

※ISOを使う場合(2014/10/13追記)
$ mkdir /tmp/iso
$ sudo mount -t iso9660 -o loop /PATH/texlive2014-20140525.iso /tmp/iso
$ cd /tmp/iso
$ sudo ./install-tl -gui

導入対象選集--> 変更

"不可欠なプログラムとファイル", "LaTeX基本パッケージ", "日本語"の3つを選択
※LaTeX基本パッケージはなくても動くかもしれません。(2015/2/3)

TEXDIR(TeX主幹ディレクトリ) --> 変更


~/texlive/2014に変更
(変えなくても全く問題ありませんが、homeにあるほうが見やすいし、その後のファイルの編集もしやすいので。)

2015/1/23 追加
"fontとmacroのdocツリーを導入"と"fontとmacroのソースツリーを導入"を「いいえ」にする。


TeX Liveの導入

権限がうんぬんかんぬん言われると面倒なので
$ sudo -R 777 ~/texlive

~/texlive/2014/texmf-dist/web2c/texmf.cnfをtexliveフォルダー直下にコピーし、その後編集
$ cp ~/texlive/2014/texmf-dist/web2c/texmf.cnf ~/texlive
$ gedit ~/texlive/texmf.cnf
54行目
TEXMFROOT = /sdcard/texlive/2014
に変更(TeXLive 2014以外のTeXLiveを使用した場合、適宜2013とかに変えてください。)

557-562行目
shell_escape_commands = \
bibtex,bibtex8,bibtexu,upbibtex,biber,\
kpsewhich,\
makeindex,mendex,texindy,xindy,\
mpost,upmpost,\
repstopdf,epspdf,extractbb
に変更

次に ~/texlive/2014/texmf-dist/dvipdfmx/dvipdfmx.cfgを編集
66行目の"K"、97行目の"P"をコメント(各文字の前に%をつける。)


PCとタブレットをUSBでつなぎ、~/texliveをフォルダまるごとコピーします。この時、コピー先はタブレットが/sdcardと認識するところにしてください。最近の端末ですと内部ストレージが/sdcard, 外部ストレージが/external_sdなどと認識すると思います。microSDを刺したまま、PCにつなぐと内部ストレージと外部ストレージの両方がマウントされるのでコピー先に気をつけてください。
どっちがどっちかわからない場合、microSDを抜いた状態でPCに繋げば間違いありません。
下図のようにシンボリックリンクがうんたらとかいうエラーが出るかもしれませんが放っといていいです。



  • 再びAndroidでの操作
ケーブルを外し、再びTeXLive for Android起動
ここではpdflatex.fmt, uplatex.fmt, platex.fmtを作ったりします。タイプ量が多いのでスクリプトにすることをおすすめします。
1. $ cd /sdcard/texlive
2. $ pdftex --ini --jobname=pdflatex --progname=pdflatex -translate-file=cp227.tcx *pdflatex.ini
3. $ euptex --ini --jobname=uplatex --progname=uplatex *uplatex.ini
4. $ eptex --ini --jobname=platex --progname=platex *platex.ini
5. $ cp pdflatex.fmt /sdcard/texlive/2014/texmf-var/web2c/pdftex/pdflatex.fmt
6. $ cp platex.fmt /sdcard/texlive/2014/texmf-var/web2c/eptex/platex.fmt
7. $ cp uplatex.fmt /sdcard/texlive/2014/texmf-var/web2c/euptex/uplatex.fmt
8. $ cd /data/data/texlive.androidport/bin
9. $ rm platex
10. $ ln -s eptex platex

※ uplatexだけ使えれば良い場合、1, 3, 7の手順を踏んでもらうだけで結構です。

以上で終了です。試しに適当なtexファイルを処理してみましょう。
$ uplatex ex1
$ dvipdfmx -f uptex-ipaex.map ex1

無事に冒頭のサンプルと同じものが出来ました。お疲れ様でした。

  • その他
IPAexフォントを埋め込もうとするとタイプ量が多くなり、面倒なのでスクリプトを作りましょう。

pdfuplatex

uplatex $1 || exit 1
dvipdfmx -f uptex-ipaex.map $1 || exit 1

作ったスクリプトを/data/data/texlive.androidport/binに置きます。TeXLive for Android起動し
$ cp /PATH/pdfuplatex ~/../bin
今回使用したideapadではchmodはpermission deniedと弾かれるのですが、端末によっては使えるので、使えたら実行権限付与してください。ideapadではなんでかchmodするまでもなく勝手に実行権限ついていたのでその必要はありませんでした。
どうしても出来なかったら諦めて、地道にタイプしてください。

使用するパッケージ等が大量で、内部でなく、外部ストレージに保存したい場合、texmf.cnfを適宜編集します。
今回私の使用したIdeaPadですとmicroSDは/sdcard/removable_sdcardにマウントされるので、texliveフォルダをmicroSDにコピーした場合、texmf.cnfを
TEXMFROOT = /sdcard/removable_sdcard/texlive/2014 と編集します。
ただtexmf.cnfだけは/sdcard/texliveに無いと具合が悪いので、コピーした後、/sdcardにtexliveフォルダーを作り、そこにこの編集したtexmf.cnfを置きます。

※ Android 4.4の端末でパッケージをSDカードに保存したら、処理に失敗しました。Androidの仕様変更でSDカード内のファイルの書き換えが自由にできなくなったためのようです。内部ストレージに保存した場合は問題ありませんでした。
Android 4.4でTexLive for Androidを使いたい場合、内部ストレージ容量の多い端末を用意することをおすすめします。

他のTerminalアプリを使って処理したい場合、Initial Commandに
export PATH=/data/data/texlive.androidport/bin とすれば同様に処理できます。

追記 2014/8/26
AndroidでTeXることを極めたい人向け
Androidで効率的にTeXるにはどうしたらいいか(現時点で一番無難な方法)
Vim-LaTeX on Android(現状では日本語を扱うのは出来なくはないけど結構厳しい。)
YaTeX on Android(日本語は表示はできるが入力できない)

参考
ISOイメージファイルからファイルを取り出すには

動作確認端末
IdeaPad Tablet A1 (Android 2.3.4)
DIGNO T 302KC (Android 4.4.2)