boundarychar を使った場合に不具合があるかもしれない……
LGR エンコーディングにおいては » は )) で表すことができる.ただし,これはリガチャを利用している.これは grmn1000.pl などを見るとわかる.grmn1000.pl は次のように生成する(grmn1000.tfm は cbfonts に含まれている).
$ tftopl grmn1000.tfm grmn1000
これをテキストエディタで開くと次のような記述が見つかる.
(LABEL O 51) (LIG O 51 O 175) (STOP)
これは8進数(Octal)で51番目にある文字(つまり「)」)に,8進数51の文字(つまり「)」)が続いたときには8進数175の文字(つまり「»」)に置き換える,ということである.
ところで,ギリシア語フォントにおいては,) あるいは » の前のアキは異なるのが普通である.フォントによってはそれぞれアキを調整したい場合がある.たとえば,「α」にそれらが続く場合にアキを調整したいとする.この場合は LIGTABLE に次のような記述を追加する.
(LABEL C a) (KRN O 51 R 0.1) (KRN O 175 R 0.5) (STOP)
第2行は,8進数51の文字(「)」)が続く場合には0.1のアキ(カーニング)を挿入し,8進数175(「»」)が続く場合には0.5のアキを挿入する,ということを意味する.
これで次のような内容を含む .tex ファイルを処理する.なお,UTF-8 になるので unicode パッケージを用い,(p のつかない)latex か,uplatex で処理する.
α) α)) α»
左側の例は0.1のアキ,右側の例は0.5のアキになる.中央の例は0.5のアキとなることが期待されるが,実際は0.1のアキになる.これは,リガチャを行う前に α) のアキが決定されてしまうためである.
これを回避するためには,一貫して » を用いるか,文字コードを用い,\char'175 のようにアクセスする(コマンドで定義すればよい).
リガチャによって,「似ていない」文字に置き換えられる場合は注意が必要である.
たとえば Adobe Garamond フォントを T1 エンコーディングで使う場合には,t1pad.fd のようなファイルが必要である.
t1pad.fd>
\DeclareFontFamily{T1}{pad}{} \DeclareFontShape{T1}{pad}{m}{n}{ <-> padr8t}{} \DeclareFontShape{T1}{pad}{m}{it}{ <-> padri8t}{} . . .
欧文部分が T1 エンコーディングのみの場合はこれで問題ない.
ギリシア語部分には LGR エンコーディングを用いるので,ギリシア語を含む場合にはこの方法だけでは不十分なはずである.しかし TeX では,あるエンコーディングを定義した場合には,デフォルトのフォントを指定することになっているので,代用を行ってくれる.
LaTeX Font Warning: Font shape `LGR/pad/m/n' undefined (Font) using `LGR/cmr/m/n' instead on input line 37.
これは,「LGR エンコーディングで,ファミリーが pad,シリーズが m,シェイプが n のものが定義されていないので,ファミリーが cmr,シリーズが m,シェイプが n のもので代用する」という意味である.したがって Computer Modern フォントの LGR エンコーディングのものが使用される(これは通常 cbfonts のものが使われる).
lgrpad.fd のようなファイルを作って,LGR エンコーディングで使用されるフォントを定義することができる.
lgrpad.fd>
\DeclareFontFamily{LGR}{pad}{} \DeclareFontShape{LGR}{pad}{m}{n}{ <-> tfmname1}{} \DeclareFontShape{LGR}{pad}{m}{it}{ <-> tfmname2}{} . . .
これは Adobe Garamond に従属するギリシア語フォントが存在する場合には有効だが,一般にはそのようなものは存在しない(Adobe Garamond にはギリシア語のグリフが存在するが,ローマ文字を Adobe Garamond で組んだとしても,ギリシア文字にはそれを使うというわけではない).したがって,このファイルを $TEXMF に入れておくかどうかは難しい問題である.
$TEXMF に入れない場合は,目的の .tex ファイルと同じディレクトリに lgrpad.fd のようなファイルを入れておくか,目的の .tex の冒頭でフォント定義を書いた .tex ファイルを読み込むようにするとよい.たとえば,ギリシア語の通常体には Lipsiakos フォントを,ボールド体には Lipsiakos フォントの太字を使う場合は次のようにする.なお,Lipsiakos のボールド体には grbl1000 が用意されているが,これでは細いので,より太い grxl1000(bold eXtended)を用いている.
\DeclareFontFamily{LGR}{pad}{} \DeclareFontShape{LGR}{pad}{m}{n}{ <-> grml1000}{} \DeclareFontShape{LGR}{pad}{m}{it}{<->ssub - pad/m/n}{} \DeclareFontShape{LGR}{pad}{m}{sl}{<->ssub - pad/m/n}{} \DeclareFontShape{LGR}{pad}{m}{sc}{<->ssub - pad/m/n}{} \DeclareFontShape{LGR}{pad}{b}{n}{ <-> grxl1000}{} \DeclareFontShape{LGR}{pad}{b}{it}{<->ssub - pad/b/n}{} \DeclareFontShape{LGR}{pad}{b}{sl}{<->ssub - pad/b/n}{} \DeclareFontShape{LGR}{pad}{b}{sc}{<->ssub - pad/b/n}{} \DeclareFontShape{LGR}{pad}{bx}{n}{<->ssub - pad/b/n}{} \DeclareFontShape{LGR}{pad}{bx}{it}{<->ssub - pad/b/n}{} \DeclareFontShape{LGR}{pad}{bx}{sl}{<->ssub - pad/b/n}{} \DeclareFontShape{LGR}{pad}{bx}{sc}{<->ssub - pad/b/n}{}
これを lgrpad.fd として保存しておくか,padgrml.tex のようなファイルにしておき,プリアンブルで \input{padgrml} として読み込む.前者の場合は自動的に読み込まれるので,特に \input などを用いる必要はない.
「このローマ文字のフォントに対してはこのギリシア文字のフォント」という組み合わせを決めているならば,lgrpad.fd のようなファイルを作って自分用の texmf 以下に格納しておけばよい.
一応 jsarticle.cls などでの関連する定義を確認しておく.
\kanjiskip=0zw plus .1zw minus .01zw \xkanjiskip=0.25em plus 0.15em minus 0.06em
nomencl.sty を使って用語一覧を作成できるようにしてみた.この種のものは用途に合わせて体裁を整えるのが面倒である.次のような仕様にした.
■ あ ■ 見出し語(ゴシック)テキスト1……………ページ数 訳語(ゴシック) 説明
なお,nomencl.sty は十分に新しいものを使用する.
本文中の「用語」という単語に対して説明をつけたいときは次のようにする.
\nomenclature[ようご]{用語}{(ようご)}{translation}{説明.}用語
本文は次のように出力される.
-用語
前が約物でない場合は \nomenclature の前に半角スペースをおくとよい.
今は「(ようご)」の部分によみがなを挙げたが,たとえば人名の後に生没年を併記する,といった用途に使える.
プリアンブルは次のようにした.
\usepackage[cfg,refpage,intoc]{nomencl} \makenomenclature
cfg オプションを有効にすると,nomencl.cfg ファイルを読み込むようになる.同じディレクトリに次のような nomencl.cfg ファイルをおいた.
\def\nomname{用語一覧} \def\nomenclature{-\protect\@nomenclature} \def\@@@nomenclature[#1]#2#3#4#5{% \def\@tempa{#2}\def\@tempb{#3}\def\@tempc{#4}\def\@tempd{#5}% \protected@write\@nomenclaturefile{}% {\string\nomenclatureentry{#1@{{\bfseries\nom@verb\@tempa}\nom@verb\@tempb}% >nompageref{\nom@verb\@tempc}{\begingroup\nom@verb\@tempd\protect\nomeqref{\theequation}}}% {\thepage}}% \endgroup \@esphack} \def\nompageref#1#2#3{% \def\@tempa{#1}% \if@printpageref\pagedeclaration{#3}\else\null\fi\linebreak \ifx\@tempa\@empty\else{\bfseries #1}\linebreak\fi #2\endgroup\end{flushleft}} \def\pagedeclaration#1{\nobreakspace#1} \def\nomlabel#1{\textbf{#1}\hfil} \def\thenomenclature{% \@ifundefined{chapter}% { \section-{\nomname} \if@intoc\addcontentsline{toc}{section}{\nomname}\fi% }% { \chapter-{\nomname} \if@intoc\addcontentsline{toc}{chapter}{\nomname}\fi% }% \begingroup\small \nompreamble \begin{multicols}{2}% } \def\endthenomenclature{% \end{multicols}% \nompostamble\endgroup} \endinput
索引のときと同じように nomencl.ist などの .ist ファイルを使って一部の体裁を指定する.
keyword "\\nomenclatureentry" preamble "\\begin{thenomenclature} \n"% postamble "\n\n\\end{thenomenclature}\n" group_skip "\n" item_0 "\n \\begin{flushleft}" delim_0 "\\dotfill " delim_1 "\\quad\\hfill " delim_2 "\\quad\\hfill " lethead_flag 1 heading_prefix "\n \\nomgroup{" heading_suffix "}\n" headings_flag 1 lethead_prefix "\n\\centerline{■\hspace{.5zw}{\\bfseries " lethead_suffix "}\\hspace{.5zw}■}" letter_head 2
ソートさせる際には次のようなコマンドを用いる.
mendex -U -g -s nomencl.ist -o ${TEXFILE}.nls ${TEXFILE}.nlo
フォント | pt | 単語間 | 文章間 | 1em |
cmr10 | 10.0 | 3.33 (+1.67 -1.11) | +1.11 | 1.00 |
pad | 10.0 | 2.50 (+1.25 -0.83) | +0.42 | 1.00 |
OT1, T1 エンコーディングなら,ピリオドは O 56 にある.
フォント | 大きさ |
cmr10 | 2.78 |
ecrm10 | 2.78 |
padr8t | 2.5 |
""ピリオドの大きさ+アキ= 1 em
「ノビ」は0,「チヂミ」は単語間のアキに合わせる.
pad の場合は
\ejkanjiskip=0.75em plus 0em minus 0.83em
くらいではどうだろう? あるいはこれよりわずかに少ないくらいが適当か?
(DESIGNSIZE R 10.0)
10ptのフォントとして扱われる.
(DESIGNUNITS R xxx)
とあれば,記述されている値に DESIGNSIZE / DESIGNUNITS を掛けたものが実際の値となる.指定がなければ xxx は1.
(SPACE R 0.33)
単語間スペースが3.3pt.
(STRETCH 0.16)
単語間スペースの「ノビ」が1.6pt.
(SHRINK R 0.11)
単語間スペースの「チヂミ」が1.1pt.
(QUAD R 1.01)
1emの値.
(EXTRASPACE R 0.11)
文末のアキの追加量が1.1pt.
Adobe Garamond(pad)でやってみたところ,次のようにするとアキが適当であるように思える.
\def\ejkanjiskip{\hskip 0.7em plus 0em minus 0.83em}
次のように使う.
Patapata oyoyo.\ejkanjiskip ぱたぱた,およよ.
Gianfranco Boggio-Togna 氏作成の metre パッケージには biceps の記号が含まれていない.これを追加するパッケージ(biceps.sty)を作成した.
他人のパッケージファイルをもとに作る場合は,どのような仕様で作られているかをよく把握しなければならないが,その分勉強になることも多い.
URW Garamond にはオールドスタイル数字が含まれていない.Gaël Varoquaux 氏作成の Garamond Fonts にはそれらが含まれているので,それらを利用した仮想フォントを作成した(氏のフォントではもともとの URW Garamond と名前が衝突するので,別の名前にした).
Peter Von der Mühll (ed.), Homeri Odyssea [3] (Stuttgart, 1962) などに使われている Griechische Antiqua と呼ばれている書体をデジタルで復刻したものが TeX 用に,t-greek というパッケージで配布されている.これは ConTeXt 用のものなので,pLaTeX2e でも cbgreek のように,簡単に使えるようにしてみた.組見本は以下のページにある.
TeX で面倒なことの1つとして数えられるものに,フォントの扱いがある.最近のワープロならばフォントは簡単にインストールできて,簡単に切り替えられるものであるのが普通である.
TeX ではそうはいかない..tfm ファイルを作り,.fd ファイルを作ってフォントと .tfm の対応づけを教え,必要に応じて .sty ファイルを作り,.map ファイルを作って dviware にフォントの表示の仕方を教える…… といった,非常に複雑な工程が必要である.「1つにつき256グリフまで」という制限も,ギリシア語や音節文字を使う言語にとっては足かせになる.
これらの原因は,簡単にいってしまえば TeX が古いソフトだから,ということになるのだろう.TrueType や OpenType フォントなど存在しない時代に作られたのであるから(実際,「最近の TeX」である XeTeX は OpenType フォントを直接扱える).しかし逆の見方をすれば,フォントをめぐる状況が変化してもそれに耐えられるだけの柔軟な仕組みをもっているともいえるだろう.
特に,仮想フォントの仕組みは大変便利である.いくつかのフォントからグリフを集めることができるので,異体字やリガチャを「必要に応じて」使う必要があるギリシア語では,仮想フォントを使うことによって,コマンド1つを変更すればそれらを変更することができる.
cbgreek(cbfonts)に三日月型シグマ(lunate sigma)を追加するパッケージを作成した.cbgreek にはさまざまなシリーズが収められているが,次のものだけを制作した.
ls-grmn, ls-grxn の大文字の三日月型シグマは ibycus4 パッケージに含まれているものを使うようにした(小文字は自作).
組見本は以下のページにある.
中世写本で使われている筆記体を模したフォント(Rgreekl2.ttf)が配布されている.256字を軽く超えるので,いくつかに分割しなければ TeX からは利用できない.リガチャの数も膨大なので,.sty ファイルを作るのも一苦労だ.とりあえずは \char で指定するのがよいだろう.
エリジョンを表すときに使うアポストロフィにどのグリフを用いるかが問題になる.
教科書で学んでいても,実際に組版をしようとすると「あれっ,どうだったかな?」と迷ってしまう場合は多いものである.
全角ダーシを使う場合は前後に五分アキを挿入する.R. M. Ritter (ed.), Oxford Style Manual (Oxford, 200), 275; The Chicago Manual of Style [15] (Chicago, 2003), 409–410 などを見る.
リーダにはフルストップをアキを入れずに3つ並べたものを使う(英語とは違う).points de suspension の前にはアキを入れず,後には通常の語間のアキを入れる(Ritter, 277).省略(ellipsis)を表すリーダの場合は前後に通常の語間のアキを入れ,必要に応じてリーダを角かっこで囲む.
文書クラスに article.cls を用いて,たとえば \selectlanguage{english} や \selectlanguage{french} すると段落最初のインデントの挙動が言語にあわせて変わるが,jsarticle.cls を用いるとすべて日本語仕様になるようだ.\parindent の定義を追いかけなければならないようだ……
印刷原稿は,白黒ならグレースケールに,カラーならCMYK形式にするのが普通である(白黒に見えても実際はRGB形式だったりするものもあるので注意が必要である).Mac OS X では Preview.app で簡単に確認・変更ができる.以下の方法の他に ImageMagick 付属の convert コマンドで変換できる場合がある.
Tiger なら[ツール]—[情報を見る],Leopard(以降?)なら[ツール]—[インスペクタ]で「カラーモデル」のところを見る.変更する場合は[ツール]—[プロファイルに合わせる]で適当なものを選択して変更し,保存する.
[ファイル]—[別名で保存]で「Quartz フィルタ」のところで「Gray Tone」を選択して保存する.
写本の画像などの場合はJPGよりもPNGが適していると思う.
という利点があるためである.JPGで欲しい場合は1を生かして最後の工程でJPGに変換するとよさそうだ.
を使うと,PDF/X で保存することができる.これらの方法で作成した PDF のバージョンは 1.3(Adobe Acrobat 4.0 相当)になるので,これらを利用して PDF のバージョンを下げることができる場合がある.
なお,Mac OS X の標準の機能では PDF/X-1a(通常の印刷工程に適したもの)で保存することはできないようだ.
ラテン文字に padj を用い,ギリシア文字に alfpsn というフォントファミリーを用いるとする.padj に対して必ず alfpsn を用いるというわけではないので…… という事情があるので,.fd ファイルをどのようにすればよいかを上で述べた.ただし現在では見解が異なっていて,.tex ファイルと同じディレクトリに lgrpadj.fd を用意しておくとよいと思う.すなわち,.tex ファイルごとにラテン文字とギリシア文字のフォントファミリーの組み合わせを決める,ということである.
さて,論文集などを制作するときに,論文ごとに通常のシグマを用いるか,あるいは三日月型シグマを用いるかという問題が出ることがある.ここでは単純化のため,ほとんどの論文は通常のシグマを用いるとする.
西洋古典学においてはギリシア語の部分は \foreignlanguage{greek}{Text} くらいの頻度で使うのが普通なので,三日月型シグマを用いる論文では,\foreignlanguage{greek}{\fontfamily{ls-alfpsn}\selectfont Text}とすれば目的は達成できるが,一括して変更した方がスマートである.このような場合は三日月型シグマを用いる論文内のみで有効なように
\renewcommand-{\rmdefault}{ls-padj} \normalfont
を宣言して,t1ls-padj.fd と lgrls-padj.fd を作成すればよい.こうすれば,\selectlanguage{greek} などでギリシア語に切り替えられている場合にも応用できる.
$ export TEXMFCNF=/usr/local/teTeX/share/texmf/web2c
${TEXMFDIST}/tex/latex/base/latex.ltx
\DeclareTextAccentDefault{\d}{OT1}
${TEXMFDIST}/tex/latex/base/ot1enc.def
\DeclareTextCommand{\d}{OT1}[1] {\hmode@bgroup \o@lign{\relax#1\crcr\hidewidth\sh@ft{10}.\hidewidth}\egroup}