e-upTeX

upTeX は、pTeX の内部 Unicode*1版です。 pTeX では漢字/かな/和文記号としてJIS第一・第二水準(JIS X 0208)の範囲を扱うのに対し、upTeX では漢字/かな/CJK(日中韓)記号/ハングルとして Unicode の範囲を扱えるようになっています。 そのおかげで、従来は otf パッケージなどが必要であった丸数字(①②③…)なども、ソースにそのまま記述してコンパイルできます。 また、\kcatcode の設定切替えで欧文 LaTeX の \inputenc{utf8} や Babel が障害なく利用でき、CJK 以外の多言語についても pLaTeX よりも扱いやすくなっています。

e-upTeX は upTeX に e-TeX 拡張を追加したものです。 e-pTeX の成果を upTeX に取り込んだもので、現在では uplatex を起動したときに使われるのは e-upTeX になっています。



特徴

注意点

-guess-input-enc による文字コードの自動判別機能で間違った文字コードに判別されるパターンが存在する

以下の様な TeX ファイルを hoge.tex という名前で UTF-8 without BOM で保存します.

\documentclass[uplatex]{jsarticle}
\begin{document}
日本語①
\end{document}

hoge.tex を

uplatex -guess-input-enc hoge

のように文字コードの自動判別機能を使用してタイプセットすると UTF-8 without BOM ではなく Shift_JIS として間違った文字コードで判別されてタイプセットされます.

(./hoge.tex(guessed encoding: Shift_JIS = sjis)

この場合は

uplatex -kanji=utf8 -no-guess-input-enc hoge

として -kanji=utf8 -no-guess-input-enc オプションを指定してタイプセットまたは UTF-8 with BOM で保存すれば OK です.

不具合

biblatex の backend に bibtex を指定して upbibtex (upBibTeX 0.99d-j0.33-u1.21) を使用すると upbibtex がフリーズする

upbibtex (upBibTeX 0.99d-j0.33-u1.22) を使用すると回避できます. または pbibtex を使用すると回避できます.

pbibtex -kanji=utf8 hoge

biblatex を使用する場合は backend に biber を指定して biber を使用するのがおすすめです.

biber --bblencoding=utf8 -u -U --output_safechars hoge

インストール

TeX Live

TeX Live には upTeX が含まれています。

W32TeX

W32TeX には fileuptex-w32.tar.xz が含まれています。

最初の例

例えば、以下のようなデータを Unicode 対応のテキストエディタで編集し、文字コード UTF-8 で kumo.tex というファイル名で保存します。

% kumo.tex
\documentclass{utarticle}
\begin{document}
\section{幸田露伴「雲のいろ〳〵――卿雲」}
景雲といひ、卿雲といひ、慶雲といへる、しかと指し定められたる雲にはあらざるべし。
卿雲爛たり糺縵〻たり、といへる、煙にあらず雲にあらず紫を曳き光を流す、といへる、
大人作矣、五色氤氳、といへる、金柯初めて繞繚、玉葉漸く氤氳、といへる、
還つて九霄に入りて沆瀣を成し、夕嵐生ずる處鶴松に歸る、
といへる詩の句などによりて見れば、歸するところは美しき雲といふまでなり。
\end{document}

次に、コマンドラインで以下のコマンドを入力することにより、コンパイルします。

uplatex kumo.tex

さらに、dviwareで処理します。 この例では dvipdfmx で pdf 化します。

dvipdfmx kumo.dvi

出力として kumo.pdf が得られます。

もしくは,ptex2pdf を使用しても OK です.

ptex2pdf -u -l kumo

TeXworks, TeXShop, LyX, TeXstudio など、その他の統合環境を用いる場合は、それぞれのソフトで適切な設定を行えば upTeX (upLaTeX) を使用してコンパイルできます。

簡単な使い方

upTeX, upLaTeX は、pTeX, pLaTeX とほぼ同様に使うことができます。 pTeX, pLaTeX で利用しているコマンド名等は以下のように読み替えてください。

jsarticle.cls では、uplatex オプションを追加してください。 otf パッケージでは、uplatex オプションを追加してください。

\documentclass[uplatex]{jsarticle}
\usepackage[uplatex]{otf}
\begin{document}
  ①②③
\end{document}

dviware

TeX Live, W32TeX に含まれる dvipdfmx, dvips, dvi2tty, dvisvgmは、upTeX対応済みです。

日本語ファイル名

TeX Live 2014 以降はWindows版においてファイル名に日本語や他言語のUnicode文字が使用できます.

texmf.cnf に command_line_encoding.dvipdfmx = utf8 を設定すると \includegraphics{表題.pdf} のように記述できます.

texmf.cnf に command_line_encoding.dvips = utf8 を設定すると \includegraphics{表題.eps} のように記述できます.

Linux版においてはロケールがUTF-8系であればファイル名に日本語や他言語のUnicode文字が使用できます.

upTeX, upLaTeXによる多言語処理

仕様

upTeXは、\kcatcode の設定次第で、入力された UTF-8 の文字を内部処理に渡す際に CJK トークン(漢字, かな, CJK記号, ハングルのいずれか)か、または、欧文の 8-bit 文字からなる UTF-8 の文字列に振り分けて処理します。 \kcatcode は、Unicode の block ごとに設定可能です。 以下では基本的な書き方を例示していますが、PXbaseパッケージを利用すると、フォント、\kcatcode、babel の設定などを簡便にできます。

CJK (日本語、中国語、韓国語)

upTeX のデフォルトで、U+0080 以上の文字は、漢字, かな, CJK 記号, ハングル のいずれかに設定されています。 適切なフォントに切り替えるだけで、CJK 混植の文書を作成できます。 以下は、入力例です。

\documentclass{ujarticle}
% CJK fontの設定
\DeclareFontFamily{JY2}{jpnrm}{}
\DeclareFontFamily{JY2}{schrm}{}
\DeclareFontFamily{JY2}{tchrm}{}
\DeclareFontFamily{JY2}{korrm}{}
\DeclareFontShape{JY2}{jpnrm}{m}{n}{<->s*[0.962216]upjpnrm-h}{}
\DeclareFontShape{JY2}{schrm}{m}{n}{<->s*[0.962216]upschrm-h}{}
\DeclareFontShape{JY2}{tchrm}{m}{n}{<->s*[0.962216]uptchrm-h}{}
\DeclareFontShape{JY2}{korrm}{m}{n}{<->s*[0.962216]upkorrm-h}{}
\DeclareFontShape{JY2}{jpnrm}{bx}{n}{<->ssub*jpnrm/m/n}{}
\DeclareFontShape{JY2}{schrm}{bx}{n}{<->ssub*schrm/m/n}{}
\DeclareFontShape{JY2}{tchrm}{bx}{n}{<->ssub*tchrm/m/n}{}
\DeclareFontShape{JY2}{korrm}{bx}{n}{<->ssub*korrm/m/n}{}
\DeclareRobustCommand\jpnrm{\kanjifamily{jpnrm}\selectfont}
\DeclareRobustCommand\schrm{\kanjifamily{schrm}\selectfont}
\DeclareRobustCommand\tchrm{\kanjifamily{tchrm}\selectfont}
\DeclareRobustCommand\korrm{\kanjifamily{korrm}\selectfont}
\begin{document}
\section{日本語}
\jpnrm
すべての人間は、生まれながらにして自由であり、かつ、尊厳と権利とについて平等である。
人間は、理性と良心とを授けられており、互いに同胞の精神をもって行動しなければならない。
\section{中国語・簡体字 {\schrm 简体中文}}
{\schrm
人人生而自由,在尊严和权利上一律平等。
他们赋有理性和良心,并应以兄弟关系的精神相对待。
}
\section{中国語・繁体字 {\tchrm 繁體中文}}
{\tchrm
人人生而自由,在尊嚴和權利上一律平等。
他們賦有理性和良心,並應以兄弟關係的精神相對待。
}
\section{韓国語 {\korrm 한국어}}
{\korrm
\xkanjiskip=.1zw plus 1pt minus 1pt
모든 인간은 태어날 때부터 자유로우며 그 존엄과 권리에 있어 동등하다.
인간은 천부적으로 이성과 양심을 부여받았으며 서로 형제애의 정신으로 행동하여야 한다.
}
\end{document}

pxbabelパッケージを利用すると、CJK 言語間の切り換えが簡便になります。

欧文 (ギリシャ文字、キリル文字を含む)

upTeX のデフォルトでは、U+0080 以上の文字の大部分*2は欧文としては処理されませんが、\kcatcode を 15 に設定することで、欧文の 8-bit 文字列として扱うことが出来ます。 欧文 LaTeX の inputenc パッケージを利用することで、UTF-8 で記述された文書が処理出来ます。 pLaTeX の場合では、ギリシャ文字、キリル文字は必ず和文扱いされます*3が、upLaTeX の場合は、ギリシャ文字ブロック、キリル文字ブロックの \kcatcode を 15 に設定することで回避できます。 upLaTeXでの全角ギリシャ文字の取り扱い もご参照ください。 ギリシャ文字とキリル文字のフォントのインストールは新 pTeX とBabelをご参照ください。 欧文 LaTeX の babel パッケージも、欧文 LaTeX と同様に利用出来ます。 以下は、入力例です。

\documentclass{ujarticle}
%\usepackage{lmodern}% Latin Modern
\usepackage[utf8x]{inputenc}
%\usepackage{type1ec}
\usepackage[T2A,T2B,T2C,T1]{fontenc}
\usepackage[french,german,czech,russian,greek,japanese]{babel}
\begin{document}
\kcatcode"E7=15%  ç:U+00E7   15: not cjk character
\kcatcode"154=15%  Ŕ:U+0154
\kcatcode`П=15
\kcatcode`α=15
\kcatcode`ἀ=15
\kcatcode`“=15
\selectlanguage{french}
\section{フランス語 Français}
Tous les êtres humains naissent libres et égaux en dignité et en droits.
Ils sont doués de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternité.
\selectlanguage{german}
\section{ドイツ語 Deutsch}
Alle Menschen sind frei und gleich an Würde und Rechten geboren.
Sie sind mit Vernunft und Gewissen begabt und sollen einander im Geiste der Brüderlichkeit begegnen.
\selectlanguage{czech}%
\section{チェコ語 Czech}
Všichni lidé rodí se svobodní a sobě rovní co do důstojnosti a práv.
Jsou nadáni rozumem a svědomím a mají spolu jednat v duchu bratrství.
\selectlanguage{russian}
\section{ロシア語 \fontencoding{T2A}\selectfont{}Русский}
\fontencoding{T2A}\selectfont
Все люди рождаются свободными и равными в своем достоинстве и правах.
Они наделены разумом и совестью и должны поступать в отношении друг друга в духе братства.
\fontencoding{T1}\selectfont
\selectlanguage{greek}
\section{ギリシア語 Ελληνικά}
'Ολοι οι άνθρωποι γεννιούνται ελεύθεροι και ίσοι στην αξιοπρέπεια και τα δικαιώματα.
Είναι προικισμένοι με λογική και συνείδηση, και οφείλουν να συμπεριφέρονται μεταξύ τους με πνεύμα αδελφοσύνης.
\selectlanguage{japanese}
\section{日本語}
すべての人間は、生まれながらにして自由であり、かつ、尊厳と権利とについて平等である。
人間は、理性と良心とを授けられており、互いに同胞の精神をもって行動しなければならない。
\end{document}

ヘブライ語

TeX Live, W32TeX に含まれる uplatex コマンドは、e-TeX 拡張を含んだ e-upTeX をコンパイラとしているため、TeX--XeT 機能が利用できます。 ヘブライ文字ブロックの \kcatcode を 15 に設定することで、欧文 LaTeX と同様、babel パッケージの hebrew オプションが利用出来ます。

その他の言語

upTeX 自身の機能としてアラビア文字など複雑な文字をレンダリングする能力を持っているわけではありません。 しかし、欧文 TeX で使用できるパッケージなどを利用することにより組版を実現できます。

関連リンク

ChangeLog

を参照.

upTeX

e-upTeX


*1 内部 Unicode になっているのは、CJK の文字。欧文の処理は欧文 TeX, pTeX と同様、8-bit のままです。
*2 upTeX-1.23以降は、欧文の一部のデフォルトが欧文となります。TeXフォーラムの記事を参考。
*3 プリプロセッサなどで入力を^^ab形式に変換すれば欧文扱いが可能です。

Last-modified: 2018-02-24 (土) 19:05:44 (177d)