マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

Babel な話:LGR を普通のエンコーディングにする話(lgrx パッケージ) (4)

LGR エンコーディングを utf8 入力エンコーディングで使用する

従来は、LaTeX 標準の UTF-8 用入力エンコーディングである utf8 は LGR エンコーディングには対応してなくて、UTF-8 での直接入力を行うためには ucs パッケージ*1が提供する utf8x 入力エンコーディングを用いる必要があった。ところが、lgrx パッケージには、utf8 での使用に必要な、「Unicodeエンコーディング定義ファイル」*2を提供しているので、これがインストールされていれば、LGR エンコーディングを utf8 入力で用いることが可能である。

% The file is encoded in UTF-8.
\documentclass[a4paper]{article}
\usepackage[LGRx,OT1]{fontenc}
% LGR mapping correction (*)
\DeclareTextSymbol{\textperiodcentered}{LGR}{59} % U+00B7〈·〉
%\DeclareTextSymbol{\anoteleia}{LGR}{59} % U+0387〈·〉
\usepackage[utf8]{inputenc} % NOT utf8x!!
\newcommand*{\greekscript}{\fontencoding{LGR}\selectfont}
\begin{document}
\begin{quote}\greekscript
«Ὁ κόσμος σκηνή, ὁ βίος πάροδος· ἦλθες, εἶδες, ἀπῆλθες.»
\end{quote}
\end{document}

勿論、Babel(および teubner)と併用することもできる。ギリシャ語の分綴を用いるには Babel が必要であり、また以下の例では hyphsubst パッケージを用いて古典ギリシャ語の分綴を有効にしている。*3

% The file is encoded in UTF-8.
\documentclass[a4paper]{article}
\usepackage[LGRx,OT1]{fontenc}
% LGR mapping correction (*)
\DeclareTextSymbol{\textperiodcentered}{LGR}{59} % U+00B7〈·〉
% if an apostrophe should have the form of a spiritus lenis (**)
\DeclareTextSymbol{\textquoteright}{LGR}{39} % U+2019〈’〉
\usepackage[utf8]{inputenc}
\usepackage[greek,english]{babel}
\usepackage{teubner}
% Hyphenation "greek" should mean "ancientgreek"
\usepackage[greek=ancientgreek]{hyphsubst}
\begin{document}
\noindent The first passage from
\emph{Odyssey \foreignlanguage{greek}{(ΟΔΥΣΣΕΙΑ)}}, Book I.
\begin{quote}\begin{otherlanguage*}{greek}
Ἄνδρα μοι ἔννεπε, Μοῦσα, πολύτροπον, ὃς μάλα πολλὰ\\
πλάγχθη, ἐπεὶ Τροίης ἱερόν πτολίεθρον ἔπερσε.\\
πολλῶν δ’ ἀνθρώπων ἴδεν ἄστεα καὶ νόον ἔγνω,\\
πολλὰ δ’ ὅ γ’ ἐν πόντῳ πάθεν ἄλγεα ὃν κατὰ θῡμόν,\\
ἀρνύμενος ἥν τε ψῡχὴν καὶ νόστον ἑταίρων.\\
ἀλλ’ οὐδ’ ὧς ἑτάρους ἐρρύσατο, ἱέμενός περ·\\
αὐτῶν γὰρ σφετέρῃσιν ἀτασθαλίῃσιν ὄλοντο,\\
νήπιοι, οἳ κατὰ βοῦς Ὑπερίονος Ἠελίοιο\\
ἤσθιον· αὐτὰρ ὁ τοῖσιν ἀφείλετο νόστιμον ἦμαρ.\\
τῶν ἁμόθεν γε, θεά, θύγατερ Διός, εἰπὲ καὶ ἡμῖν.
\end{otherlanguage*}\end{quote}
\end{document}
UTF-8 直接入力の注意点

UTF-8 での入力の際の注意点を述べる。一般的な utf8 による入力についての注意はここでも当てはまる。すなわち、LGR の文字は現在のフォントエンコーディングが LGR でないと出力できないし、また Unicode の結合文字や LaTeX のアクセント命令は使えない。その他に、ギリシャ語の句読点には特別に注意が必要なものがある。

セミコロン(ano teleia)U+00B7*·※1 補正(a)が必要
U+0387·※1 補正(b)が必要
U+003B;※2 ASCII 翻字
疑問符(erotimatiko)U+003B*;※2 と見做されるので不可
U+037E;
U+003F?ASCII 翻字
アポストロフィU+2019*pTeX では不可;※3
U+0027'※3 無気記号になるので不可
''ASCII 翻字
[補正用コード]
(a) \DeclareTextSymbol{\textperiodcentered}{LGR}{59} % U+00B7
(b) \DeclareTextSymbol{\anoteleia}{LGR}{59}          % U+0387
(c) \DeclareTextSymbol{\textquoteright}{LGR}{62}     % U+2019
  • 「UCS」の欄に * があるのは「Unicode として好ましい入力」を示す。*4
  • ※1: LGRx のエンコーディング定義中のマッピング定義が不適切なので正しい文字が出力されないので、(a) や (b) の補正が必要である。上掲の文書ソースでは (*) の箇所に補正コードがある。(ano teleia は U+00B7 で入力している。)
  • ※2: ASCII 文字は「ASCII 翻字」の変換対象になり、この変換を抑止することはできない。だから、〈;〉は erotimatiko ではなく ano teleia になる。erotimatiko を出力するためには U+037E あるいは ASCII 入力の〈?〉を使う必要がある。(ano teleia の意味で〈;〉を使う場合は erotimatiko と混同しないように注意が必要。)
  • 省音を示すのに使われるアポストロフィは U+2019 である。多くのエンコーディングでは〈'〉(U+0027)の入力で U+2019 が出るが、LGR の ASCII 翻字では単独の〈'〉は単独の無気記号〈᾿〉になる。LGR で U+2019 のための入力は〈''〉である。しかし、敢えて無気記号のグリフをアポストロフィとして用いたい場合もあるようだ。*5この場合は、ASCIi 翻字では〈'〉で構わないが、Unicode で直接入力においては、やはり U+2019 を入力すべきである。そこで、この場合は、(c) の補正コードを用いて、「アポストロフィ\textquoteright)」から LGR のグリフへの対応を変更するとよいであろう。*6上掲の「オデュッセイア」の例でこの補正((**) の行を活かす)を行った場合の出力(3〜6 行目)を掲載しておく。

*1:以前は「unicode パッケージ」の名であったが、つい最近、パッケージ名が「パッケージファイルの名前」と同じ ucs に改められた。

*2:ファイル名は lgrenc.dfu。一般にエンコーディング XXX に対する Unicode 用定義ファイルは xxxenc.dfu という名前である。

*3:もっとも、この例に現れるテキストは改行が入った韻文なので分綴は実際には関係しないのであるが。

*4:U+0387 および U+037E を正規化すると、それぞれ U+00B7 と U+003B に変換される。

*5:ギリシャではアポストロフィと無気記号のグリフは同形であるべきとされるようである。

*6:この処置の妥当性は、TeX のフォントエンコーディングというのは Unicode 文字の連なりでなくグリフの連なりであるという立場に依拠する。