OldSlav 教会スラヴ語聖書環境

|

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.jpg

このマクロを OldSlav にも入れようかと思ったが,その他の教会スラヴ語マナーを含めもう少し総合的なマクロ集ができた段階にすることにした。

今回,\parshape\everypar,インデントの仕組み等々の解説で Victor Eijkhout の著書『TeX by Topic』がとても役に立った。LaTeX マクロを自作したい方は必携の文献である。
 

Moon Calendar

Profile

ISAO YASUDA。システムエンジニア。神奈川県在住。昭和 30 年代を懐かしむオヤジ。ロシアに興味があります。
[more], [About our site]

Notice

この文書はフィクションであり,実在する個人,団体等とは一切関係ありません。

R-18 指定サイトです。そのうち「18 歳以上ですか」の認証を入れる予定です。

文書の記述内容は無保証です。不適切な表現があればコメントにてご指摘ください。

コメント,トラックバックは,現在,運用を停止しています。ご意見等ありましたら isao@yasuda.homeip.net 宛電子メールにてお願いします。

Links

About this entry

Written by isao at 2009年12月26日 18:00.

Previous: X'max パーティ

Next: 困った客---婆さん俳人

Recent Entries in Main Index.
All Entries in Archive Index.

February 2012

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
Powered by Movable Type 4.1 blog counter