f

アーカイブ

2013-10-31

LyXでuplatexを使いギリシャ文字やアクセント付き文字をそのまま表示

従来のplatexでは、内部処理がShift JISやEUC-JPであったため半角カタカナやギリシャ文字といったUnicode文字列が正しく表示されない。全角で表示されたり文字が消えてしまう。

2007年ごろから内部処理をUnicode化したupLaTeXが登場した。upLaTeXを使うことでこの問題は解決できる。uplatexは実質的にplatexの上位互換であるためuplatexの利用が推奨される。uplatexはUnicode文字列をそのまま正しく表示できるため非常に便利である。具体的には次のような3ケースでuplatexの利点が発揮される。
  1. 国際単位系(SI)において、10 − 6を表すμという接頭辞をはじめとするギリシャ文字。
    platex: 入力されたμは全角で表示される。
    uplatex: μと入力したものがそのまま半角で正しく表示できる。
  2. 参考文献(bibファイル)中の著者名のウムラウト(二重点:ö)やアクセント記号のついた文字(â、ă)。
    platex: エラーが起きるため、逐一\”{o}というように該当箇所のLaTeXコマンドによる置き換えが必要。
    uplatex: 混入していても問題なし。
  3. 半角カタカナ。
    platex: 表示されない。
    uplatex: 表示可能
以上のように、uplatexを使うと日本語の文書作成で使える文字の幅が格段に広がり非常に便利である。ここではLyXにおいてuplatexを導入しこれらの文字を正しく表示する方法を説明する。

LyXの設定

  1. platexをuplatexに変更
    今までplatexとしていたところをuplatexに置き換える。
    Tools ▷ Preferences… ▷ File Handling ▷ Converters
    Converter Definitions: LaTeX (pLaTeX) -> DVI
    項目元々の値変更後
    Converterplatexuplatex
    Extra flaglatex=platexlatex=uplatex
    修正後Modify ▷ Save
  2. documentclassの変更
    uplatexを使うにあたってclassファイルで設定しているフォントのエンコーディングをJY1やJT1からJY2やJT2に変更する必要がある。通常は、JY2やJT2にしているdocumentclassを使用すればよい。jsarticleとjsbookについてはオプションを指定することで対応できる。以下ではjsarticleを使った例を示す。jreportに対応するクラスを使うには後述するレイアウトを追加して行う。
    Document ▷ Settings… ▷ Document Class
    Document class: Japanese Article (jsarticle)
    Class options
    • Custom: uplatex
  3. bibtexについて。upbibtexというものが一応あるが、uplatexを使っていれば通常通りpbibtexを使っていても問題なかった。

レイアウトの追加

uplatex対応のdocumentclassは標準のLyXではjsarticleとjsbookのみである。その他のujarticle、ujbook、ujreportなどを使うにはLyXに対応するレイアウトを追加する必要がある。その追加方法について説明する。
LyXの標準のレイアウトファイルの場所は以下にある。
c/Program Files/LyX 2.1/Resources/layouts
ここに以下のファイルがある。
jarticle.layout, jreport.layout, jbook.layout
tarticle.layout, treport.layout, tbook.layout
最初にtが付いているものは縦書用のclsファイルのためのものである。これらのファイルを参考にuplatexに使用するclassファイルを読み込む独自のレイアウトファイルを作成する。作成するといっても上記のひな形ファイルでclassファイルを宣言している箇所を変更するだけなので非常に簡単である。jreport.layoutをコピーしてから変更してujreport.layoutを作成する例を示す。
jreport.layoutの内容
#% Do not delete the line below; configure depends on this
# \DeclareLaTeXClass[jreport]{Japanese Report (jreport)}
# \DeclareCategory{Reports}
# Japanese report textclass definition file.
# Author : Koji Yokota (yokota@res.otaru-uc.ac.jp)
# This style provides japanese features
Format 48
Provides japanese 1
# Input general definitions
Input report.layout

ujreport.layoutの内容
#% Do not delete the line below; configure depends on this
# \DeclareLaTeXClass[ujreport]{Japanese Report (ujreport)}
# \DeclareCategory{Reports}
# Japanese report textclass definition file.
# This style provides japanese features
Format 48
Provides japanese 1
# Input general definitions
Input report.layout

2行目の”jreport”となっている箇所を”ujreport”に修正するだけである。なお、Format 48となっている箇所はLyX 2.0系統ではFormat 35となっている。
必要に応じて、同様に修正して以下のレイアウトファイルを作る。
ujarticle.layout, ujbook.layout, ujreport.layout
utarticle.layout, utbook.layout, utreport.layout
作成したlayoutファイルはもとのlayoutファイルがあった場所
c/Program Files/LyX 2.1/Resources/layouts
に保存しても良いが、オリジナルの配布物と分けるため以下のようにユーザー用の場所に保存した方がよいだろう。
C:\Users\Senoo\AppData\Roaming\LyX2.1\layouts

パッケージの読み込みとギリシャ文字やウムラウトの表示

実際にギリシャ文字やウムラウトといった文字を表示するために必要なLaTeXのパッケージなどの設定を説明する。
以下の内容をプリアンブルに記述。
\usepackage[utf8]{inputenc}
\usepackage[prefernoncjk]{pxcjkcat}
pxcjkcatは最近のものだと標準で存在している。以下のようにpxcjkcatを読み込む代わりに手動で\kcatcodeを設定しても良い。

\kcatcode‘ç=15% not cjk character
\kcatcode‘Ŕ=15
\kcatcode‘П=15
\kcatcode‘α=15
\kcatcode‘ἀ=15
\kcatcode‘“=15
こうすることでウムラウト(aouなどに二重点がついたもの)や各種アクセント記号(’、‘、v、^など)・ギリシャ文字が半角で表示される。この設定を行わないと全角で表示される。試しに以下の文字列を入力して表示させてみよう。
ÄäÖöÜü, μ, αβ, あアア
This document contains English, Română, 日本語
”’
LyXでない通常のLaTeXでやるのはもっと簡単で以下のように適切なclsファイルとパッケージを読み込んでuplatexで処理するだけである。

\documentclass[uplatex]{jsarticle}
\usepackage[utf8]{inputenc}
\usepackage[prefernoncjk]{pxcjkcat}
\begin{document}
ÄäÖöÜü, μ, αβ, あアア
This document contains English, Română, 日本語

\end{document}
参考

課題

\usepackage[prefernoncjk]{pxcjkcat}
上記のようにpxcjkcatパッケージを読むこむと、通常は問題ないのだが、文書中に°(U+00B0)や→(U+2190)、§といった文字があると以下のようなエラーが出る。
! TeX capacity exceeded, sorry [save size=80000]. 
texmf-dist/web2c/texmf.cnfのこのサイズを大きくしたり、該当するkcatcodeを設定しても解決できなかった。おそらくフォントがうまくインストールされていないからだと思われるが詳細は不明。今後調査を続ける。
ギリシャ文字やアクセント付き文字が全角になってしまうが、pxcjkcatパッケージやkcatcodeを設定しないことでこのエラーを回避する。半角カタカナなど今まで表示できなかった文字が表示できるようになっただけよしとしよう。

0 件のコメント:

コメントを投稿