Poni�szy dokument jest cz�ci� artyku�u Marcina Woli�skiego LaTeX2e a sprawa polska, kt�ry ukaza� si� w Biuletynie GUST nr 10/1998. Ca�y artyku� dost�pny jest na serwerze GUST w (spakowanej) wersji PostScript.
W niniejszym wprowadzeniu zostanie przedstawiony wy��cznie spos�b zarz�dzania fontami tekstowymi. Do prezentacji zagadnie� zwi�zanych ze sk�adem formu� matematycznych autor nie czuje si� jeszcze odpowiednio przygotowany.
TeX ma wbudowany jedynie bardzo prosty spos�b dost�pu do font�w. Poleceniem
\font
mo�na zwi�za� nazw� symboliczn� z operacj� wybrania
fontu za�adowanego z konkretnego pliku metrycznego
i o ustalonej wielko�ci. (W ca�ym niniejszym tek�cie s�owo
font b�dzie u�ywane na okre�lenie takiej w�a�nie istno�ci. W sensie
TeXa -- co� za�adowanego z konkretnego pliku metrycznego. W sensie
typograficznym -- pismo o ustalonym kroju, odmianie i stopniu.)
Pos�ugiwanie si� tak zdefiniowanymi poleceniami na d�u�sz� met� jest
uci��liwe, poniewa� wywo�uj� one bezpo�rednio okre�lon� odmian�
i stopie� okre�lonego kroju pisma. Wyobra�my sobie, �e wykonano
\font\it=plti10
Je�li teraz fragment tekstu zawieraj�cy u�ycie tego polecenia zostanie przeniesiony z g��wnego tekstu dokumentu do przypisu, wydarzy si� katastrofa: przypisy s� tradycyjnie sk�adane pismem mniejszego stopnia, ale fragment kursyw� b�dzie wi�kszy!
Dlatego ka�dy TeXowy format ma swoj� metod� zdefiniowania polecenia
\it
tak, aby znaczy�o co� w rodzaju ,,prze��cz font na
kursyw� w bie��cym stopniu''. LaTeX 2.09 zapewnia� dost�p do
ustalonego zbioru font�w -- mianowicie kroj�w Computer Modern -- tak aby
dawa�o si� manipulowa� niezale�nie stopniem i odmian� pisma. Dodanie
nowych font�w do zestawu dost�pnego w LaTeXu w praktyce wymaga�o
ingerencji w plik lfonts.tex
, co by�o zadaniem wyj�tkowo
niewdzi�cznym, a ponadto prowadzi�o do powstawania niezgodnych ze sob�
lokalnych wersji LaTeXa.
W LaTeXa 2e wbudowano skomplikowany, ale za to bardzo elastyczny, mechanizm nazywaj�cy si� NFSS (New Font Selection Scheme -- nowy spos�b wyboru font�w). System ten jest stosunkowo �atwy w u�yciu, zarejestrowanie font�w w systemie jest elementarne (je�eli dost�pne s� pliki opisu font�w -- font descripton files) i nie wymaga ingerencji w format LaTeXa, natomiast si�� rzeczy stworzenie plik�w opisu wymaga odrobiny wiedzy o systemie.
W LaTeXu 2e bie��cy font jest charakteryzowany przez pi�� element�w: uk�ad (zestaw znak�w), kr�j (rodzin�), grubo�� i szeroko��, odmian�, stopie� i interlini�. Ka�dy z tych element�w mo�na wybra� oddzielnym poleceniem.
uk�ad fontu | \fontencoding{OT1} |
rodzina (kr�j) | \fontfamily{cmr} |
grubo�� i szeroko�� | \fontseries{m} |
odmiana | \fontshape{n} |
stopie� i interlinia | \fontsize{10}{12pt} |
\selectfont | |
Argumenty polece� wymienione w tabelce odpowiadaj� domy�lnym warto�ciom
dla dokumentu sk�adanego przy pomocy standardowych klas w stopniu 10pt.
U�ycie polece� \font...
nie powoduje od razu w��czenia fontu,
poniewa� u�ytkownik mo�e chcie� zmieni� kilka element�w charakterystyki
bie��cego fontu jednocze�nie. Dlatego ostateczny wyb�r fontu zatwierdza si�
poleceniem \selectfont
.
Wszystkie elementy charakterystyki fontu, za wyj�tkiem stopnia pisma, mo�na
zmieni� jednocze�nie poleceniem \usefont
. Nie wymaga ono
r�wnie� zatwierdzenia przez \selectfont
.
\usefont{OT1}{cmr}{m}{n}
Poszczeg�lne elementy opisu fontu s� od siebie niezale�ne, co daje LaTeXowi przewag� nad procesorami tekstu. Wyobra�my sobie, �e w ,,zwyk�ym procesorze tekstu'' w tek�cie po polsku u�ywamy wyra�enia ,,\`a propos''. Poniewa� w ,,polskim'' foncie nie ma znaku \`a, musimy pobra� symbol z fontu ,,zachodniego''. Je�eli w p�niejszym etapie opracowania redakcyjnego postanowimy zmieni� kr�j pisma np. z Timesa na Helvetic�, obca litera pozostanie w starym kroju, bo uzyskuj�c j� nie mogli�my powiedzie� ,,chc� bie��cy kr�j i odmian�, ale w uk�adzie zachodnioeuropejskim'', zamiast tego w dokumencie stoi ,,tu ma by� zachodnioeuropejski Times jasny prosty stopnia 10pt''.
Gdy NFSS stwierdzi, �e dana kombinacja parametr�w nie odpowiada �adnemu
istniej�cemu fontowi, wypisuje odpowiedni� informacj� do pliku
.log
i stara si� u�y� fontu o mo�liwie bliskiej
charakterystyce. Niekt�rzy bardzo nie lubi� tej w�asno�ci NFSS, uwa�aj�c �e
jest to jedno z miejsc, w kt�rych LaTeX usi�uje co� (�le) zrobi� za
u�ytkownika. To zachowanie mo�na zmieni�. U�ycie w preambule
deklaracji
\usepackage[pausing]{tracefnt}
powoduje zamian� wszystkich komunikat�w o brakuj�cych fontach w komunikaty o b��dach, wymagaj�ce interwencji u�ytkownika.
Om�wi� teraz kolejne parametry opisuj�ce font w NFSS.
Uk�ad fontu jest najciekawszym elementem, poniewa� wydaje si�, �e LaTeX jest jedynym systemem, w kt�rym poj�cie to wyst�puje jawnie. Uk�ad fontu opisuje, jakie znaki s� dost�pne w foncie i w jakich pozycjach. Polecenia akcentowe w LaTeXu korzystaj� z informacji o uk�adzie bie��cego fontu, aby u�y� najlepszej dost�pnej metody uzyskania danego znaku.
Poniewa� mechanizm sterowania t�umaczeniem znak�w na pozycje w foncie
nie wyst�puje w samym TeXu, LaTeXowy mechanizm uk�ad�w dzia�a na
poziomie makr. W zwi�zku z tym dotyczy on tylko znak�w dost�pnych
poprzez makra. Tabele konwersji kodu wej�ciowego na poziomie implementacji
dokonuj� t�umaczenia od razu w pozycje znak�w w foncie, ignoruj�c
ten mechanizm. Z drugiej strony pakiet inputenc
pos�uguje
si� znakami aktywnymi, kt�re zachowuj� si� jak makra, wykorzystuj�c mechanizm
uk�ad�w font�w.
Nazwy uk�ad�w s� tradycyjnie pisane wielkimi literami i cyframi. Poni�sza tabela zestawia uk�ady font�w nale��ce do standardu LaTeXa.
Uk�ady font�w w LaTeXu | ||
OT1 | Old Text 1 | uk�ad font�w zastosowany przez Knutha |
OT2 | Old Text 2 | uk�ad cyrylicy z Washington University |
OT3 | Old Text 3 | uk�ad font�w wsuipa (?) |
OT4 | Old Text 4 | uk�ad font�w PL |
T1 | Text 1 | ,,europejski'' uk�ad font�w (Cork) |
T3 | Text 3 | IPA -- znaki fonetyczne |
T4 | Text 4 | uk�ad dla j�zyk�w afryka�skich |
TS1 | Text Symbol 1 | dodatkowe symbole tekstowe |
OML | Old Math Letters | uk�ad fontu matematycznego wg. Knutha |
OMS | Old Math Symbols | uk�ad symboli wg. Knutha |
OMX | Old Math Extensible | uk�ad fontu ze znakami ,,rozci�gliwymi'' |
Uk�ady o nazwach, zaczynaj�cych si� liter� O
, zawieraj� po
128 pozycji. Pozosta�e s� ,,nowymi'' uk�adami 256-znakowymi.
OT4
wy�amuje si� z tego schematu, b�d�c rozszerzeniem
OT1
, ale nie wype�niaj�cym wszystkich 256 pozycji.
Uk�ad T1
jest ,,nowym'' uk�adem opracowanym na konferencji
w Cork. Zawiera on znaki umo�liwiaj�ce sk�ad w wi�kszo�ci j�zyk�w
europejskich. TS1
jest odpowiadaj�cym mu uk�adem uzupe�niaj�cym
zawieraj�cym lataj�ce akcenty dla majusku� (kt�re nie zmie�ci�y si�
w T1
), znaki ,,copyright'', ,,registered'' i ,,trade
mark'', liczne symbole walut oraz znaki pauzy o d�ugo�ciach po�rednich
mi�dzy ,,endash'' i ,,emdash'', kt�re powinny uszcz�liwi� polskich
redaktor�w technicznych.
Jak wida�, brak ,,nowych'' uk�ad�w matematycznych. Wydaje si�, �e nikt nie czuje si� kompetentny, by takie opracowa�, lub te� uk�ad zaproponowany przez Knutha funkcjonuje wystarczaj�co dobrze, a wieloj�zyczno�� nie ma wielkiego zastosowania do formu� matematycznych.
Uk�ady font�w musz� by� jawnie deklarowane w dokumencie. Wszystkie
uk�ady, kt�re b�d� u�ywane w dokumencie powinny zosta� wymienione jako
opcje wywo�ania pakietu fontenc
. Na przyk�ad �eby za�adowa�
definicje uk�adu OT2
(cyrylica) i OT4
(polski)
wykonujemy:
\usepackage[OT2,OT4]{fontenc}
Ostatni uk�ad wymieniony w tej klauzuli b�dzie domy�lnym uk�adem dokumentu.
Kr�j pisma (rodzina).
W NFSS stosuje si� kilkuznakowe skr�ty nazw kroj�w. Dla Computer Modern s�
to np. cmr
, cmss
, cmtt
. Dla kroj�w
postscriptowych stosuje si� zwykle trzy pierwsze znaki nazwy plikowej fontu
wg. konwencji Karla Berry. Na przyk�ad ptm
to Adobe Times,
phv
to Adobe Helvetica, a bch
to Bitstream
Charter. Tych nazw u�ywa si� jako argumentu \fonfamily
.
Dla os�b po raz pierwszy stykaj�cych si� z NFSS trudno�� stanowi zwykle
zrozumienie zale�no�ci mi�dzy rodzin� a uk�adem fontu. I tak na
przyk�ad kr�j Computer Modern Roman (cmr
) wyst�puje co najmniej
w trzech uk�adach. Kr�j cmr
w starym uk�adzie
tekstowym OT1
jest dost�pny w oryginalnych fontach Knutha
o nazwach plikowych np. cmr10
, cmbx12
,
cmti9
, itd. Kr�j cmr
w uk�adzie polskim
OT4
jest realizowany przez adaptacj� font�w Knutha, dokonan�
przez B. Jackowskiego i M. Ry�ko. Nazwy plikowe tych font�w
to np. plr10
, plbx12
, plti9
. Trzecim
uk�adem, w kt�rym dost�pny jest kr�j cmr
, jest nowy
,,europejski'' uk�ad tekstowy T1
. Ta kombinacja parametr�w
oznacza u�ycie font�w EC (Extended Computer Modern), czyli plik�w metrycznych
np. ecr1000
, ecbx1200
, ecti0900
.
Fonty Knutha opr�cz rodziny Computer Modern Roman obejmuj� jeszcze
rodzin� Computer Modern Sans Serif (cmss
), Computer Modern
Typewriter (cmtt
) i kilka drobnych
eksperymentalno-dekoracyjno-zabawowych, jak Computer Modern Funny Roman
(cmff
), Computer Modern Dunhill Roman (cmdh
),
Computer Modern Fibonacci Roman (cmfib
).
Zatem wyb�r spo�r�d font�w CM, PL czy EC, odbywa si�
poprzez zmian� u�ywanego uk�adu, a nie rodziny, bo wszystkie one
zawieraj� rodziny cmr
, cmss
i cmtt
--
znaki wyst�puj�ce w ka�dym z tych font�w maj� w zasadzie ten sam
projekt graficzny, jedynie zestaw dost�pnych znak�w jest r�ny.
Prze��czenie standardowego LaTeXa na fonty zawieraj�ce polskie znaki
diakrytyczne, polega na zmianie u�ywanego uk�adu font�w na OT4
lub T1
. Od tego momentu odwo�ania do standardowych rodzin
font�w b�d� dotyczy�y font�w zawieraj�cych polskie znaki.
Kroj�w pisma nie trzeba deklarowa�. LaTeX za�aduje odpowiednie informacje przy pierwszym odwo�aniu do danego kroju.
Grubo�� i szeroko��.m | medium | zwyk�y |
b | bold | gruby |
bx | bold extended | gruby szeroki |
sb | semi-bold | p�gruby |
c | condensed | w�ski |
W og�lno�ci grubo�� i szeroko�� mog� przebiega� kilkustopniow� skal�, daj�c kilkana�cie kombinacji opisanych dwuliterowymi kodami. Wi�kszo�� kroj�w wyst�puje jednak tylko w dw�ch lub trzech wersjach grubo�ci/szeroko�ci.
Odmiana.
n | normal | prosta |
it | italic | kursywa |
sl | slanted | pochy�a |
sc | small caps | kapitaliki |
ui | upright italic | ,,wyprostowana'' kursywa |
\fontsize
s� stopie� pisma i interlinia. Domy�ln�
jednostk� s� punkty (ameryka�skie), ale w ka�dym z argument�w mo�na
te� u�y� dowolnej jednostki akceptowanej przez TeXa.
W TeXu interlinia jest sta�a dla ca�ego akapitu. M�wi�c �ci�lej, w ca�ym akapicie zostanie u�yta jej warto�� bie��ca na jego ko�cu.
Opisany powy�ej spos�b manipulowania fontami pozwala na dost�p do wszystkich zainstalowanych font�w rodziny, ale jest uci��liwy. Dlatego LaTeX ma seri� polece� (definiowanych po cz�ci przez klasy) obs�uguj�cych typowe sytuacje.
Po pierwsze, mamy seri� polece� wybieraj�cych stopie� pisma
i interlini�, kt�re wyst�powa�y r�wnie� w LaTeXu 2.09.
Poni�sza tabela wymienia stopnie odpowiadaj�ce poszczeg�lnym poleceniom,
w zale�no�ci od stopnia pisma tekstu podstawowego wybranego
w \documentclass
.
stopie� pisma | |||
tekstu g��wnego | 10pt | 11pt | 12pt |
\tiny | 5pt | 6pt | 6pt |
\scriptsize | 7pt | 8pt | 8pt |
\footnotesize | 8pt | 9pt | 10pt |
\small | 9pt | 10pt | 11pt |
\normalsize | 10pt | 11pt | 12pt |
\large | 12pt | 12pt | 14pt |
\Large | 14pt | 14pt | 17pt |
\LARGE | 17pt | 17pt | 20pt |
\huge | 20pt | 20pt | 25pt |
\Huge | 25pt | 25pt | 25pt |
Zosta�y r�wnie� zachowane polecenia LaTeXa 2.09 \rm
,
\bf
, \it
, \sl
, \sc
,
\ss
i \tt
. Ale uwaga: zachowuj�
si� one dok�adnie tak jak w LaTeXu 2.09 -- nie da si� na przyk�ad
przy ich pomocy uzyska� grubej kursywy.
Nowy zestaw polece� pos�uguje si� nast�puj�cym modelem u�ycia font�w w dokumencie. Poniewa� mieszanie r�nych kroj�w szeryfowych w jednym dokumencie w zasadzie jest b��dem (a przynajmniej powinno by� wynikiem przemy�lanej decyzji), w schemacie przyj�tym przez standardowe klasy dokument�w dost�pny jest jeden kr�j szeryfowy, jeden bezszeryfowy i jeden grotesk. Oczywi�cie domy�lnie s� to Computer Modern Roman, Computer Modern Sansserif i Computer Modern Typewriter.
Oto podstawowe polecenia wyboru kroj�w i odmian w tym schemacie:
Kr�j pisma (rodzina) | |
\textrm{...} lub \rmfamily | kr�j szeryfowy |
\textsf{...} lub \sffamily | kr�j bezszeryfowy |
\texttt{...} lub \ttfamily | grotesk |
Grubo�� i szeroko�� pisma | |
\textmd{...} lub \mdseries | pismo jasne |
\textbf{...} lub \bfseries | pismo grube |
Odmiana pisma | |
\textup{...} lub \upshape | odmiana prosta |
\textit{...} lub \itshape | kursywa |
\textsl{...} lub \slshape | odmiana pochy�a |
\textsc{...} lub \scshape | kapitaliki |
Jak wida�, tworz� one pary polece� o podobnej funkcjonalno�ci. Wersje z argumentem sk�adaj� ten argument pismem wybranym przez sw�j odpowiednik bez argumentu. Ponadto polecenia te na granicy mi�dzy pismem pochy�ym a prostym dodaj� kompensat� wychylenia ostatniego znaku (italic correction), chyba �e nast�pnym znakiem jest kropka lub przecinek i kompensata nie jest potrzebna.
Polecenia bez argument�w mo�na sobie wyobra�a� jako zdefiniowane wg schematu:
\newcommand\rmfamily{
\fontfamily{\rmdefault}\selectfont}
One r�wnie� nie maj� zaszytej w sobie nazwy rodziny, odmiany, grubo�ci,
ale odwo�uj� si� do makr przechowuj�cych warto�ci domy�lne. Oczywi�cie
domy�ln� warto�ci� makra \rmdefault
jest cmr
, czyli
polecenie \rmfamily
domy�lnie w��cza kr�j Computer Modern Roman.
St�d p�ynie wniosek, �e aby w LaTeXu z�o�y� dokument, u�ywaj�c jako kroju szeryfowego Timesa, wystarczy:
\renewcommand\rmdefault{ptm}
(Polecenia zapo�yczone z LaTeXa 2.09 dzia�aj� w podobny, po�redni spos�b, wi�c r�wnie� konsekwentnie poddaj� si� takiemu przedefiniowaniu.)
Warto�ci domy�lne wkraczaj� jeszcze w kilku innych miejscach.
Zasadnicza tre�� dokumentu jest sk�adana fontem uaktywnianym
poleceniem \normalfont
. Jest ono mniej wi�cej r�wnowa�ne
\usefont{\encodingdefault}
{\familydefault}
{\seriesdefault}{\shapedefault}
P�yn� z tego ciekawe wnioski:
1) Zmieniaj�c warto�� \encodingdefault
na OT4
mo�emy sprawi�, �e dokument b�dzie sk�adany polskimi fontami. Pakiet
polski
tak w�a�nie post�puje, prze��czaj�c uk�ad na
OT4
lub T1
w zale�no�ci od opcji.
2) Standardow� warto�ci� \familydefault
jest \rmdefault
.
Sk�ad ca�ego dokumentu czcionk� bezszeryfow� mo�na uzyska� zmieniaj�c
t� warto�� na \sfdefault
:
\renewcommand\familydefault{\sfdefault}
Tego rodzaju zmian nale�y dokonywa� w preambule dokumentu (to jest
przed \begin{document}
).
Pozostaje jeszcze odpowiedzie� na pytanie, sk�d NFSS ,,wie'', jakie kroje, odmiany i stopnie pisma s� dost�pne i w jakich uk�adach.
Deklaracja uk�ad�w font�w powoduje, �e LaTeX �aduje pliki opisuj�ce dane
uk�ady. Np. dla uk�adu OT4
b�dzie to plik
ot4enc.def
(Uwaga: od grudnia 1996 nazwy wszystkich plik�w
w dystrybucji LaTeXa s� pisane tylko ma�ymi literami. Fakt ten wywo�a�
niejakie zamieszanie, ale wydaje si�, �e na d�u�sz� met� jest to decyzja
rozs�dna.) W tym pliku zawarte s� informacje, jakie akcenty s� dost�pne
w danym uk�adzie, w jakich pozycjach si� one znajduj� i jakie
s� dost�pne znaki akcentowane (kombinacje akcent-litera).
Pakiet polski.sty
wewn�trznie �aduje odpowiedni� definicj�
uk�adu.
Opisy kroj�w s� �adowane automatycznie z plik�w .fd
przy
pierwszej pr�bie u�ycia fontu z danej rodziny w danym uk�adzie. Na
przyk�ad po zadeklarowaniu jako domy�lnego uk�adu OT4
, pierwsza
pr�ba w��czenia fontu z rodziny cmr
spowoduje, �e LaTeX
za�aduje plik ot4cmr.fd
. Oto fragment tego pliku:
\DeclareFontFamily{OT4}{cmr}{}
\DeclareFontShape{OT4}{cmr}{m}{n}
{ <5> <6> <7> <8>
<9> <10> <12> gen * plr
<10.95> plr10
<14.4> plr12
<17.28><20.74><24.88>plr17}{}
...
\DeclareFontShape{OT4}{cmr}{bx}{it}
{ <-10>sub * cmr/bx/n
<10> <10.95> <12> <14.4> <17.28>
<20.74> <24.88> plbxti10
}{}
...
Pierwsza deklaracja powiadamia, �e jest to opis rodziny cmr
w uk�adzie OT4
. Dalej nast�puje ci�g deklaracji
\DeclareFontShape
opisuj�cych poszczeg�lne kombinacje
rodzina/grubo��/odmiana. Pierwsza opisuje odmian� jasn�
(m
medium), prost�
(n
normal) -- dla stopni 5, 6, 7, 8, 9, 10
i 12 nale�y u�y� fontu o nazwie plikowej powstaj�cej z ci�gu
plr
po do��czeniu do� liczby stopnia pisma. Dla stopnia 10.95pt
nale�y u�y� fontu plr10 at 10.95pt
, podobnie dla stopni 14.4,
17.28, 20.74, 24.88 u�yty zostanie odpowiednio zeskalowany font
plr12
i plr17
. Druga klauzula
\DeclareFontShape
opisuje grub� (bx
bold
extended) kursyw� (it
italic) -- dla stopni
mniejszych od 10pt nale�y u�y� w zast�pstwie grubej prostej odmiany
rodziny cmr
. Dla wymienionych dalej stopni u�yty zostanie
odpowiednio zeskalowany font plbxti10
.
Deklaracje uk�ad�w OT1
i T1
oraz opis rodziny
cmr
w tych uk�adach s� wbudowywane w format razem
z plikami metrycznymi podstawowych font�w. S�u�y to przyspieszeniu
�adowania LaTeXa na pocz�tku przetwarzania dokumentu. Zestaw wbudowanych
uk�ad�w, rodzin i plik�w metrycznych mo�na zmieni� przy pomocy plik�w
konfiguracyjnych fonttext.cfg
i preload.cfg
--
szczeg�y opisano w dokumencie cfgguide.tex
.
Aby mo�na by�o powiedzie�, �e font jest zainstalowany w LaTeXu musi
istnie� dla niego definicja uk�adu i definicja kroju (rodziny)
w tym uk�adzie. Uk�ad�w w zasadzie jest sko�czona niewielka liczba
i definicje wi�kszo�ci z nich s� zawarte w dystrybucji LaTeXa
(w tym OT4
). Natomiast dla ka�dego kroju potrzebny jest
jego opis w pliku o nazwie zbudowanej z nazwy uk�adu
i nazwy rodziny z rozszerzeniem .fd
(wszystko ma�ymi
literami). Pliki te musz� znajdowa� si� w katalogu widocznym dla
LaTeXa.
Pliki opisu dla font�w PL i PC s� zawarte w pakiecie PLaTeX. Pliki
opisu dla kroju Quasi Palladio (qpl
), Quasi Times
(qtm
) i antykwy toru�skiej (antt
) s� cz�ci�
pakietu pl-qx
Piotra K�osowskiego.