2014年2月3日月曜日

Android でTeXLive

2014/8/22追記
Windowsユーザーでも出来るように内容を改訂しました。
TeXLive for Android インストールマニュアル


テストも終わり、春休みで時間に余裕があるので久々にAndroidでTeXLiveをまた挑戦してみた。
過去の記事に修正を掛けるのでも良かったのだが、ごちゃごちゃして見辛くなりそうだったので新しく作る。(内容は過去とほぼ変わらない)


最終目標
IPA(ex)フォント埋め込まれたPDFの作成

必要なもの
・Android端末(root化の必要は多分ない。busyboxは必要だと思う)
・Linux(他の環境でやったことない)

Android上での下準備
Google Playより TeXLive for Android インストール
https://play.google.com/store/apps/details?id=texlive.androidport

TeX Live for Androidを起動




右上のメニューをタップし、Install TeXLive ---> Yes
しばし待つと下部にインストールされた旨が表示されます。
※ /data領域が70MB使われるので容量の少ない端末は注意

試しに
$ platex -version
とでも打って、インストールされたことを確認してみましょう。

このままではパッケージが何もないのでLinuxから各種のパッケージを持ってきます。

PC上での操作
PCにTeXLiveをインストール
Ubuntu 13.04 に TeXLive 2013 をインストール

Android SDKをインストール
Ubuntu に Android SDK をインストール

ADBを使うので端末側のUSBデバッグを有効にしておくこと
PCと端末をUSBでつなぐ

texmf.cnfの編集
texmf.cnfを自分の環境に合うように編集します。/storage/sdcard1 を自分の環境にあったものに変えてください。
私のAndroid端末 Iconia A200 の場合は、ディレクトリツリーが
のようになっているので、/storage/sdcard0/texliveにtexmf.cnfを、各種のパッケージは容量が大きいので/storage/sdcard1/texliveに配置しました。パッケージを置くディレクトリはtexmf.cnfさえ編集すればどこに配置してもいいですが、texmf.cnfだけは/sdcard/texliveと認識するところに置いてください。

$ adb shell mkdir /sdcard/texlive
$ adb push texmf.cnf /sdcard/texlive

パッケージのコピー
$ mkdir ~/texlive
$ cp -r /usr/local/texlive/2013/texmf-config ~/texlive
$ cp -r /usr/local/texlive/2013/texmf-dist ~/texlive
$ cp -r /usr/local/texlive/2013/texmf-var ~/texlive
$ vi ~/texlive/texmf-dist/dvipdfmx/dvipdfmx.cfg
66行目の"K"、97行目の"P"をコメント
$ zip -r texlive.zip texlive #カードリーダーがない場合はこの後の手順にそのまま従えばできると思うがお勧めしない。ものすごく時間が掛かる。パッケージをまとめたtexliveフォルダーをカードリーダー使って直に移したほうが早い。
$ rm -r texlive
$ adb push texlive.zip /storage/sdcard1
$ rm texlive.zip
$ adb shell
shell@android:/ $ cd /storage/sdcard1
shell@android:/ $ unzip texlive.zip

注意
$ adb shell
error: insufficient permissions for device
と出た時
$ adb kill-server
$ sudo adb start-server
$ adb shell

AndroidでTexlive for Android起動
$ cd /data/data/texlive.androidport/bin
$ rm platex
$ ln -s eptex platex

適当なTeXファイルを処理してみる
$ platex test.tex
$ dvipdfmx -f ptex-ipaex.map test




platex, dvipdfmx打つのが面倒なのでスクリプトを作る

pdfplatex
platex $1 || exit 1
dvipdfmx -f ptex-ipaex.map $1 || exit 1

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

作ったスクリプトを /data/data/texlive.androidport/bin に置く
※多分、adbやTerminal Emulatorを使って、作ったスクリプトを移動しようとしても出来ない。やっても Permission denied で弾かれる。
Texlive for Androidからなら移動できる。

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

memo:
もう2度とやりたくない。難しいことは好きだが、面倒なことは大嫌いである。

0 件のコメント :

コメントを投稿