Sazba s dodržením řádkového rejstříku
Michal Růžička
xruzick7 at fi.muni.cz
Sat Jan 28 14:01:01 CET 2006
Dobrý den,
používám pdfLaTeX a ve svém dokumentu chci při sazbě dodržovat řádkový rejstřík.
U "běžného textu" to nebyl problém. Předefinoval jsem si zrcadlo sazby tak, aby
výška textového těla byla vždy celočíselným násobkem řádkování základního písma
a podle informací z TeXbooku naruby jsem přidal příkazy:
\parskip=0pt % Mezi odstavci nebude mezera a nikdy není možnost ji zvětšit nebo
% zmenšit.
\raggedbottom % Výstupní rutina se nebude snažit roztáhnout stránku tak, aby
% účaří posledních řádků bylo na stejném místě přesně dle \vsize.
Na úplný začátek stylu jsem přidal ještě příkazy:
%% Definice rozměrů používaných v dalším kódu.
\edef\@vyskapisma{\fontdimen6\font} % Výška základního písma.
\edef\@radkovani{\baselineskip} % Výška základního řádkování
Sazba základním písmem teď řádkový rejstřík dodržuje. Problém je ale s nadpisy
(sázenými jiným stupněm písma) a mezerováním (obrázky v tom dokumentu nejsou,
takže ty mě, alespoň prozatím, netrápí), které poškodí řádkový rejstřík na
stránkách, kde se vyskytnou.
Vyřešit mezerování není až takový problém. Předefinoval jsem si příkazy pro
sazbu hlaviček kapitol atd. tak, by vkládali mezery odpovídající celočíselným
násobkům řádkování základního písma. Dále jsem přidal příkazy:
\bigskipamount=\@radkovani % Velikost řádkování základního písma.
\medskipamount=0.5\@radkovani % Polovina velikosti řádkování základního písma.
\smallskipamount=0.25\@radkovani % Čtvrtina velikosti řádkování základního
% písma.
Musím si tedy jen dávat pozor na to, abych \medskipamount používal na každé
stránce v párech a \smallskipamount ve čtveřicích.
Narazil jsem ale u nadpisů. Mým prvním nápadem bylo předefinovat příkazy \large,
\Large atd. (tím by elegantně ošetřil dodržení řádkového rejstříku i ve všech
ostatních příkazech, nejen u nadpisů) tak, aby jimi produkovaný stupeň písma byl
celočíselným násobkem stupně základního písma. Jelikož chci, aby mnou
vyprodukovaný styl byl univerzální a fungoval pro jakékoli nastavení základního
písma, chtěl jsem se vyhnout absolutnímu zadání rozměrů. Problém je, že např.
\large je (pro 12bodové základní písmo) definované jako:
\newcommand\large{\@setfontsize\large\@xivpt{18}}
Pokud jsem zadal
\renewcommand\large{\@setfontsize\large{2\@vyskapisma}{2\@radkovani}},
tak to nefungovalo. Předpokládám, že je to proto, že \@setfontsize chce prosté
číslo (např. 24), nikoli rozměr (např. 24pt). Nevím, jak bych si mohl prostou
hodnotu z \@vyskapisma a \@radkovani vyderivovat. I pokud jsem ale pokusně zadal
čísla absolutně, tak stejně nastal problém. Např. 24bodové písmo není k
dispozici a pdfLaTeX mi hlásil, že ho škáluje z jiného rozměru.
Napadlo mě tedy, že bych s velikostí písma nadpisů nehýbal. (Stejně pak vypadají
nadpisy lépe. Násobky velikosti dělají příliš velké skoky v rozměrech.) Moje
idea je taková, že bych si v místě použití zjistil aktuální stupeň písma nadpisu
a nad nebo pod nadpis (raději nad nadpis) pak přidal takovou mezeru, aby celková
výška nadpisu i s touto mezerou byla celočíselným násobkem řádkování základního
písma. Nevím ale, jak zjistit výšku nadpisu tak, bych mohl mezeru přidat nad něj
(s výpočtem velikosti mezery z tohoto údaje si rady vím). Pokud bych přidal
mezeru nad nadpis, shodovalo by se účaří nadpisu s účařím základního textu,
takže i zde by byl dodržen řádkový rejstřík. To ovšem jen za předpokladu, že by
nadpis neměl víc jak jeden řádek.
Když to shrnu, nevím si rady s ošetřením velikosti písma v nadpisech. Zdá se mi,
že už začínám vytvářet příliš složité konstrukce a že to asi půjde jednodušeji.
Nevím ale jak. Dokáže mi s tím někdo poradit? Neexistuje dokonce třeba nějaký
styl, který by toto, případně celou sazbu na řádkový rejstřík, ošetřoval? Předem
děkuji za každou radu.
S pozdravem
Michal Růžička
More information about the csTeX
mailing list