インド学仏教学における UTF-8 による TeX 文書作成 (2)

変換処理の自動化

前回 に引き続いて UTF-8 による TeX 文書の作成について書いていく。

過去の投稿でいくつか latexmk について触れたが、この Perl で書かれたプログラムは bibtexmakeindex などの処理を必要とする文書に対して、適宜必要な回数だけコンパイルを実行してくれる。開発も盛んで (現行バージョン 4.25, 2011/07/07)、最新パッケージなどにも対応が早い。

一方で Utf82TeX の配布用アーカイブには utf82tex, platex, dvipdfmx などの一連の流れを自動化する ulatex というシェルスクリプトが同梱されている。この用意してくださっている ulatex を元にして latexmk を利用した簡単なスクリプトを書いてみた (latexmk-utf)。ほとんどそのまま利用させていただいたが iconv の処理は省いてある。動作は保証されない。利用する場合はじめの変数は環境に応じて適宜変更する。TeX コマンドには platex -kanji=utf8 を使用することを想定しているが、そうでない場合 ulatex の通り iconvnkf を利用して latexmk に渡すファイルの文字コードを適宜変更すればよい。TeX コマンドの指定は latexmk の設定ファイル ~/.latexmkrc で行う。例えば次のように書いておくとよいだろう。

$latex  = 'platex -kanji=utf8 -src-specials -interaction=nonstopmode';
$bibtex = 'pbibtex -kanji=utf8';
$dvips  = 'dvipsk';
$dvipdf  = 'dvipdfmx -f hiraginox.map %O -o %D %S';
$makeindex  = 'mendex -U -r -c -s dot.ist';
$dvi_previewer ='open -a Mxdvi.app';
$pdf_previewer = 'open -a TeXShop.app %O %S';
$pdf_mode = 3;
$pdf_update_method = 0;

使用法も ulatex と同じで /usr/local/bin/ など適当なディレクトリに配置し実行権を与え、

$ latexmk-utf -pv -view=dvi -time foo.tex

というように実行する。オプションは latexmk --help に並ぶものをいくつ指定してもよいが、最後は UTF-8 で編集した TeX ファイルを置く。

具体的な例

以上の latexmk-utf を使い慣れたエディタの TeX コマンドに設定すれば、簡単なキー操作のみで PDF 表示まで可能だ。

例えば TeXShop では、「環境設定」「タイプセット」「次のコマンドを利用: /usr/local/bin/latexmk-utf 」、「詳細」「LaTeX プログラム: /usr/local/bin/latexmk-utf 」と設定しておく。なお、今の場合 pTeX 拡張機能の「utf パーケージ対応」のチェックは外しておく。これで「タイプセット」(⌘T) で PDF 閲覧まで可能なはずだ。

Jedit X で編集作業を行う場合、TeXShop にコンパイル作業を任せると便利だ。TeXShop と外部エディタの連携 に書いたので興味のある方はご覧頂きたい。

Emacs の AUCTeX の場合は設定ファイルに、

(setq japanese-LaTeX-command-default "latexmk-utf")
(add-hook 'LaTeX-mode-hook (function (lambda ()
    (add-to-list 'TeX-command-list
             '("latexmk-utf" "latexmk-utf %t"
               TeX-run-TeX nil (latex-mode) :help "Run ASCII pLaTeX"))
    (add-to-list 'TeX-command-list
             '("pdfview" "open -a TeXShop.app '%s.pdf' " TeX-run-command t nil))
               )))

と書いておく。C-c C-c latexmk-utf <RET> でコンパイル、C-c C-c <RET> pdfview で TeXShop のプレビューが開く。C-c C-c Clean <RET> で中間ファイルが削除される (AUCTeX の設定と便利な機能 を参照)。

さて、上来のまとめとして具体的なテストファイルを用意してみた (buddh-utf8.tex)。インド学仏教学の分野では例えば次のような各種言語の混じった原稿を書く必要がある。

buddh-utf8.tex:

% -*- coding: utf-8; -*-
% platex -kanji=utf8 (TeX Live 2010/Fink)
documentclass[a4j,11pt]{jsarticle}
usepackage[T1]{fontenc}
usepackage[deluxe,multi]{otf}
usepackage[utf8x]{inputenc}
usepackage{ucs}
usepackage{txfonts}
usepackage{textcomp}
usepackage[english,french,japanese]{babel}
usepackage{extaccent}
begin{document}

section{Pali}
label{sec:pali}
begin{verse}
    pheṇapiṇḍūpamam rūpaṃ~/ vedanā bubbuḷupamā~/
    marīcikūpamā saññā~/ saṅkhārā kadalūpamā~/
    māyūpamañca viññāṇaṃ~/ dīpitādiccabandhunā~/
    % Saṃyuttanikāya 3, PTS, p. 142.
end{verse}


section{Sanskrit}
label{sec:skt}
begin{verse}
    phenapiṇḍopamaṃ rūpaṃ vedanā budbudopamā~/
    marīcisadṛśī saṃjñā saṃskārāḥ kadalīnibhāḥ~/
    māyopamaṃ ca vijñānam ukatam ādityabandhunā~//
    % Quoted in Bhavasaṅkrāntiṭīkā, A. Śastri ed., p. 36;
    % Prasannapadā, de la Vallée Poussin ed., pp. 41, 549; Bodhicittavivaraṇa,
    % Lindtner ed., p. 188, v. 12; Aśokāvadāna, S. Mukhopadhyaya ed., p. 48.
end{verse}

section{Tibetan}
label{sec:tib}
begin{verse}
    gzugs ni dbu ba rdos pa 'dra~// tshor ba chu bur dag daṅ mtshuṅs~//
    'du śes smig rgyu 'dra ba ste~// 'du byed rnams ni chu śiṅ bźin~//
    rnam śes sgyu ma lta bu źes~// de ñid gzigs pas bka' stsal to~//
    % Quoted in Yogācārabhūmi, D205b; Tarkajvālā, D72b;
    % Ratnapradīpa, D266b; Prajñāpradīpa, D113a;
    % Catuḥśatakaṭīkā, D62a.
end{verse}

section{Chinese}
label{sec:chin}
begin{verse}
    觀色如聚沫 受如水上泡
    想如春時燄 諸行如芭蕉
    諸識法如幻 日種姓尊說
    % 『雑阿含』T2, 69a; 『放光般若経』T8, 108a; 『大般若波羅蜜多経』T7,
    % 319c; 『華嚴経』T9, 672c; 『大宝積経』T11, 159a; 『大智度論』T25, 627a.
end{verse}

section{Japanese}
label{sec:jap}
begin{verse}
    色は気泡のようなものである。受は水泡のようなものである。
    想は陽炎のようなものである。諸行は芭蕉のようなものである。
    識は幻のようなものである。〔と、あたかも太陽が世界を照らすように〕
    太陽の裔 (仏陀) はお説きになった。
end{verse}

end{document}

このような原稿であっても 前回の記事 の内容も含め、上来の設定が完了していれば、一回のキー操作やクリック (あるいはコマンドラインから latexmk-utf) で PDF 表示まで可能なはずだ。

buddh-utf8.pdf:

https://skalldan.files.wordpress.com/2011/07/wpid-buddh-utf81.png

アクセント付きラテン文字や JIS X 0208 (JIS 第一・第二水準) に含まれない漢字 (上の例では「燄」や「說」) を LaTeX のエラーを気にせず直接入力あるいはコピー&ペーストできるというだけで随分と作業効率は改善されるだろう。

(上記のテストで使用したファイル buddh-utf8.zip)

少し進んだ利用

以上のように UTF-8 で TeX ファイルを作成すれば、視覚性は向上し作業効率は改善される。ここでは少し発展的な利用として、Emacs の Org-Mode から同じ結果を得る方法を紹介してみたい。Emacs の最近の動向として文章を書く際はこの Org-Mode で統一する、という方向へ向かっている気がする。Org-Mode から LaTeX 文書へエクスポートする際には、Emacs + Org Export + TeXShop で書いたように、コンパイル作業は TeXShop に任せている。設定方法などはその記事に書いたので興味のある方はそちらをご覧頂きたい。

Org-Mode で原稿を作成する場合、TeX シーケンス等を記述する必要がないので、見た目はさらに直感的になる。加えて、図や表なども作成しやすいように工夫されている (表の作成は こちらの記事 が参考になる。ditaa を利用した図の挿入に関しては こちら で紹介した)。以下にはサンスクリット語とチベット語のローマ字転写されたすべての文字の表示のテストも兼ねて、Org-Mode で作成した UTF-8 のファイルを LaTeX にエクスポートしてみる。

skt-tib-table.org:

#+TITLE: Sanskrit and Tibetan Transliteration
#+AUTHOR: skalldan
#+LANGUAGE: ja
#+OPTIONS:   num:t toc:t LaTeX:t
#+LATEX_CLASS: jsarticle
#------------------ Begin Document ---------------------------------
* Sanskrit characters in roman transliteration
#+CAPTION: *Vowels*
#+LABEL: skt_vow
|---------------+----------------------+-------+------+------|
|               |                      | short | long |      |
|---------------+----------------------+-------+------+------|
| simple vowels | guttural             | *a*   | *ā*  |      |
|               | palatal              | *i*   | *ī*  |      |
|               | labial               | *u*   | *ū*  |      |
|               | retroflex (cerebral) | *ṛ*   | *ṝ*  |      |
|               | dental               | *ḷ*   | *ḹ*  |      |
| diphthongs    | palatal              |       | *e*  | *ai* |
|               | labial               |       | *o*  | *au* |
|               |                      |       |      |      |
|---------------+----------------------+-------+------+------|

#+CAPTION: *Consonants*
#+LABEL: skt_cons
|-----------+------+----------------+--------+------------------+-------|
|           | surd | surd aspirated | sonant | sonant aspirated | nasal |
|-----------+------+----------------+--------+------------------+-------|
| guttural  | *ka* | *kha*          | *ga*   | *gha*            | *ṅa*  |
| palatal   | *ca* | *cha*          | *ja*   | *jha*            | *ña*  |
| retroflex | *ṭa* | *ṭha*          | *ḍa*   | *ḍha*            | *ṇa*  |
| dental    | *ta* | *tha*          | *da*   | *dha*            | *na*  |
| labial    | *pa* | *pha*          | *ba*   | *bha*            | *ma*  |
|-----------+------+----------------+--------+------------------+-------|

#+CAPTION: *Sibilants, Semivowels, Visarga and Anusvāra*
#+LABEL: skt_others
|-----------+------------+----------------+-------------+------------------+------------|
|           | surd       | surd aspirated | sonant      | sonant aspirated | nasal      |
|-----------+------------+----------------+-------------+------------------+------------|
| palatal   | *śa*       |                | *ya*        |                  |            |
| retroflex | *ṣa*       |                | *ra*        |                  |            |
| dental    | *sa*       |                | *la*        |                  |            |
| labial    |            |                | *va*        |                  |            |
|           |            | *ḥ*            |             | *ha*             |            |
|           |            |                |             |                  | *ṃ (ṅ, ṁ)* |
|-----------+------------+----------------+-------------+------------------+------------|
|           | (sibilant) | (visarga)      | (semivowel) | (aspiration)     | (anusvāra) |
|-----------+------------+----------------+-------------+------------------+------------|

#+LATEX: newpage
* Tibetan characters in roman transliteration
#+CAPTION: *Four vowels* (dbyaṅs bśi)
#+LABEL: tib_vow
|-----+-----+-----+-----|
| *i* | *u* | *e* | *o* |
|-----+-----+-----+-----|

#+CAPTION: *Thirty consonants* (gsal byed sum cu)
#+LABEL: tib_cons
|-------+--------+-------+------|
| *ka*  | *kha*  | *ga*  | *ṅa* |
| *ca*  | *cha*  | *ja*  | *ña* |
| *ta*  | *tha*  | *da*  | *na* |
| *pa*  | *pha*  | *ba*  | *ma* |
| *tsa* | *tsha* | *dza* | *wa* |
| *źa*  | *za*   | *'a*  | *ya* |
| *ra*  | *la*   | *śa*  | *sa* |
| *ha*  | *a*    |       |      |
|-------+--------+-------+------|

#+CAPTION: *Phoneticical classification* (sgra mdaṅs)
#+LABEL: tib_phone

|------------+------+-------+------+-------+------+------+-------+--------+-------+------+------+------|
| guttural   | *ka* | *kha* | *ga* | *ṅa*  | *'a* | *ha* | *a*   |        |       |      |      |      |
| palatal    | *i*  | *e*   | *ca* | *cha* | *ja* | *ña* | *tsa* | *tsha* | *dza* | *źa* | *ya* | *śa* |
| dental     | *ta* | *tha* | *da* | *na*  | *za* | *la* | *sa*  |        |       |      |      |      |
| labial     | *u*  | *o*   | *pa* | *pha* | *ba* | *ma* | *wa*  |        |       |      |      |      |
| nasal      | *ṅa* | *ña*  | *na* | *ma*  |      |      |       |        |       |      |      |      |
| tongue-tip | *ra* |       |      |       |      |      |       |        |       |      |      |      |
|------------+------+-------+------+-------+------+------+-------+--------+-------+------+------+------|

#+CAPTION: *Six reverse characters* (log yig drug)
#+LABEL: tib_rev

|------+-------+------+------+------+-------|
| *ṭa* | *ṭha* | *ḍa* | *ṇa* | *ṣa* | *kṣa* |
|------+-------+------+------+------+-------|

#------------------ End Document -----------------------------------

このような org ファイルに対して、C-c C-e p (Org Export as LaTeX and process to PDF) を実行する。すると自動的に LaTeX フォーマットに変換され、変換された LaTeX ファイルが TeXShop に渡りコンパイルが実行される。上で述べたように TeXShop の LaTeX コマンドにシェルスクリプト latexmk-utf を設定していると、Org-Mode から渡された UTF-8 の TeX ファイルは Utf82TeX によって pTeX が処理可能なコントロールシーケンスに変換され latexmk によって適切な回数タイプセットが実行される。成功すれば TeXShop のプレビューで PDF が表示される。

skt-tib-table.pdf:

https://skalldan.files.wordpress.com/2011/07/wpid-skt-table3.png https://skalldan.files.wordpress.com/2011/07/wpid-tib-table3.png

(上記のテストで使用したファイル skt-tib-table.zip)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s