TeX

2009年11月1日

ucs パッケージ

boundarychar を使った場合に不具合があるかもしれない……

.pl ファイル

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 のようにアクセスする(コマンドで定義すればよい).

リガチャによって,「似ていない」文字に置き換えられる場合は注意が必要である.

2009年11月2日

フォント定義

たとえば 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 以下に格納しておけばよい.

2009年11月6日

和欧混植の問題(2)

Calendar/2009-10-31

一応 jsarticle.cls などでの関連する定義を確認しておく.

\kanjiskip=0zw plus .1zw minus .01zw
\xkanjiskip=0.25em plus 0.15em minus 0.06em

2009年11月10日

ギリシア語フォントの作成

用語一覧

nomencl.sty を使って用語一覧を作成できるようにしてみた.この種のものは用途に合わせて体裁を整えるのが面倒である.次のような仕様にした.

  1. \index と同じように本文中に \nomenclature を埋め込んでいく.
  2. 文章中の適当なところに一覧を出力する.
  3. 見出し語と説明の他にページ数や訳語なども掲載する.
  4. 2段組みにする.
  5. 一覧の体裁は次の通り.
                    ■ あ ■
    見出し語(ゴシック)テキスト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

2009年11月13日

アキ

アキ等の目安

フォントpt単語間文章間1em
cmr1010.03.33 (+1.67 -1.11)+1.111.00
pad10.02.50 (+1.25 -0.83)+0.421.00

ピリオドの大きさ

OT1, T1 エンコーディングなら,ピリオドは O 56 にある.

フォント大きさ
cmr102.78
ecrm102.78
padr8t2.5

欧文末→和文間アキ(案)

""ピリオドの大きさ+アキ= 1 em

「ノビ」は0,「チヂミ」は単語間のアキに合わせる.

pad の場合は

\ejkanjiskip=0.75em plus 0em minus 0.83em

くらいではどうだろう? あるいはこれよりわずかに少ないくらいが適当か?

.pl ファイルの見方

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

2009年11月14日

アキ

Adobe Garamond(pad)でやってみたところ,次のようにするとアキが適当であるように思える.

\def\ejkanjiskip{\hskip 0.7em plus 0em minus 0.83em}

次のように使う.

Patapata oyoyo.\ejkanjiskip ぱたぱた,およよ.

2009年11月15日

biceps.sty

Gianfranco Boggio-Togna 氏作成の metre パッケージには biceps の記号が含まれていない.これを追加するパッケージ(biceps.sty)を作成した.

他人のパッケージファイルをもとに作る場合は,どのような仕様で作られているかをよく把握しなければならないが,その分勉強になることも多い.

TeX To Do

2009年11月16日

URW Garamond

URW Garamond にはオールドスタイル数字が含まれていない.Gaël Varoquaux 氏作成の Garamond Fonts にはそれらが含まれているので,それらを利用した仮想フォントを作成した(氏のフォントではもともとの URW Garamond と名前が衝突するので,別の名前にした).

2009年11月17日

Griechische Antiqua

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つを変更すればそれらを変更することができる.

2009年11月19日

ls-cbgreek

cbgreek(cbfonts)に三日月型シグマ(lunate sigma)を追加するパッケージを作成した.cbgreek にはさまざまなシリーズが収められているが,次のものだけを制作した.

ls-grmn, ls-grxn の大文字の三日月型シグマは ibycus4 パッケージに含まれているものを使うようにした(小文字は自作).

組見本は以下のページにある.

Rgreekl2

中世写本で使われている筆記体を模したフォント(Rgreekl2.ttf)が配布されている.256字を軽く超えるので,いくつかに分割しなければ TeX からは利用できない.リガチャの数も膨大なので,.sty ファイルを作るのも一苦労だ.とりあえずは \char で指定するのがよいだろう.

2009年11月28日

ギリシア語のアポストロフィ

エリジョンを表すときに使うアポストロフィにどのグリフを用いるかが問題になる.

資料の探し方

2010年5月8日

フランス語の組版

教科書で学んでいても,実際に組版をしようとすると「あれっ,どうだったかな?」と迷ってしまう場合は多いものである.

ダーシ

全角ダーシを使う場合は前後に五分アキを挿入する.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)を表すリーダの場合は前後に通常の語間のアキを入れ,必要に応じてリーダを角かっこで囲む.

Babel と ptex

文書クラスに article.cls を用いて,たとえば \selectlanguage{english} や \selectlanguage{french} すると段落最初のインデントの挙動が言語にあわせて変わるが,jsarticle.cls を用いるとすべて日本語仕様になるようだ.\parindent の定義を追いかけなければならないようだ……

画像の色形式

印刷原稿は,白黒ならグレースケールに,カラーならCMYK形式にするのが普通である(白黒に見えても実際はRGB形式だったりするものもあるので注意が必要である).Mac OS X では Preview.app で簡単に確認・変更ができる.以下の方法の他に ImageMagick 付属の convert コマンドで変換できる場合がある.

JPGやPNGなどの画像の場合

Tiger なら[ツール]—[情報を見る],Leopard(以降?)なら[ツール]—[インスペクタ]で「カラーモデル」のところを見る.変更する場合は[ツール]—[プロファイルに合わせる]で適当なものを選択して変更し,保存する.

PDFの場合

[ファイル]—[別名で保存]で「Quartz フィルタ」のところで「Gray Tone」を選択して保存する.

画像のファイル形式

写本の画像などの場合はJPGよりもPNGが適していると思う.

  1. 可逆圧縮である
  2. テキストや線画など色の境界がはっきりしたイメージの場合,PNGの方がシャープに再現される

という利点があるためである.JPGで欲しい場合は1を生かして最後の工程でJPGに変換するとよさそうだ.

2010年5月16日

PDF のバージョン

  1. Mac OS X の[プリント]で[PDF]の中の[PDF-X で保存]
  2. プレビュー.app の[別名で保存]でフォーマットを PDF にし,Quartz フィルタを「Create Generic PDFX-3 Document」にして保存

を使うと,PDF/X で保存することができる.これらの方法で作成した PDF のバージョンは 1.3(Adobe Acrobat 4.0 相当)になるので,これらを利用して PDF のバージョンを下げることができる場合がある.

なお,Mac OS X の標準の機能では PDF/X-1a(通常の印刷工程に適したもの)で保存することはできないようだ.

2010年5月20日

通常のシグマと三日月型シグマの使い分け

ラテン文字に 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} などでギリシア語に切り替えられている場合にも応用できる.

2010年5月21日

組版に関すること

  1. Word 文書ファイルに含まれる和文の半角句読点等(「」,.・)が OpenOffice.org(など)で表示されない(ことがある).
    • docx2rtf, wordconv.exe etc.
  2. 欧文中で,開きかっこの前にスペースがない場合.
    • エリジョンにより表記されていない文字を表す場合以外はほぼその箇所にスペースが必要なので,マークした上で一括してスペースを加える.
  3. ハイフンを二分ダーシに一括変換する場合,「数字-数字」となっていればよいが,フォリオ数やプラトーン,アリストテレースなどの箇所の場合どうするか.
    • 片方に数字が含まれていれば可能性が高いので,マークする?
  4. A.R. や Q.S. は A.~R. や Q.~S. に変換される.
    • A.R. 1.234 のように後に数字が続くことを利用する?

2010年5月24日

kpathsea

$ export TEXMFCNF=/usr/local/teTeX/share/texmf/web2c

\d{}

${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}

TODO


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS