OldSlav 1.1 を開発したところであるが,1 点致命的なバグを見つけた。OldSlav は \< という気息記号アクセント命令を定義している。ところが,ptetex UTF-8 対応のためにこれを \DeclareTextAccent で登録したため,グローバルに \< を書き換えてしまい,通常このコントロール・シーケンスに割り当てられている \inhibitglue を上書きしてしまっていたのだった。訂正版(同じアーカイブ名なんだけど)をアップしたので差し替えていただけると幸いである。oldchurchslavonic 環境外では \inhibitglue が \< で機能するようになるはずである。
ところで,教会スラヴ語訳聖書を眺めていて,その組み方を LaTeX の環境命令として実現するマクロがあると便利だと思った。聖書の組み方は次のようなものである。章の第一節・第一文字をインデントなしでドロッピングする,つまり,文頭の一文字だけを大きな文字で飾り組みする(古い文献によくあるマナーである)。二節目以降はインデントして教会スラヴ語様式で節番号を表示し,本文を続ける。その実際の教会スラヴ語聖書での姿をここに掲載したので,関心のある方は確かめてみてほしい。
ocsbiblija 環境マクロを作成してみた。ドロッピングは第一文字を \LARGE にし,\lower 命令で文字を下にずらすことによりレイアウトする。改段落のつどカウンタを回して,それが 2 以上の場合,自動的に教会スラヴ語の節番号を先頭に出力する。これは \everypar を再定義して実現する。第一節の 1 行目をインデントしないよう,\setbox0=\lastbox でインデントのボックスを取り除く。 一方,2 行目だけはドロッピング文字とのバランスを考慮し,所定サイズの字下げを付け,3 行目以降はインデントしないよう,\parshape 命令で調整する。設計はこのようなものである。以下にそのコードを示す。
% ocsbiblija 環境の定義 % - \begin{ocsbiblija}[<d|other>]{第一文字}本文 \end{ocsbiblija} % - オプション d なら第一文字をドロッピング(デフォルト),それ以外はそのまま % - 第一文字はグルーピングが必要 \makeatletter % ocsbiblija 環境の設定パラメータ初期値 \newdimen\ocsbibindent \ocsbibindent=0.65em\relax% 節番号前のインデント \newdimen\ocsbibskip \ocsbibskip=0.3em\relax% 節番号と本文のアキ \newdimen\ocsdropsize \ocsdropsize=0.45em\relax% 開始文字の下げ寸法 \newdimen\ocshangsize \ocshangsize=1.65em\relax% 第一節 2 行目のインデント \def\ocsbiblija{\@ifnextchar[\@ocsbiblija{\@ocsbiblija[d]}}% \def\@ocsbiblija[#1]#2{% #1 最初の文字; #2 ドロッピング対象文字; % 第一段落の定義 \dimen0=\linewidth \advance\dimen0 by-\ocshangsize \if#1d% dropping の場合 2 行目だけを \oocshangsize 分インデント \parshape 3 0pt \linewidth \ocshangsize \dimen0 0pt \linewidth \else% そうでない場合インデントしない \parshape 1 0pt \linewidth \fi% \leavevmode\setbox0=\lastbox% \parindent>0でもインデントを除去 \if#1d\lower\ocsdropsize\hbox{\LARGE#2}\else#2\fi% dropping % 第二段落以降の定義 \@tempcnta=1\relax \everypar{% \advance\@tempcnta by1\relax \ifnum\@tempcnta<1\relax% 第一節は節番号を振らない \else% 第二節以降は教会スラヴ語様式で節番号を振る \makebox[1em][c]{\slnum(\the\@tempcnta).}% \hskip\ocsbibskip\relax \fi% }% \parindent=\ocsbibindent\relax% 第二節目以降は \ocsbibindent 分インデント }% \def\endocsbiblija{\par}% \makeatother
\begin{ocsbiblija}[オプション] と \end{ocsbiblija} の間に本文を記述する。オプションに d 以外を指定すると,ドロッピングせずノーマルサイズで第一文字を組む。各種アキ,インデント幅,字下げ量はパラメータ初期値にあるコントロール・シーケンスを再設定すれば調整できる。本文の第一文字はグルーピングしなければならない。節毎に空行を入れて本文を記述してゆくと,第二節以降,自動的に節番号が教会スラヴ語様式で段落冒頭に出力される。
このマクロをプリアンブルに記述し,upLaTeX で組んだ画像を以下に示す。LaTeX 原稿: ocsbiblija.tex と PDF: ocsbiblija.pdf も掲載しておく。multicol.sty で二段組みにし,段組み線を入れると,まさに教会スラヴ語聖書らしくなった。
ocsbiblija 組版例
upLaTeX 原稿は以下のとおり。ocsbiblija 環境の定義は割愛してある。
% -*- coding: utf-8; mode: latex; -*- % OldSlav UTF-8 対応試験 \documentclass[a5paper,uplatex,papersize]{jsarticle} \usepackage[T1,T2A]{fontenc} \usepackage[utf8x]{inputenc}% ロシア語・ギリシア語向け。OldSlav は不要 \usepackage[polutonikogreek,oldchurchslavonic,russian,nippon]{babel} \languageattribute{oldchurchslavonic}{utf8}% OldSlav UTF-8 \usepackage{multicol}% 多段組 \kcatcode`б=15\relax% Cyrillic U+0400--U+04FF \kcatcode`ς=15\relax% Greek U+0370--U+03FF \kcatcode`Ἄ=15\relax% Greek Extended U+1F00--U+1FFF % SlavTeX フォントを 1.12 倍に拡大して使用 \DeclareFontFamily{LST}{cmr}{}% \DeclareFontShape{LST}{cmr}{m}{n}{<-> s * [1.12] fslavrm}{}% \setlength{\topmargin}{-15truemm} \setlength{\headheight}{7mm} \addtolength{\textheight}{20truemm} \renewcommand{\baselinestretch}{0.75} \pagestyle{empty} % ocsbiblija 環境の定義 省略(上記参照) \begin{document} \selectlanguage{nippon} \hfil OldSlav教会スラヴ語聖書組版マクロ\quad 露・希語混在試験\hfil \selectlanguage{oldchurchslavonic} \setlength{\columnseprule}{0.4pt} \begin{multicols}{2} \begin{ocsbiblija}[d] {В}ъ нач'алѣ б`ѣ сл'ово, \и сл'ово б`ѣ къ б_гу, \и б_гъ б`ѣ сл'ово.\par С'ей б`ѣ ^искон`и къ б_гу:\par вс^ѧ т'ѣмъ б'ыша, \и без\ъ нег`ѡ ничт'оже б'ысть, "єже б'ысть.\par Въ т'омъ жив'отъ б`ѣ, \и жив'отъ б`ѣ св'ѣтъ челов'ѣкѡмъ:\par \и св'ѣтъ во тм`ѣ св'ѣтитсѧ, \и тм`а <єг`ѡ не <ѡб\ъ'ѧтъ.\par Б'ысть челов'ѣкъ п'осланъ ѿ б_га, "имя <єм`у <іѡ'аннъ:\par с'ей прї'иде во свид'ѣтелство, да свид'ѣтелствуетъ <ѡ св'ѣтѣ, да вс`и в'ѣру "имутъ <єм`у.\par Не б`ѣ т'ой св'ѣтъ, но да свид'ѣтелствуетъ <ѡ св'етѣ:\par б`ѣ св'ѣтъ "истинный, "иже просвѣщ'аетъ вс'ѧкаго челов'ѣка гряд'ущаго въ м'іръ:\par въ м'ірѣ б`ѣ, \и м'іръ т'ѣмъ б'ысть, \и м'іръ <єг`ѡ не позн`а: \end{ocsbiblija} \end{multicols} \selectlanguage{polutonikogreek} \begin{verse} Ἄνδρα μοι ἔννεπε, Μοῦσα, πολύτροπον, ὃς μάλα πολλὰ\\ πλάγχθη, ἐπεὶ Τροίης ἱερόν πτολίεθρον ἔπερσε.\\ πολλῶν δ'' ἀνθρώπων ἴδεν ἄστεα καὶ νόον ἔγνω,\\ πολλὰ δ'' ὅ γ᾽ἐν πόντῳ πάθεν ἄλγεα ὃν κατὰ θῡμόν,\\ ἀρνύμενος ἥν τε ψῡχὴν καὶ νόστον ἑταίρων.\\ ἀλλ'' οὐδ'' ὧς ἑτάρους ἐρρύσατο, ἱέμενός περ;\\ αὐτῶν γὰρ σφετέρῃσιν ἀτασθαλίῃσιν ὄλοντο,\\ νήπιοι, οἳ κατὰ βοῦς Ὑπερίονος Ἠελίοιο\\ ἤσθιον; αὐτὰρ ὁ τοῖσιν ἀφείλετο νόστιμον ἦμαρ.\\ \end{verse} \hfill {\em [ \textit{Ὅμηρος} ]}\qquad\qquad \selectlanguage{russian} \begin{verse} Ты проходишь без улыбки,\\ Опустившая ресницы,\\ И во мраке над соборам\\ Золотятся купола.\par \vspace{1em} Как лицо твое похоже.\\ На вечерних богородиц,\\ Опускающих ресницы,\\ Пропадающих во мгле...\par \vspace{1em} Я стою в тени портала,\\ Там, где дует резкий ветер,\\ Застилающий слезами\\ Напряженные глаза. \end{verse} \hfill {\em Александр Блок}\qquad\qquad \end{document}
このマクロを OldSlav にも入れようかと思ったが,その他の教会スラヴ語マナーを含めもう少し総合的なマクロ集ができた段階にすることにした。
今回,\parshape,\everypar,インデントの仕組み等々の解説で Victor Eijkhout の著書『TeX by Topic』がとても役に立った。LaTeX マクロを自作したい方は必携の文献である。
アスキー出版局