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