summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/cstex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-02-11 21:49:44 +0000
committerKarl Berry <karl@freefriends.org>2015-02-11 21:49:44 +0000
commit5b1aa58b4889aeb3418a3007a831bbb0b3fe72e4 (patch)
treeb33801a520f724cb145a845d7ae407b4b6d6fc2e /Master/texmf-dist/doc/cstex
parent79a499bdfb2822be4bab61f6c6720f4c52119c3b (diff)
cstex (11feb15)
git-svn-id: svn://tug.org/texlive/trunk@36259 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/cstex')
-rw-r--r--Master/texmf-dist/doc/cstex/opmac-d.tex738
-rw-r--r--Master/texmf-dist/doc/cstex/opmac-u-en.pdfbin227867 -> 227735 bytes
-rw-r--r--Master/texmf-dist/doc/cstex/opmac-u-en.tex46
-rw-r--r--Master/texmf-dist/doc/cstex/opmac-u.pdfbin262553 -> 264133 bytes
-rw-r--r--Master/texmf-dist/doc/cstex/opmac-u.tex192
-rw-r--r--Master/texmf-dist/doc/cstex/prvni.pdfbin246318 -> 254373 bytes
-rw-r--r--Master/texmf-dist/doc/cstex/prvni.tex56
7 files changed, 485 insertions, 547 deletions
diff --git a/Master/texmf-dist/doc/cstex/opmac-d.tex b/Master/texmf-dist/doc/cstex/opmac-d.tex
index 7fd3da08a92..8643c42bdba 100644
--- a/Master/texmf-dist/doc/cstex/opmac-d.tex
+++ b/Master/texmf-dist/doc/cstex/opmac-d.tex
@@ -8,7 +8,7 @@
% UTF-8 encTeX has a conflict with DocByTeX
\chyph
-\def\projectversion{Jul 2014}
+\def\projectversion{Dec. 2014}
\def\headtitle{OPmac}
\widowpenalty=10000
@@ -225,9 +225,58 @@ Definovaná makra chceme při "\write" do souboru nechat v původním stavu:
\inext {addprotect}{}{+-}
Makro "\exfont" se vyskytuje v souboru "exchars.tex" z \CS{}plainu.
-Příkaz "\addprotect\exfont" zaprotektuje všechny znaky deklarované v toto
+Příkaz "\addprotect\exfont" zaprotektuje všechny znaky deklarované v tomto
souboru naráz. Podrobnosti lze nalézt v uvedeném souboru.
+Makro \db replacestrings "{<string1>}{<string2>}" vymění v makru "\tmpb"
+veškeré výskyty "<string1>" za "<string2>". Pro tento účel definuje pracovní
+makro \db replacestringsA se separátorem "<string1>". Jak to pracuje je
+ukázáno na příkladu níže.
+Před spuštěním "\replacestringsA" je třeba nejprve vyvrhnout obsah "\tmpb"
+do vstupní fronty, poté provést "\def\tmpb{}" a nakonec provést
+"\replacestringsA". To je uděláno pomocí triku s "\edef\tmpb" a se dvěma "\expandafter".
+V makru pracujeme s tokeny "!" a "?" kategorie 3, které slouží jako
+separátory. Předpokládáme, že takové nestandardní tokeny se ve zpracovávaném
+textu nikdy neobjeví, protože vykřičník a otazník mají normálně kategorii
+12.
+
+\inext{bgroup}{\empty}{+-}
+
+Jak to pracuje si ukážeme na příkladu "\replacestrings{XX}{YY}", pokud máme
+v "\tmpb" uložen třeba text "ahaXXuffXXkonec". Makro "\replacestringsA" je v
+takovém případě definováno jako:
+
+\begtt
+\def\replacestringsA #1XX#2!{%
+ \ifx!#2!\addto\tmpb{#1}\else\addto\tmpb{#1YY}\replacestringsA#2!\fi}%
+\endtt
+%
+a jednotlivé kroky zpracování probíhají takto:
+
+\begtt
+\replacestringsA ahaXXuffXXkonec?XX!
+#1 = "aha" #2 = "uffXXkonec?XX!"
+\addto\tmpb{ahaYY}
+\replacestringsA uffXXkonec?XX!
+#1 = "uff" #2 = "konec?XX!"
+\addto\tmpb{uffYY}, tj. \tmpb obsahuje "ahaYYuffYY".
+\replacestringsA konec?XX!
+#1 = "konec?" #2 = "" (prázdný parametr)
+\addto\tmpb{konec?}, tj. \tmpb obsahuje "ahaYYuffYYkonec?" a rekurze končí.
+\endtt
+%
+Dále se předefinuje "\def\replacestrin""gsA#1?{\def\tmpb{#1}}" a provede se
+
+\begtt
+\replacestringsA ahaYYuffYYkonec?
+#1 = "ahaYYuffYYkonec"
+\def\tmpb{ahaYYuffYYkonec}
+\endtt
+%
+tedy tímto algoritmem odstraníme koncový otazník. Proč jsme ho tam vlastně
+dávali? Kdyby tam nebyl, tak by nesprávně fungovalo
+"\replacestrings{XX}{YY}" při "\tmpb" ve tvaru "ahaX".
+
\subsec Globální parametry
%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -716,7 +765,7 @@ kurzívu.
\inext{titfont}{\empty}{+-}
-V další části této sekce je implemantace maker "\chap", "\sec" a "\secc".
+V další části této sekce je implementace maker "\chap", "\sec" a "\secc".
Pro číslování kapitol, sekcí a podsekcí potřebujeme čítače a další registry:
\dgn \nb chapnum \dgn \nb secnum \dgn \nb seccnum \dgn \nb nonumnum
@@ -1125,7 +1174,7 @@ znovu přechodně předefinuje "\act" a předloží mu "\iilist".
\ilabel [mkindex:od] {firstdata}
\ilabel [mkindex:do] {after\nb act}
-\ilabel [mkindex:orippx] {orippx}
+\ilabel [mkindex:par] {exhyphenpenalty}
\inext{makeindex}{^^B\cbrace}{++}
@@ -1171,20 +1220,12 @@ Může například psát "\def\everyii{\indent}", pokud chce.
\ilabel [printii:iindent] {iindent}
\inext{printii}{\empty}{+-}
-Makro \db iiparparams nastavuje parametry sazby odstavce v rejstříku. Vlevo
+Makro "\makeindex" nastavuje na řádku \cite[mkindex:par] lokálně
+parametry sazby odstavce v rejstříku. Vlevo
budeme mít "\leftskip" rovný "\iindent", ale první řádek posuneme o
"-\iindent" (viz řádek kódu~\cite[printii:iindent]) takže první řádek je
vystrčen doleva. Vpravo máme pružnou mezeru, aby se seznam čísel stran mohl
-rozumně lámat, když je moc dlouhý. Makro "\iiparparams" si musí poznačit do
-makra \db orippx původní údaje měněných hodnot. Není možné se totiž schovat
-do skupiny, protože rejstřík je obvykle tištěn pomocí
-"\begmulti...\endmulti" a toto makro občas ukončuje plnění boxu a spouští
-"\flushcolumns". Kdybychom měli "\makeindex" ve skupině, pak by při
-"\flushcolumns" došlo ke křížení skupin. Na konci práce "\makeindex" na
-řádku \cite[mkindex:orippx] je makro "\orippx" zavoláno a tím jsou parametry
-odstavce vráceny do původní podoby.
-
-\inext{iiparparams}{\empty}{+-}
+rozumně lámat, když je moc dlouhý.
Pomocné makro \db scanprevii "<expanded-previi>&" se podívá do "\previi",
odloupne z něj úsek před prvním lomítkem a tento úsek definuje jako
@@ -1205,112 +1246,131 @@ Nejprve se zaměříme na vytvoření makra
"\isAleB"~"\,<heslo1>"~"\,<heslo2>", které rozhodne, zda je "<heslo1>" řazeno
před "<heslem2>" nebo ne. Výsledek zkoumání můžeme prověřit pomocí "\ifAleB".
-Pro porovnání dvou údajů vyžaduje norma dva průchody. V prvním (primární
+Pro porovnání dvou údajů vyžaduje norma dva průchody. V prvním (primárním
řazení) se rozlišuje jen mezi písmeny A B C Č D E F G H Ch I J K L M N O P Q
R Ř S Š T U V W X Y Z Ž. Pokud jsou hesla z tohoto pohledu stejná, pak se
provede druhý průchod (sekundární řazení), ve kterém jsou řazena
neakcentovaná písmena před přehlasovaná před čárkovaná před háčkovaná před
stříškovaná před kroužkovaná a dále s nejnižší prioritou malá písmena před
-velká. Připravíme si tedy dvě sady "\lccode" dvojic: pro první průchod a pro
-druhý. Porovnávaná hesla zkonvertujeme pomocí "\lowercase" při nastavení
-"\lccode" odpovídajícího průchodu. Pak takto zkonvertovaná hesla teprve
-začneme porovnávat.
-
-Makro \db setprimarysorting připraví "\lccode" znaků české a slovenské
-abecedy pro první průchod a \db setsecondarysorting pro druhý průchod.
-Makro "\setprimarysorting" expanduje \db sortingdata
-a předhodí před takto expandovaná data "\act".
+velká.
+
+Nejprve připravíme data pro porovnávací algoritmus.
+
+\inext{sortingdata}{\empty}{+-}
+
+Mezi jednotlivými čárkami v makru \db sortingdata jsou skupiny znaků, které
+se z hlediska prvního průchodu řadicím algoritmem nerozlišují. Jednotlivé
+znaky v "\sortingdata" se rozliší při případném druhém průchodu. Řazení
+znaků v "\sortingdata" odpovídá požadovanému abecednímu řazení.
+
+Dále je makrem \db setignoredchars vyjmenován seznam znaků, které se při
+řazení zcela ignorují (jakoby tam vůbec nebyly). Typicky jde o interpunkci.
+Makro nastaví všem těmto znakům pomocí "\setlccodes" kód tečky a tato tečka
+se posléze z porovnávaného textu odstraní. Seznam znaků je oddělen tečkou a
+ukončen dvojicí "{}{}". Seznam ignorovaných znaků odpovídá pravidlům českého
+řazení. Norma doporučuje sice pro případ, kdy se hesla neliší jinak než těmito znaky,
+nasadit další průchod řazení, ale pro jednoduchost a velkou výjimečnost
+takové situace toto v OPmac implementováno není.
+
+Makra \db specsortingdatacs a \db specsortingdatask deklarují náhrady před
+použitím řadicího algoritmu. Jednotivá náhrada je deklarována jako
+"<string1>:<string2>" a je od další deklarace náhrady oddělena mezerou.
+Tímto způsobem jsou implementovány spřežky ch, Ch a CH, které se nahrazují
+znaky "^^T", "^^U" a "^^V". Ty vystupují v řadicím algoritmu jako jediný
+znak, a mají své místo v makru "\sortingdata" Slovenština má sice další
+spřežky dz, Dz, DZ, dž, Dž, DŽ, ale ty jsou řazeny těsně za D, takže jsou
+řazeny správně i za situace, kdy nejsou nahrazeny jediným znakem. Nicméně,
+pokud by někdo chtěl tyto spřežky (například pro ošetřování výjimek) použít
+jako samostatné znaky, může si definovat své makro "\sortingdata", které by
+obsahovalo
+
+\begtt
+ ...
+ dD\v d\v D,%
+ ^^N^^O^^P,% dz Dz DZ
+ ^^Q^^R^^S,% dž Dž DŽ
+ eE\'e\'E\v e\v E,%
+ ...
+\endtt
+a dále definuje
+\begtt
+\def\specsortingdatask {ch:^^T Ch:^^U CH:^^V
+ dz:^^N Dz:^^O DZ:^^P d\v z:^^Q D\v z:^^R D\v Z:^^S}
+\endtt
+%
+Makra pro spřežky mají název ve tvaru "\specsortingdata<kód jazyka>".
+Použije se makro odpovídající jazyku podle nastaveného dělení slov.
+Není-li makro pro použitý jazyk definováno, žádné náhrady se neprovedou.
+Je třeba upozornit (například uživatele maďarštiny), pokud by se v těchto
+spřežkách chtěli rozšoupnout, vyhněte se znakům "^^I" a "^^M", kterým
+plain\TeX, resp. ini\TeX, nastavuje speciální kategorie.
+
+Implementaci řadicího algoritmu zahájíme makrem \db setprimarysorting, které
+se spustí jednou při sestavení rejstříku, přečte výše uvedená data a
+připraví odpovídající datové stuktury pro první průchod řadicího algoritmu.
+Hlavní činností tohoto makra je, že připraví "\lccode" znaků vyjmenovaných v
+"\sortingdata" podle jejich vzestupného pořadí, přitom znakům v jedné
+skupině (oddělené čárkou) přiřadí stejné "\lccode". Text před řazením pak
+budeme konvertovat použitím "\lowercase".
+
+\inext{setprimarysorting}{\empty}{+-}
+
+Vidíme, že makro "\setprimarysorting" nejprve expanduje "\sortingdata",
+aby se realizovaly znaky typu "\v c" podle nastaveného kódování.
+Dělá to jen tehdy, když je definováno makro "\r", tj. uvedené sekvence pro
+akcenty expandují na správné kódy. Rovněž pomocí
+"\let"\db asciisorting \unskip"=t"
+je možné zabránit použití "\sortingdata" a řadicí algoritmus řadí podle
+ASCII.
+
+Dále "\setprimarysorting" připraví makro
+\db specsortingdata (bez přípony jazyka) z makra
+"\specsortingdata<aktuální jazyk>". Nejrve je expanduje a pak pomocí triku s
+"\meaning" za spoluráce s~makrem \db setprimarysortingA převede všechny znaky
+v makru na kategorii 12, protože toto budeme pro řadicí algoritmus potřebovat.
+
+Konečně se v makru "\setprimarysorting" připraví (za použití opakovaného
+volání "\act") "\lccode" všech znaků zmíněných v "\sortingdata".
Povšimneme si, že pro první průchod dostanou stejný "\lccode" všechny znaky
-na společném řádku makra "\sortingdata", zatímco v druhém průchodu budou mít
-všechny znaky z tohoto makra rozdílný "\lccode", ve vzestupném pořadí.
+ve skupině mezi čárkami.
Je to tím, že v makru "\setprimarysorting" se zvedá "\tmpnum" jen v místě
-čárky, zatímco v "\setsecondarysorting" se "\tmpnum" zvedá pro každý znak.
-Nejnižší hodnotu má mezera vyznačená v "\sortingdata" pomocí "{ }".
+čárky. Nejnižší hodnotu má mezera vyznačená v "\sortingdata" pomocí "{ }".
Tím je zaručeno, že kratší slovo je řazeno dřív než delší slovo se stejným
začátkem, obsahující celé kratší slovo (ten~tučňák$\prec$tento).
Je sice pravda, že ASCII hodnota mezery je ještě menší, ale my musíme
mezeru někam šoupnout na jiný kód než 32, jinak by nám ji nepřečetlo
makro s~neseparovaným parametrem. Ovšem my budeme chtít mezeru přečíst.
-
-\ilabel [sorten] {sort:en}
-\ilabel [lan] {lan:}
-\ilabel [chsorting] {chsorting}
-
-\inext{sortingdata}{\count=3 ^^B\cbrace}{++}
-
-Jedním z problémů českého řazení je dvojhláska ch. Tu potřebujeme
-proměnit v jediný znak. Pro potřeby řazení proměníme ch v "^^T", Ch v "^^U"
-a CH v "^^V". Uděláme to následujícím okultním kódem, který definuje makro
-\db preparesorting "\,<heslo>". Toto makro připraví pomocí do "\tmpb"
-"<heslo>" zkonvertované krz "\lowercase",
-ovšem nejprve je dvojhláska ch nahrazena jedním znakem.
-Makro \db chsorting je implicitně nedefinované, což znamená, že pracujeme s
-dvojhláskou ch. Na řádku \cite[sorten], \cite[lan] a \cite[chsorting] je ovšem nastaveno
-"\chsorting" jako "n", což je vzkaz, že dvojhlásku ch nechceme
-interpretovat.
-
-\inext{bgroup}{\empty}{+-}
-
-Tento kód je bohužel obtížněji čitelný, protože makra "\iiscanch" a další
-potřebují mít separátor "ch" ve stavu, kdy jednotlivá písmena mají "\catcode" 12.
-Pracujeme totiž s výstupem primitivu "\string", který bohužel vše (až na
-mezeru) balí do tokenů s kategorií 12. Proto je celý kód obalen do
-"\bgroup", "\egroup" a "\lowercase". Tam jsou znaky 4, 5, 6, 7,
-které mají kategorii 12, šoupnuty na c, h, C, H. Po tomto dešifrování tedy
-vidíme, že makro \db iiscanch je definováno takto:
-
-\begtt
-\gdef\iiscanch #1ch#2\relax{#1\if$#2$\else^^T\iiscanch #2\relax\fi}
-\iiscanch Schází hrách, který bych házel na stěnu.ch\relax
-\endtt
-
-Uvedený příklad expanduje postupně na
-
-\begtt
-#1<-S
-#2<-ází hrách, který bych házel na stěnu.ch
-=> s^^T\iiscanch #2\relax
-
-#1<-ází hrá
-#2<-, který bych házel na stěnu.ch
-=> s^^Tází hrá^^T\iiscanch #2\relax
-
-#1<-, který by
-#2<- házel na stěnu.ch
-=> s^^Tází hrá^^T, který by^^T\iiscan #2\relax
-
-#1<- házel na stěnu.
-#2<-
-=> s^^Tází hrá^^T, který by^^T házel na stěnu.
-\endtt
-a to nahradí všechny výskyty dvojhlásky ch znakem "^^T". Analogicky pracují
-makra \db iiscanCh a \db iiscanCH. Makro \db preparesortingA nakonec zavolá
-všechna tři makra, takže máme nahrazeny všechny dvojhlásky ch, Ch i CH.
-
-V rámci optimalizace rychlosti jsou před algoritmem na setřídění seznamu
-všechna hesla jednorázově zkonvertovaná podle pravidel prvního průchodu
-řazení a tato data jsou uložena v prvním datovém údaji hesla (ve druhém máme
-seznam stránek). Není tedy nutné dělat konverzi při každém porovnávání dvou
-hesel. Ovšem, pokud porovnání hesel vyjde bez rozdílu, je potřeba provést
-druhý průchod řazení (sekundární řazení). Ten nastavujeme jednotlivě jen pro
-takové dvojice hesel, kde to je potřeba. Pravděpodobnost, že to je vůbec
-někdy potřeba, je mizivá. Data pro primární řazení jsou tedy už připravena na
-řádcích \cite[mkindex:od] až \cite[mkindex:do] v makru "\makeindex".
-
-V českém řazení se nemá přihlížet na interpunkční znaky (tečka, středník,
-otazník, atd.). Hesla máme řadit tak, jako kdyby tam tyto znaky nebyly.
-Kdyby se dvě hesla podle tohoto pravidla nelišila, norma předepisuje nasadit
-cca čtvrtý průchod, ve kterém se tyto znaky rozliší. Čtvrtý průchod
-implementován není: hesla lišící se jen interpunkčními znaky, jsou v OPmac
-při řazení nerozlišitelná, tj. jsou řazena v pořadí, v jakém vstupují do
-rejstříku. Ignorování interpunkčních znaků je provedeno tak, že všem
-těmto znakům je přidělen makrem \db setignoredchars "\lccode" tečky a
-tečka je při zpracování v~"\setprimarysorting" a "\setsecondarysorting" odstraněna
-makrem \db removedot.
-
-\inext{removedot}{\empty}{+-}
-
-Připravíme si "\newif", kterým ohlásíme výsledek porovnání dvou hesel:
+Makrem "\setignoredchars" se zcela nakonec nastaví ignorovaným znakům
+"\lccode" tečky.
+
+Makro \db setsecondarysorting se volá opakovaně a příležitostně pro případy,
+kdy jsou hesla z~hlediska primárního řazení totožná. Nastaví jinak "\lccode"
+znaků. Tentokrát mají všechny znaky ze "\sortingdata" rozdílný "\lccode", ve
+vzestupném pořadí.
+
+\inext{setsecondarysorting}{\empty}{+-}
+
+Makro \db preparesorting se volá (s nastavenými parametry podle
+"\setprimarysorting") pro každé heslo jednou. Heslo je uloženo v názvu
+kontrolní sekvence, která je parametrem makra "\preparesorting". Data pro
+primární řazení jsou už připravena na řádcích \cite[mkindex:od] až
+\cite[mkindex:do] v makru "\makeindex". V případech, kdy jsou dvě hesla
+shodná z hlediska primárního řazení (to nastane asi velmi výjimečně), je pro
+danou dvojici hesel znovu zavoláno makro "\preparesorting", tentokrát s
+přednastavenými daty podle "\setsecondarysorting". Makro "\preparesorting"
+má za úkol uložit výsledek své konverze do "\tmpb".
+
+\inext{preparesorting}{\empty}{+-}
+
+Všimneme si, že "\preparesorting" vykonává jádro své činnosti v \db
+preparesortingA, které přebere text hesla extrahovaný do parametru "#3".
+Toto makro pomocí \db preparesortingB opakovaně volá "\replacestrings", aby
+nahradilo spřežky odpovídajícími náhradami. Dále pomocí "\lowercase" provede
+konverzi a konečně pomocí "\replacestrings{.}{}" odstraní z hesla nejen
+tečky, ale i znaky vyjmenované v makru "\setignoredchars".
+
+Připravíme si pomocí "\newif" makro \db ifAleB, kterým ohlásíme výsledek
+porovnání dvou hesel:
\inext{newif}{\empty}{+-}
@@ -1407,18 +1467,15 @@ měnit výstupní rutinu. Makro z TBN je zde v OPmac ve dvou věcech přepracováno:
\item * Důslednější balancování sloupců vylučující možnost ztráty sazby
a umožňující mít sazbu s nezlomitelnými mezerami mezi řádky.
\item * Makro měří kumulovanou sazbu a umožňuje při rozsáhlém množství
- tiskového materiálu přechodně přejít do režimu \uv{vyprazdňování}.
+ tiskového materiálu obejít problém \uv{dimension too large}.
\enditems
Makra \db begmulti, \db endmulti, \db corrsize, \db makecolumns a \db
splitpart pracují zhruba tak, jak je popsáno v TBN.
-\ilabel [mul:endgraf] {endgraf}
-\ilabel [mul:balance] {last balancing}
-\ilabel [mul:relax] {relax\cbrace}
-\ilabel [mul:prevgraf] {prevdepth}
+\ilabel[mul:prevgraf] {prevgraf}
-\inext{corrsize}{\count=2 \empty}{+-}
+\inext{mullines}{\count=5 ^^B\cbrace}{++}
Výstup rozlomené sazby do sloupců probíhá ve dvou režimech: když je třeba
sloupci zaplnit celou stránku, použijeme "\makecolumns". Toto makro neřeší
@@ -1434,226 +1491,112 @@ prázdný.
\inext{balancecolumns}{^^B\cbrace}{++}
-Když je sazba plněna do boxu~6, může ji být tak moc, že tento box
-překročí maximální výšku boxu, která je v \TeX{}u bohužel
-omezena na cca pět metrů
-(16383~pt). Proto na řádku~\cite[mul:endgraf] je předefinován "\par", který
-přičítá do "\dimen0" celkovou výšku postupně kumulované sazby. Jakmile tato
-výška dosáhne "0.9\maxdimen", předefinujeme makro
-"\balancecolumns" na "\flushcolumns" a spustíme předčasně "\endmulti". Toto makro
-vyprázdní box pomocí opakovaného "\splitpart", ovšem nevyprázdní ho celý.
-Jen tu část, která zaplní celé stránky. Jakmile bude chtít
-"\splitpart" přejít k~vybalancování sazby pomocí
-"\balancecolumns" na řádku \cite[mul:balance], spustí se místo běžného
-"\balancecolumns" makro \db flushcolumns. Toto makro ignoruje zbytek činnosti
-"\endmulti" až po "\relax" na řádku \cite[mul:relax], takže vyskočí z
-trojitě zanořeného "\if". Musí tedy vrátit příslušné množství "\fi" a dále
-vystartuje nový "\setbox6=\vbox". Uvnitř tohoto boxu nejprve vysype zbytek
-boxu~6, pomocí "\unskip\unskip" odstraní "\vfil" a "\vskip-\prevdepth",
-který tam vložil "\endmulti" na řádku~\cite[mul:prevgraf],
-vrátí se k zálohovanému významu makra \db ibalancecolumns
-a znovu definuje "\par" obdobným způsobem jako v~"\begmulti".
-Pak pokračuje ve čtení sazby.
-
-\inext{flushcolumns}{\empty}{+-}
+Když je sazba plněna do boxu~6, může ji být tak moc, že se nedá změřit jeho
+výška pomocí "\dimen0=\ht6". Box samotný sice může být vyšší než pět metrů,
+ale "\dimen0" nikoli: objeví se chyba \uv{dimension too large}.
+Z toho důvodu je v makrech zavedena proměnná \db mullines, která pomocí
+předefinovaného "\par" (na řádku \cite[mul:prevgraf])
+počítá počet řádků sazby. Je-li "\mullines" větší než
+"\tmpnum" (což při daném "\baselineskip" odpovídá 0,8"\maxdimen"), makro
+pracuje, jakoby výška boxu 6 byla 0,8"\maxdimen", tedy rozběhne se
+"\splitpart" a "\makecolumns". Přitom makro "\makecolumns" snižuje hodnotu
+"\mullines" o~počet vytištěných řádků, takže příště už může být "\mullines"
+menší než "\tmpnum". K tomu určitě na několika posledních stránkách dojde,
+takže nakonec "\balancecolumns" pracuje s přesnou výškou boxu~6.
\subsec [barvy] Barvy
%%%%%%%%%%%%%%%%%%%%%
-Od verze pdf\TeX{}u 1.40 nabízí tento program primitivy
-"\pdfcolorstackinit" a "\pdfcolorstack". Makra v OPmac tyto
-primitivy nepoužívají, protože:
-
-\begitems
-\item * Řešení v OPmac jsem vytvořil a použil podstatně dřív, než si programátoři
- pdf\TeX{}u vůbec všimli, že existuje problém s přecházením barev na nové
- stránky.
-\item * Primitivy "\pdfcolorstackinit" a "\pdfcolorstack" stále nejsou dokumentované.
-\enditems
-
-\noactive {\nb writecolorfalse} \noactive {\nb writecolortrue}
-
-Deklarujeme \db ifwritecolor, což nastaveno na true způsobí, že makro
-"\writecolor" bude zapisovat do REF souboru informaci o zrovna nastavené barvě.
-Tuto informaci pak zužitkujeme ve výstupní rutině při nastavování barev,
-které přetékají ze strany na stranu.
-Dále deklarujeme \db lastpage. Tento registr budeme
-potřebovat pro identifikaci jednotlivých stran při čtení REF souboru.
-
-\inext{ifwritecolor}{\empty}{+-}
-
-Barvy se v PDF přepínají pomocí PDF speciálů "<num> <num> <num> <num> k"
-(pro text a plochy) a "<num> <num> <num> <num> K" pro linky. Pro oba typy
-barev připravíme barevná makra \db Blue, \db Red, \db Brown, \db Green, \db
+Až po verzi OPmac Nov. 2014 byly barvy implementovány pomocí "\pdfliteral"
+za použití maker, která sama implementují "\colorstack" pomocí REF
+souboru. V prosinci 2014 jsem se rozhodl tento kód z OPmac odstranit a
+využít přímo primitivní "\pdfcolorstack" (v pdf\TeX{}u od verze 1.40).
+OPmac se tak zbavil asi 30~řádků
+poměrně komplikovaného kódu a ušetřil množství zápisů do REF souboru. Tyto
+změny jsou v souladu s~myšlenkou \uv{v jednoduchosti je síla}. Uvedené rozhodnutí není
+zcela zpětně kompatibilní, protože opouští možnost samostatného nastavení
+barvy pro tenké linky a pro text. Domnívám se, že to nevadí, protože pokud
+uživatel potřebuje elementární manipulaci s barvami, použije sám přímo
+"\pdfliteral". Makra "\setcmykcolor" se nyní opírají o "\pdfcolorstack" a
+nastavují oba typy barev společně. Bylo sice možné inicializovat dva
+zásobníky barev (pro linky a pro text), ale to by fungovalo jen
+v~pdf\TeX{}u. Nikoli v~Xe\TeX{}u. Cílem ovšem je, aby se barvy v pdf\TeX{}u a Xe\TeX{}u
+chovaly pokud možno stejně. Navíc, když uživatel napíše barevně odmocninu,
+musí mít oba typy barev zapnuty současně na stejnou hodnotu, jinak má véčko
+odmocniny v jiné barvě než vodorovnou čáru. Je tedy i pro uživatele
+jednodušší tyto dva typy barev nerozlišovat.
+
+Makro \db localcolor (na rozdíl od předchozí verze) pouze
+nastavuje "\localcolortrue". Podle \db localcolortrue
+resp. \db localcolorfalse se bude větvit činnost přepínačů barev, které
+ukládají aktuální barvu do zásobníku. To je tedy druhá mírná odlišnost od starší verze
+OPmac Nov. 2014, kdy makro "\localcolor" přímo ukládalo aktuální barvu do zásobníku
+barev, zatímco přepínače barev toto neřešily. Původní typické použití makra
+"\localcolor" není ve sporu s jeho novým významem.
+
+\inext{iflocalcolor}{\empty}{+-}
+
+Makro "\longlocalcolor" dříve umožňovalo přechod barvy na další stránku,
+nyní je tato vlastnost přímo řešena díky "\pdfcolorstack", takže netřeba
+rozlišovat mezi "\localcolor" a \db longlocalcolor.
+Makro \db linecolor nyní nedělá nic, protože nerozlišujeme mezi barvou linek
+a barvou textu. V původní verzi bylo prefixem pro barvy linek.
+
+\inext{backward}{\empty}{+-}
+
+Připravíme barevná makra \db Blue, \db Red, \db Brown, \db Green, \db
Yellow, \db Cyan, \db Magenta, \db White, \db Grey, \db LightGrey, \db Black.
Uživatel si může definovat další.
\inext{Blue}{\empty}{+-}
-Makro \db setcmykcolor nastaví barvu textu (při "\pdfK" obsahující \uv{k})
-nebo barvu linek (při "\pdfK" obsahující
-\uv{K}). Dále si toto makro globálně uloží nastavenou barvu do
-\db currcolork, resp. \db currcolorK. Také podle předchozí "\currcolork",
-resp. "\currcolorK" testuje, zda je potřeba aktuální barvu
-změnit. Pokud ne, tak "\pdfliteral" pro nastavení barvy nevloží.
+Makro \db setcmykcolor "{<CMYK barva>}" nastaví požadovanou barvu.
+Nejprve přepne makro "\ensureblacko" do aktivního stavu. V tomto stavu makro
+setrvá právě tehdy, když je v dokumentu použit aspoň jednou přepínač barvy.
+Dále makro "\setcmykcolor" nastaví při
+"\localcolorfalse" barvu přímo a při "\localocolortrue" barvu vloží do
+zásobníku a pomocí "\aftergroup" zajistí návrat k původní hodnotě.
+Navíc nastaví na odpovídající hodnotu makro \db currentcolor.
\inext{setcmykcolor}{^^B\cbrace}{++}
-Problém barev v PDF je, že od výskytu speciálu pro barvu jsou změněné barvy
-až po jiný výskyt takového speciálu nebo po konec strany. Na každé nové
-straně začíná sazba v barvě černé. Nám ovšem někdy může obarvený text přetéci
-na další stranu. Pak ale musíme v "\output" rutině
-nastavit barvu, která přetekla. Ovšem jak poznáme, že něco přeteklo do další
-strany? Jedině pomocí asynchronního "\write". Proto makro
-"\setcmykcolor" nevkládá do PDF jen požadovaný speciál, ale taky ukládá
-pomocí \db writecolor "<k nebo K>" informaci do REF souboru ve formátu
-"\Xpdfcolork{<CMYK barvy>}" nebo "\XpdfcolorK{<CMYK barvy>}".
+Makro "\currentcolor" je nastaveno na výchozí hodnotu \db pdfblackcolor
-\inext{writecolor}{^^B\cbrace}{++}
+\inext{pdfblackcolor}{currentcolor}{++}
-Makro \db pdfK má implicitně hodnotu "k" (barva pro texty a plochy) a
-přechodně při použití \db linecolor "<přepínač barvy>" má hodnotu "K".
+Makro \db ensureblacko "{<sazba>}" je použito pro sazbu záhlaví a zápatí ve
+výstupní rutině v~makru "\opmacoutput". Implicitně se "\ensureblacko{<sazba>}" chová
+stejně jako samotná "<sazba>", ale po použití přepínače barvy
+"\setcmykcolor" začne fungovat jako \db ensureblackoA, což zajistí bravu
+"<sazby>" v~černém. Je to provedeno tak, že je na začátku "<sazby>"
+alokována nová úroveň zásobníku barev s výchozí černou barvou a na konci
+"<sazby>" je tato úroveň zásobníku ukončena.
-\inext{pdfK}{\empty}{+-}
+\inext{ensureblacko}{\empty}{+-}
-Výchozí hodnoty maker "\currcolork" a "\currcolorK" jsou rovny barvě černé,
-neboli makru \db pdfblackcolor.
+Makra \db colorstackpush "{<CMYK barva>}" a \db colorstackpop implementují
+práci se zásobníkem barev za použití odpovídajících \TeX{}ových primitivů.
+Není-li přítomen pdf\TeX{} ve verzi aspoň 1.40, je barva nastavena pomocí
+"\pdfliteral" (což v komplikovanějších případech při přechodu na další
+stránky nefunguje správně), jinak je použit "\pdfcolorstack", který je
+inicializován pomocí "\pdfcolorstackinit". Povšimněte si, že se současně
+pracuje s barvou textu "<c> <m> <y> <k> k" i s barvou tenkých linek
+"<c> <m> <y> <k> K".
+Konečně makro \db colorstackset "{<CMYK barva>}" nastavuje barvu přímo s
+umístěním této bravy na vrchol zásobníku místo bravy předchozí.
-\inext{pdfblackcolor}{\empty}{+-}
-
-Následuje výklad makra \db localcolor. Uvědomíme si, co od něj
-vlastně očekáváme. Ukázka první:
-
-\begtt
-\Blue základní text je modrý.
-{\localcolor \Green Zelený, {\localcolor \Red červený,} tady zpátky zelený,
- \Grey Gandalf šedý} a tady zpátky základní modrý text.
-\endtt
-
-Ukázka druhá:
-
-\begtt
-\Blue základní text je modrý.
-{\localcolor \Green \linecolor\Red Tady je zelený text a červené linky.}
-Zde je zpátky text modrý a linky černé.
-\endtt
-
-Z ukázky první plyne, že "\localcolor" si musí uložit informaci o právě
-nastavené barvě do zásobníku, ze kterého ji na konci skupiny vyzvedneme
-makrem "\restorecolor". Toto makro pošleme na konec skupiny příkazem
-"\aftergroup". Z ukázky druhé plyne, že do zásobníku musíme uložit nejen
-informaci o barvě textu (k) ale též informaci o barvě linek (K) a makro
-"\restorecolor" musí zrestaurovat oba typy barev.
-
-Pro zásobník je rezervováno makro \db savedcolors, do kterého jsou údaje
-vkládány vlevo a zleva jsou též vyzvedávány. Jeden údaj je
-ve tvaru "<vzkaz>{<barva k>}{<barva K>}". Výchozí hodnota zásobníku je
-prázdná.
-
-\inext{savedcolors}{\empty}{+-}
+\inext{pdfcolorstack}{\empty}{+-}
-Často se stává, že barvy uvnitř skupin jsou současně barvami v boxech a pak
-máme jistotu, že barva nepřeteče to další strany. Je tedy zbytečné ukládat
-informaci o přechodu barev do REF souboru. Takže makro "\localcolor"
-nastavuje lokálně uvnitř dané skupiny "\writecolorfalse". Pokud uživatel
-pracuje se skupinou, která má tendenci utéci na další stranu, použije místo
-"\localcolor" makro \db longlocalcolor. Makra "\localcolor" a
-"\longlocalcolor" tedy vypadají takto:
-
-\inext{localcolor}{\empty}{+-}
-
-Vidíme, že "<vzkaz>=1" v zásobníku "\savedcolors" znamená, že je třeba změnu
-barvy provedenou na konci skupiny zapsat do REF souboru.
-
-Makro \db restorecolor usazené za koncem skupiny pomocí "\aftergroup" si
-vyzvedne potřebné tři údaje ze zásobníku. K tomu definuje makro "\tmp",
-které to provede. Dále do "\tmpa" vloží "<barvu k>" a do "\tmpb" vloží
-"<barvu K>" a testem proti "\currcolork", resp. "\currcolorK" zjistí, zda je
-vůbec potřeba barvu měnit. Pokud ne, nedělá nic. Jinak zapíše potřebný
-"\pdfliteral" a přenastaví makro "\currcolork", resp. "\currcolorK".
-Konečně, při "<vzkaz>=1", zapíše nově nastavenou barvu do REF souboru.
-Celou práci vykoná uvnitř skupiny, takže lokální změny se vracejí po
-ukončení práce makra k původním hodnotám.
-
-\inext{restorecolor}{\empty}{+-}
+Makra "\colorstackpush", "\colorstackpop" a "\colorstackset" jsou
+odpovídajícím způsobem předefinována v souboru "opmac-xetex.tex", aby bylo
+možné pracovat s barvami i v Xe\TeX{}u.
Přepínače barev stejně jako makra "\localcolor" nebo "\longlocalcolor" se
mohou vyskytnout v~nadpise. Takže je potřeba je zabezpečit proti rozsypání.
\inext{addprotect}{\empty}{+-}
-Aby mohla output rutina správně obsloužit barvy, je třeba učinit několik
-opatření, která jsou zhruba načrtnuta v následujícím schémátku.
-
-\begtt
-\output = {
-\begoutput % Záloha aktuálních barev, nastavení \currcolorkK=černá
-...
-\makeheadline % Uživatel může měnit barvy, ale musí se vrátit k černé.
-\pagecontents = {
- ...\topins % Výchozí barva je černá, k černé je třeba se vrátit.
- \preboxcclv % Nastavení barvy, která přetekla na tuto stranu.
- \unvbox256 % Sazba pro tuto stranu.
- \postboxcclv % Návrat k barvě černé.
- ...\footins % Poznámky pod čarou.
-}
-\makefootline % Výchozí barva je černá, uživatel může nastavit cokoli.
-...
-\endoutput % návrat \currcolorkK k původním zálohovaným barvám
-}
-\endtt
-
-Při nastavování barev v "\headline" a "\footline" je možné použít
-"\localcolor", protože zásobník se tím při práci output rutiny posune a také
-znovu splaskne na původní hodnotu a neovlivní tedy stav v běžné sazbě (mimo
-output rutinu). Ovšem běžná sazba má nastaveny nějak hodnoty "\currcolork" a
-"\currcolorK" a není žádoucí, aby byly tyto hodnoty output rutinou měněny.
-Proto jsou v makru \db begoutput tyto hodnoty zálohovány a v makru
-\db endoutput se k nim output rutina vrátí. Uvnitř output rutiny potlačíme
-všem přepínačům barev jejich tendenci ukládat něco do REF souboru, takže je
-v makru "\begoutput" použito "\writecolorfalse".
-
-\inext{begoutput}{\empty}{+-}
-
-Poněkud složitější je makro "\preboxcclv", které má nastavit barvu, která
-přetekla z předchozí strany. Abychom se k funkci tohoto makra dobrali,
-vraťme se k makrům
-\db Xpdfcolork "{<CMYK barva>}" a \db XpdfcolorK "{<CMYK barva>}",
-která jsou uložena v REF souboru pro každé (potenciálně dlouhé) přepnutí barvy.
-Povšimněte si, že output rutina ukládá do REF souboru pro každou stranu
-makrem "\begoutput" údaj "\Xpage{<číslo strany>}". Tyto údaje
-tvoří oddělovače mezi jednotlivými stránkami.
-
-Příkazy "\Xpdfcolork" a "\XpdfcolorK" ukládají při čtení REF souboru do
-\db pdflastcolork, resp. \db pdflastcolorK, naposledy použitou barvu. Takže na
-příští straně, až narazíme při čtení REF souboru na další "\Xpage", budeme
-vědět, zda je tato naposledy použitá barva černá nebo jiná. Pokud jiná, je
-potřeba ji nastavit jako výchozí i pro tuto (tedy příští) stranu.
-Makro \db Xpage v takovém případě uloží do makra
-"\pgc:<číslo strany>" povel "\setpgcolor <k nebo K> {<CMYK barvy>}".
-Opakuje-li se stejná strana (např. postupné odkrývání výkřiků ve
-slideshow), další "\Xpage" se stejnou stranou nedělají nic.
-
-\inext{Xpdfcolork}{\count=2 \empty}{+-}
-
-Makro \db preboxcclv jednoduše spustí "\pgc:<číslo strany>". Není-li
-"\pgc:<číslo strany>" definováno, je to známka, že barva na začátku je
-černá a díky dvojici "\csname", "\endcsname" se provede "\relax", tedy nic.
-Jinak se nastaví správná barva pomocí \db setpgcolor.
-
-\inext{preboxcclv}{}{++}
-
-Makro \db postboxcclv nastaví zpět černou barvu. Dělá to inteligentně.
-Nejprve nastaví správné hodnoty makrům "\currcolork" a "\currcolorK" po vložení
-boxu~255. K tomu účelu předefinuje "\setpgcolor" tak, aby pouze ukládal tyto
-hodnoty a spustí "\pgc:<číslo strany+1>".
-Poté příkazy "\Black" a "\linecolor\Black" budou vědět,
-jaká je aktuální barva. A je-li černá, neudělají nic, jinak vloží příslušný
-"\special".
-
-\inext{postboxcclv}{\empty}{+-}
-
Není-li použit pdf\TeX{}, některá makra pro barvu deaktivujeme:
\inext{ifpdftex}{\empty}{+-}
@@ -1662,7 +1605,7 @@ Makro \db draft vloží do "\headline" box nulové výšky a šířky "\draftbox",
který vystrčí svou šedou sazbu ven ze svého rozměru a je tištěn dřív, než
jakýkoli jiný materiál na stránce.
-\inext{draft}{\empty}{+-}
+\inext{draft}{}{++}
V makru \db draftbox "{<text>}" je "<text>" otočen o 55 stupňů, zvětšen
desetkrát a vytištěn v barvě "\LightGrey". K tomu jsou
@@ -1670,7 +1613,7 @@ využity PDF transformace souřadnic.
\inext{draftbox}{\empty}{+-}
-Když není použit pdf\TeX{}, není makro deaktivujeme.
+Když není použit pdf\TeX{}, barvy nefungují, takže makro "\draft" deaktivujeme.
\inext{ifpdftex}{\empty}{+-}
@@ -1706,9 +1649,10 @@ modifikovalo. Stačí předefinovat pro tento režim makro
\begtt
\def\destbox[#1#2:#3]{\vbox to0pt{\kern-\destheight
\pdfdest name{#1#2:#3} xyz\relax
- \if#1r\llap{\localcolor\Green\ttt[#3]}\vss
- \else \if#1c\vss\llap{\localcolor\Green\ttt[\tmpb] }\kern-\prevdepth
+ \if#1r\llap{\labelfont[\detokenize\expandafter{#3}]}\vss \else
+ \if#1c\vss\llap{\labelfont[\detokenize\expandafter{\tmpb}] }\kern-\prevdepth
\else \vss \fi\fi}}
+\def\labelfont{\localcolor\Red\tt\thefontsize[10]}
\endtt
Při tomto řešení budou lejblíky z "\label" tištěny nahoru v místě cíle
@@ -1749,8 +1693,9 @@ uvedená makra "\toclink", "\pglink", "\citelink" a "\reflink" probouzejí k
Pdf\TeX{}ové primitivy pro klikací odkazy dovolují dopravit do PDF další
atributy odkazu za slovem "attr". Tam je možné dát najevo, že chceme vidět
aktivní plochy ve formě rámečků. To zařídí makro \db pdfborder "{<typ>}", které
-expanduje na nic, pokud není kontrolní sekvence "\<typ>border" definována.
-Jinak expandují na "arrt" "/C" s obsahem podle "\<typ>border".
+expanduje na "attr" "/Border[0 0 0]", pokud není kontrolní sekvence
+"\<typ>border" definována. Jinak expanduje na "arrt" "/Border[0 0 .6]" a
+"/C" s obsahem podle "\<typ>border".
\inext{pdfborder}{\empty}{+-}
@@ -1784,26 +1729,6 @@ má v URL znak procento, musí psát "\%"
nebo si změní kategorie sám. Podobná poznámka platí pro znaky "{", "}", "\",
"#" a "$".
-Makro \db replacestrings "{<string1>}{<string2>}" vymění v makru "\tmpb"
-veškeré výskyty "<string1>" za "<string2>". Pro tento účel definuje pracovní
-makro "\tmp", které pracuje podobně, jako makro "\iiscanch" (doporučujeme se
-podívat na výklad makra "\iiscanch"). Makro "\tmp" ale není na rozdíl od
-"\iiscanch" expandující. Místo toho postupně kumuluje
-výsledek do nového "\tmpb" pomocí "\addto". Před spuštěním "\tmp"
-expandujeme "\tmpb" pomocí pěti "\expandafter" a poté ho pronulujeme,
-takže to pracuje jako
-"\def\tmbb{}\tmp<původní obsah tmpb>\/<string1>\relax".
-
-V makru pracujeme s tokeny "!" a "?" kategorie 3, které slouží jako
-separátory. Předpokládáme, že takové tokeny se ve zpracovávaném textu nikdy neobjeví.
-
-\inext{bgroup}{\empty}{+-}
-
-Na konci "<textu>" je vložen "?", který jej odděluje od přidaného
-"<string1>". Kdybychom jej tam nedali, pak při "<string1>=//" a při lomítku
-na konci "<textu>" bychom měli "...///" a to způsobí potíže.
-V závěru makra "\replacestring" je přidaný otazník zase odstraněn.
-
\subsec Outlines -- obsah v záložce PDF dokumentu
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2071,8 +1996,9 @@ do více řádků. Je možné si vyzkoušet třeba tento kód:
\begtt
\newdimen\Pwidth
\def\tabdeclareP {\enskip\vtop{\hsize=\Pwidth \rightskip=0pt plus1fil
- \baselineskip=1.2em\lineskiplimit=0pt \noindent##\tabstrutA}\hss\enskip}
-
+ \baselineskip=1.2em\lineskiplimit=0pt
+ \noindent##\unskip\tabstrutA}\hss\enskip
+}
\Pwidth=3cm \table{|c|P|}{\crl \tskip3pt
aaa & Tady je delší textík, který se nevejde na řádek. \crl \tskip3pt
bb & A tady je taky je něco delšího. \crl}
@@ -2114,18 +2040,12 @@ TBN na str.~328.
\inext{orihrule}{\empty}{+-}
-Makro \db frame "{<text>}" vloží vnější "\vbox{\hrule..\hrule}".
-V něm se nachází další box "\hbox{\vrule\kern\vvkern..\kern\vvkern\vrule}"
-a v něm "\vbox{\kern\hhkern..\kern\hhkern}".
-Nejvíce uvnitř je pak "\hbox{<text>}". To by pro sazbu rámovaného textu
-stačilo, nicméně my ještě řešíme úpravu výsledného boxu tak, aby měl účaří
-ve stejném místě jako je účaří textu. Proto uložíme "\hbox{<text>}" do boxu0
-a změříme mu hloubku. V proměnné "\tmpdim" spočítáme celkovou hloubku
-výsledného boxu. Ve výpočtu přičítáme výšku "\hrule", která nemusí být
-0.4pt. Proto si její výšku změříme v boxu1. Ve vnějším "\vbox"u po
-nakreslení spodní "\hrule" se pak vracíme pomocí "\kern-\tmpdim" na úroveň
-účaří a zde umístíme strut hloubky "\tmpdim", aby sazba směrem dolů
-nepřečnívala, ale byla obsažena v~hloubce výsledného boxu.
+Makro \db frame "{<text>}" vloží vnější "\hbox{\vrule<vnitřek>\vrule}".
+Uvnitř tohoto boxu se nachází "\vtop{<další>\kern\vvkern\hrule}", takže "<další>"
+zůstává na účaří. Přitom "<další>" je "\vbox{\hrule\kern\vvkern<další2>}",
+takže "<další2>" zůstává na účaří. V tuto chvíli jsou již vytvořeny čáry
+vlevo, vravo, nahoře i dole. Konečně "<další2>" je
+"\hbox{\kern\hhkern<text>\kern\hhkern}".
\inext{frame}{\empty}{+-}
@@ -2274,39 +2194,6 @@ Při kladení vlevo musíme použít "fill", abychom přeprali natahovací mezeru z
\inext{mnoteA}{^^B\cbrace}{++}
-Text uvnitř "\mnote" přebírá barvu kvůli "\vadjust" \uv{se zpožděním}, podle
-barvy, která je na konci řádku, vedle kterého je "\mnote" umístěna. Makra
-tedy při zpracování parametru "\mnote" nemohou dopředu vědět, jaká to bude
-barva, a nelze tedy použít zásobník barev řízený makry. Uživateli přitom
-musíme dát možnost barvu "\mnote" nastavit, například:
-
-\begtt
-\def\mnotehook{\noindent\Black}
-\endtt
-zajistí, že budou všechny poznámky na okraji černé bez ohledu na to, jakou
-barvu mají řádky, vedle kterých ty poznámky stojí. K tomu účelu je nastavení
-případných barev uživatelem jednak v makru "\mnoteA" obklopeno do dvojice
-"\pdfsave"--"\pdfrestore" a dále je nastartován pomocí \db mnoteC lokální
-zásobník barev, který je pomocí \db mnoteD vrácen do stavu, v jakém byl před
-zahájemním zpracování "\mnote". Uživatel může v prametru "\mnote" používat
-"{\localcolor\Green X{\localcolor\Blue Y}Z}" s~očekávaným výsledkem.
-Barvy neoznačené "\localcolor" končí svou platnost na konci poznámky
-"\mnote".
-
-\inext{mnoteC}{^^B\cbrace}{++}
-
-Základová barva lokálního zásobníku barev je převzata jako
-aktuální barva v době zpracování "\mnote", ale je pozměněna prefixem "\long",
-aby explicitní nastavení barvy vždy založilo barvu. Obecně
-totiž "\setcmykcolor" zakládá barvu jen tehdy, když je rozdílná od
-aktuální. Zde je rozdílnost zajištěna prefixem "\long".
-Tento trik zabere, pokud se uvnitř "\mnote" pomocí "A{\localcolor\Red BC}DE"
-má přejít k původní barvě pro písmena "DE". Ovšem ne vždy bude barva "A"
-shodná s barvou "DE", protože barva "A" odpovídá barvě na koci aktuálního
-řádku odstavce, zatímco "DE" odpovídá barvě v době činnosti makra "\mnote".
-Pokud toto bude uživateli vadit, musí si pomocí "\mnotehook" nastavit
-explicitní barvu poznámky.
-
Makro \db Xmnote pracuje během čtení REF souboru a využívá toho, že makro
"\Xpage" nastavuje číslo právě procesované strany do registru "\lastpge".
Takže stačí použít "\sxdef" následujícím způsobem:
@@ -2495,8 +2382,12 @@ makra "\citelink".
\inext{ecite}{\empty}{+-}
Následuje kód makra \db bib "[<lejblík>]". Nejprve je ošetřeno, zda je použit
-zkrácený nebo rozšířený zápis "\bib[<lejblík>] = {<značka>}". V prvním
-případě se zavolá "\bibB" s prázdným "\bibmark", v druhém případě se
+zkrácený nebo rozšířený zápis "\bib[<lejblík>] = {<značka>}". Případná
+mezera před rovnítkem je odstaněna pomocí triku s~"\rommannumeral", který
+při záporném čísle expanduje na prázdný výsledek, ale případná mezera za "`\." při
+skenování tohoto čísla je pozřena.
+Při zkráceném zápisu makra "\bib" (bez rovnítka)
+se zavolá "\bibB" s prázdným "\bibmark", v druhém případě se
"\bibmark" nejprve naplní prostřednictvím makra \db bibA.
Makro \db bibB vloží prostřednictvím
\db wbib "{<lejblík>}{<číslo citace>}{<značka>}" do REF souboru propojené údaje o
@@ -2624,50 +2515,56 @@ makra "\bbl:b" a "\bbl:c" si dva seznamy "\citelist" a "\citelistB" před svou
\subsec Úprava output rutiny
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Místo původního makra "\plainoutput" používá OPmac makro \db opmacoutput,
-která je obklopeno makry "\begoutput" a "\endoutput" kvůli barvám, jak bylo
-vysvětleno v sekci~\ilink[barvy]{\numref[barvy]}.
-
-\inext{opmacoutput}{}{++}
-
OPmac mění output rutinu proti originální "\plainoutput" jen v nejnutnějších věcech.
-Řeší tyto tři problémy:
+Řeší následující problémy:
\begitems
\item * Místo přímého "\shipout" nechá nejprve box sestavit jako "\box0",
pak provede "\protectlist" a pak provede "\shipout\box0". Tím jsou
zabezpečeny tzv. protektované příkazy při "\write".
+\item * Pomocí "\ensureblacko" jsou řešeny barvy záhlaví, zápatí, "\topins"
+ a "\footins".
\item * Je vložen "\pghook" po sestavení boxů, ale před
"\shipout". Implicitně je "\pghook" prázdný.
Mění jej makro "\margins" pro účely pravolevého střídání okrajů.
-\item * Do "\pagecontents" vkládá "\prepage" (kvůli odkazům na stránku)
- a "\preboxcclv", "\postboxcclv" (kvůli barvám).
+\item * Makro "\pagecontents" obsahuje navíc "\prepage" (kvůli odkazům na stránku).
\enditems
-První úprava zabrání expanzi maker zabezpečených pomocí "\addprotect" v době
-práce příkazu "\shipout", tedy v době, kdy expandují parametry "\write".
-Těmto makrům je přidělen prostřednictvím \db doprotect "<makro>"
-pro tento okamžik význam "\relax". Je potřeba ještě
-vysvětlit, proč bylo nutné sestavit nejprve "\box0" a teprve poté jej poslat
-ven pomocí "\shipout". Je to z toho důvodu, že v době sestavování "\box0"
-jsou expandována "\headline" a "\footline" a pro ten případ ještě chceme,
-aby všechna makra správně expandovala.
+Místo původního makra "\plainoutput" používá OPmac makro "\opmacoutput",
+která je obklopeno makry "\begoutput" a "\endoutput". Makro \db begoutput
+zapíše do REF souboru údaj o čísle strany a předefinuje makra, která se
+mohou vyskytnout v záhlaví či zápatí stránky, pokud od nich chceme, aby
+se chovaly jinak než obvykle. Makro \db endoutput je prázdné a je určeno
+pro strýčka Příhodu.
+
+\inext{opmacoutput}{\empty}{+-}
+
+Makro \db opmacoutput se chová analogicky, jako "\plainoutput". Rozdíl je v
+tom, že nejprve sestaví celou stranu do boxu0 a v té době expandují makra v
+"\headline" a "\footline". Pak spustí "\pghook" a
+"\protectlist". Makro "\protectlist" nastaví díky \db doprotect kontrolní sekvence
+označené jako "\addprotect<sekvence>" na "\relax", takže během "\shipout" (tedy
+během expanze záznamů "\write") se nebudou expandovat.
+Další činnost je zcela shodná s činností makra "\plainoutput".
\inext{opmacoutput}{doprotect}{++}
-K makru "\begoutput" přidáme lokální změnu makra "\nl" v mezeru.
-Makro "\nl" implicitně zalamuje řádky a může se vyskytovat v titulcích,
-takže může být dopraveno do plovoucího záhlaví, kde je zalamování řádků
-neřádoucí.
-Původní obsah makra "\begoutput" je definován v~sekci~\ilink[barvy]{\numref[barvy]}
-a řeší zejména správné nastavení barev.
-Makro \db prepage vkládá klikatelný cíl pro stránku, je-li známo její číslo.
+Barvy jsou v textu nastaveny pomocí "\pdfcolorstack", takže na začátku
+následující strany začíná barva, která skončila na straně předchozí.
+My ale nechceme, aby
+barva textu ovlivnila barvu záhlaví a zápatí. Proto je sazba "\makeheadline"
+a "\makefootline" realizována pomocí makra "\ensureblacko".
-\inext{begoutput}{\empty}{+-}
+Makro \db prepage se spustí na začátku "\pagecontents" a zajistí uložení
+cíle pro odskok podle čísla strany. Makra \db preboxcclv a \db postboxcclv
+se spustí na začátku a na konci sazby boxu~255, jsou prázdná a zůstávají v
+kódu pro zachování zpětné kompatibility.
-Poslední úprava mění plainovské \db pagecontents tak, že vkládá
-"\prepage", "\preboxcclv" a "\postboxcclv". Jinak nechává obsah makra
-stejný, jako v plain\TeX{}u.
+\inext{prepage}{\empty}{+-}
+
+OPmac předefinovává makro \db pagecontents z plain\TeX{}u tak, že přidává
+makra "\prepage", "\preboxcclv" a "\postboxcclv". Také obsah boxů "\topins"
+a "\footins" tiskne pomocí "\ensureblacko".
\inext{catcode}{\empty}{+-}
@@ -2679,7 +2576,12 @@ nastaví podle svého. Jinak je "\footline" shodná s původním nastavením
v~plain\TeX{}u.
\inext{footline}{\empty}{+-}
+
+Makro \db Xpage z REF souboru nastavuje \db lastpage a "\fnotenumlocal".
+S těmito registry také spolupracují makra "\Xlabel", "\Xmnote" a "\Xfnote".
+\inext{lastpage}{\empty}{+-}
+
\subsec Okraje
%%%%%%%%%%%%%%
@@ -2712,9 +2614,11 @@ počítáme jako "\pgwidth"~"-"~"\hsize"~"-"~"2*<levý>" což dá stejnou hodnotu jako
\inext{margins}{\empty}{+-}
Makro \db setpagedimens "<formát> " spustí
-\db setpagedimensA "(<šířka>,<výška>)<jednotka>&", k~to\-mu musí
-dopředu vyexpandovat obsah makra "\pgs:<formát>". To provedeme pomocí tří
-"\expandafter".
+\db setpagedimensB "(<šířka>,<výška>)<jednotka> ", pokud je prvním znakem
+"<formátu>" závorka, jinak spustí \db setpagedimensA, což je makro, které
+použije definovaný formát, ten expanduje a zavolá "\setpagedimensB". Pomocné
+makro \db setpagedimensC "<reg>=<num>:<jednotka>" přiřadí do "<reg>" daný
+rozměr.
\inext{setpagedimens}{\empty}{+-}
@@ -2747,5 +2651,3 @@ na zpracování dokumentu, který nám připravil uživatel. Přeji dobré pořízení.
\bye
-
-
diff --git a/Master/texmf-dist/doc/cstex/opmac-u-en.pdf b/Master/texmf-dist/doc/cstex/opmac-u-en.pdf
index 37f865a8ba6..1a30d653693 100644
--- a/Master/texmf-dist/doc/cstex/opmac-u-en.pdf
+++ b/Master/texmf-dist/doc/cstex/opmac-u-en.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/cstex/opmac-u-en.tex b/Master/texmf-dist/doc/cstex/opmac-u-en.tex
index 82c65e45165..c81b6c9ac19 100644
--- a/Master/texmf-dist/doc/cstex/opmac-u-en.tex
+++ b/Master/texmf-dist/doc/cstex/opmac-u-en.tex
@@ -487,7 +487,8 @@ character between h and i.
\sec Colors
%%%%%%%%%%%
-The colors selection macros are working only if pdf\TeX-like engine is used.
+The colors selection macros are working only if pdf\TeX-like engine (or
+Xe\TeX) is used.
OPmac provides a small number of color selectors:
{\localcolor\Blue "\Blue"},
{\localcolor\Red "\Red"},
@@ -499,31 +500,31 @@ OPmac provides a small number of color selectors:
{"\White"},
{\localcolor\Grey "\Grey"},
{\localcolor\LightGrey "\LightGrey"} and
-"\Black". But user can define more
+"\Black". User can define more
such selectors by setting the CMYK components. For example
\begtt
\def\Orange{\setcmykcolor{0 0.5 1 0}}
\endtt
-The selectors itself change the color of the text and of the lines with the
-thickness more than 1bp. If the "\linecolor" immediately precedes the color
-selector then the lines with thickness less or equal 1bp are colored. This
-is a second independent type of the color.
+The current color in CMYK format is saved in the "\currentcolor" macro, thus you
+can save it to your macro "\let\yourmacro=\currentcolor" and you can return to
+this color by "\setcmykcolor\yourmacro".
-The color selectors work globally on the one page. If the colored text is
-broken to the next page then the color is correctly set on the following
-page(s) after the second run of \TeX, because this event is implemented via
-external file. User can write "\localcolor" inside the group. This command
-saves the current color and restore it after the group is completed. It is
-supposed that the group corresponds to the boundary of a box which cannot break
-to more pages. If this is not true case then user can use "\longlocalcolor"
-instead "\localcolor". Example:
+The color selectors work globally by default. It means that colors don't
+respect the \TeX{} groups and you have to return back to the black
+typesetting explicitly by the "\Black" selector.
+
+OPmac provides the macro "\localcolor". If it is used then the
+colors return back to the original value after \TeX{} groups automatically.
+The macro has local validity. You can use it at begin of your document
+(for all \TeX{} broups) or only in selected \TeX{} group (for this group
+and nested goups). Example:
\begtt
\Red The text is red
-\hbox{\localcolor \Blue here is blue {\localcolor \Green and green}
- restored blue \Brown and brown}
+{\localcolor \Blue here is blue {\Green and green}
+ restored blue \Brown and brown}
now the text is red.
\endtt
@@ -1153,7 +1154,7 @@ Parameters are:
\begitems
* <pg> \dots\ "1" or "2" specifies one-page or two-pages design.
-* <fmt> \dots\ paper format (a4, a4l, etc.).
+* <fmt> \dots\ paper format (a4, a4l, a5, letter, etc. or user defined).
* <left>, <right>, <top>, <bot> \dots\ gives the amount of left, right,
top and bottom margins.
* <unit> \dots\ unit used for values <left>, <right>, <top>, <bot>.
@@ -1177,6 +1178,17 @@ declared margins are true for odd pages. The margins at the even pages are
mirrored in such case, it means that <left> is replaced by <right> and vice
versa.
+The "<fmt>" can be in the form "(<width>,<height>)<unit>" where "<unit>" is
+optional. If it is missing then "<unit>" after margins sspecification is
+used. Fo example:
+
+\begtt
+\margins/1 (100,200) (7,7,7,7)mm
+\endtt
+%
+declares the paper 100$\times$200\,mm with all four margins 7\,mm. The spaces
+before and after "<fmt>" parameter are necessery.
+
The command "\magscale[<factor>]" scales the whole typesetting area. The
fixed point of such scaling is the so called the ``Knuth's point'': 1in
below and 1in right of paper sides. Typesetting (breakpoints etc.) is
diff --git a/Master/texmf-dist/doc/cstex/opmac-u.pdf b/Master/texmf-dist/doc/cstex/opmac-u.pdf
index b1fb80155bd..3a485896585 100644
--- a/Master/texmf-dist/doc/cstex/opmac-u.pdf
+++ b/Master/texmf-dist/doc/cstex/opmac-u.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/cstex/opmac-u.tex b/Master/texmf-dist/doc/cstex/opmac-u.tex
index 87eb21a924f..fa26b8e53ab 100644
--- a/Master/texmf-dist/doc/cstex/opmac-u.tex
+++ b/Master/texmf-dist/doc/cstex/opmac-u.tex
@@ -94,8 +94,8 @@ Pojďme společnými silami tomu odstranit případné mouchy a mušky.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Všechna makra popsaná v této sekci nastavují změny ve fontech a dalších
-parametrech jen lokálně, takže po ukončení skupiny se nastavení vrací k původním
-hodnotĂĄm.
+parametrech jen lokálně, takže jsou-li ve skupině,
+za nĂ­ se nastavenĂ­ vracĂ­ k pĹŻvodnĂ­m hodnotĂĄm.
Makro "\typosize[<velikost fontu>/<řádkování>]" nastaví velikost textových i
matematických fontů a řádkování. Je-li některý z parametrů prázdný, makro
@@ -115,10 +115,10 @@ Začátek dokumentu tedy může vypadat takto:
\endtt
Makro "\typoscale[<faktor-font>/<faktor-řádkování>]" zvětší nebo zmenší velikost
-textových i matematických fontů resp. řádkování <faktor> krát aktuální
+textových i matematických fontů resp. řádkování <faktor>krát aktuální
velikost fontů resp. řádkování.
Faktor je celé číslo, přitom 1000 znamená
-jedničku (jako za slovem "scaled" v~příkazu "\font"). Je-li parametr
+faktor jedna ku jedné (jako za slovem "scaled" v~příkazu "\font"). Je-li parametr
prĂĄzdnĂ˝, je to stejnĂŠ, jako by byl roven 1000.
\begtt
@@ -217,7 +217,7 @@ K tomu slouží makro "\nl", které odřádkuje v místě použití (newline).
Toto makro se navĂ­c v obsahu chovĂĄ jako mezera.
Kapitola, sekce, podsekce se nečísluje, předchází-li "\nonum". Kapitola,
-sekce, podeskce se neobjeví v obsahu, předcházlí-li "\notoc".
+sekce, podsekce se neobjeví v obsahu, předcházlí-li "\notoc".
\label[cislovani]
\sec Další číslované objekty a odkazy na ně
@@ -226,7 +226,7 @@ sekce, podeskce se neobjeví v obsahu, předcházlí-li "\notoc".
Kromě kapitol, sekcí a podsekcí se automaticky číslují ještě rovnice a
popisky pod obrĂĄzky a pod tabulkami.
-Pokud na konci display mĂłdu je uvedeno
+Pokud je na konci display mĂłdu uvedeno
"\eqmark", tato rovnice bude číslovaná. Formát číslování je implicitně jediné
číslo uzavřené v kulaté závorce resetované při každém zahájení nové sekce.
Příklad: "$$ a^2 + b^2 = c^2 \eqmark $$" vytiskne
@@ -253,7 +253,7 @@ $$
Dalšími číslovanými objekty jsou popisky.
Popisek pod obrázky je potřeba uvést slovem "\caption/f" a popisek pod
-tabulkami slovem "\caption/t". Pak následuje text popisku ukončený
+nebo nad tabulkami slovem "\caption/t". Pak následuje text popisku ukončený
prázdným řádkem. Příklad:
\begtt
@@ -329,7 +329,7 @@ pomocí plain\TeX{}ového makra "\topinsert" resp. "\midinsert". Například:
Na automaticky číslované objekty je nutno se občas v textu odkazovat.
Protože dopředu nevíme, pod jakým číslem se rovnice, sekce, tabulka atd.
-vytiskne, je potřeba použít interní lejblíky k označkování odkazovaných
+vytiskne, je potřeba použít interní lejblíky k označení odkazovaných
objektů. K tomu slouží makro "\label[<lejblík>]", které musí předcházet
makru, jež generuje číslo. Není nutné, aby "\label" předcházel těsně danému
makru. Tedy například:
@@ -352,14 +352,14 @@ kterĂĄ shrnuje jistĂ˝ druh zĂĄvislosti.
Text z ukázky vytvoří zhruba toto: \uv{Nyní můžeme hovořit o sekci 2.1
na straně 13 nebo taky o rovnici (1) na straně 15. Dále bude
-potřeba upozornit na tabulku 1.3.1 na straně 42,
+potřeba upozornit na tabulku 5.3.1 na straně 42,
kterĂĄ shrnuje jistĂ˝ druh zĂĄvislosti.}
Jestliže se v textu vyskytují dopředné reference (tj. odkazujeme na objekt,
který ještě není vytištěn) nebo text odkazuje na stránky ("\pgref"), je nutné
-\TeX{}ovat dokument dvakrĂĄt.
+\TeX{}ovat dokument aspoň dvakråt.
-Pomocí "\label[<lejblík>]\wlabel[<text>]" se dá vytvořit kdekoli
+Pomocí "\label[<lejblík>]\wlabel{<text>}" se dá vytvořit kdekoli
obecnĂ˝ cĂ­l <text>, na kterĂ˝ je moĹžnĂŠ odkazovat makry
"\ref[<lejblĂ­k>]" nebo "\pgref[<lejblĂ­k>]".
@@ -427,13 +427,13 @@ doporučuji na stejnou hodnotu nastavit "\iindent".
Vertikální mezera nad a pod prostředím s odrážkami je řízena makrem
"\iiskip".
-\sec Tvorba obsahu
-%%%%%%%%%%%%%%%%%%
+\sec Tvorba automaticky generovanĂŠho obsahu
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Makro "\maketoc" vytiskne v místě svého použití obsah dokumentu bez nadpisu,
jen jednotlivé řádky obsahu. Odsazení jednotlivých řádků je nastaveno na
násobky registru "\iindent". Často je potřeba dokument \TeX{}ovat vícekrát,
-než se obsah zjeví a než se stránkové číslice srovnají správně, protože po
+než se obsah zjeví a než se čísla stran srovnají správně, protože po
prvnĂ­m zjevenĂ­ obsahu se mohou strĂĄnky posunout jinam.
Titulek k obsahu by neměl být číslovaný a neměl by se zjevit v obsahu, takže
@@ -443,7 +443,7 @@ jej zapíšeme třeba pomocí
\nonum\notoc\sec Obsah
\endtt
-Tituly kapitol, sekcí a podsekcí zapisuje OPmac pro účely sestavení obsahu do
+Titulky kapitol, sekcí a podsekcí zapisuje OPmac pro účely sestavení obsahu do
externího souboru "*.ref". Může se stát, že uživatel v těchto textech
použije nějaké komplikované makro, které se pak v souboru \uv{rozsype} do
takového stavu, že nejde vzápětí přečíst. V takovém případě je potřeba
@@ -456,17 +456,21 @@ proti expanzi do "*.ref" souboru. Například OPmac deklaruje:
\endtt
%
a mnoho dalších. Není možné ale předvídat všechno, co může uživatel
-nacpat do titulu sekce nebo kapitoly. Pokud se tedy \uv{rozsype}
+nacpat do titulku sekce nebo kapitoly. Pokud se tedy \uv{rozsype}
REF soubor, je potřeba si tímto způsobem zabezpečit používané makro.
+Poznámka: Při přechodu na novější verzi OPmac se může stát, že REF soubor
+vygenerovaný starou verzí způsobí chyby při dalším zpracování. Pak je
+potřebné nejprve REF soubor smazat.
+
\sec Sestavení rejstříku
%%%%%%%%%%%%%%%%%%%%%%%%
Makro pro zanášení slov do rejstříku je navrženo s ohledem na optimalizaci
počtu úhozů na klávesnici. Autor už napsal své dílo, má daný termín
-odevzdání a nyní ho čeká úmorná práce vyhledávání slov v textu, které by
-měly přijít do rejstříku, a jejich vyznačování. Je třeba mu tuto práci co
+odevzdání a nyní ho čeká úmorná práce vyhledávání slov v textu, která by
+měla přijít do rejstříku, a jejich vyznačování. Je třeba mu tuto práci co
nejvĂ­ce usnadnit.
Pro zanesení slova do rejstříku slouží makro "\ii". Je to zkratka za
@@ -525,7 +529,7 @@ které naznačují, že se do rejstříku dává více slov:
%
Dostaneme totéž jako při "\ii lineární~prostor \ii vektorový~prostor "
a tato ukázka demonstruje ještě jednu věc: je-li potřeba do parametru "\ii"
-dostat mezeru, piĹĄte vlnku.
+dostat mezeru, pište vlnku nebo napište heslo uzavřené ve svorkách.
Pokud se v rejstříku objeví hesla skládající se z více slov, obvykle chceme,
aby u~hesla, kterĂŠ opakuje prvnĂ­ slovo, se toto slovo
@@ -533,9 +537,9 @@ v rejstříku nevypisovalo opakovaně, ale
aby bylo nahrazeno pomlčkou. Například:
\par\nobreak
\medskip
-\hbox{\indent lineĂĄrnĂ­ podprostor 12, 16, 18, 29}\nobreak
-\hbox{\indent \space --- prostor 12, 16--32, 51}\nobreak
-\hbox{\indent \space --- zĂĄvislost 18--20, 34}
+\hbox{\indent lineĂĄrnĂ­ podprostor \ 12, 16, 18, 29}\nobreak
+\hbox{\indent \space --- prostor \ 12, 16--32, 51}\nobreak
+\hbox{\indent \space --- zĂĄvislost \ 18--20, 34}
\medskip
\noindent Při takovém požadavku pište místo vlnky mezi slovy lomítko. Příklad:
@@ -556,8 +560,8 @@ prostor/lineĂĄrnĂ­. Aby se to nemuselo psĂĄt dvakrĂĄt, je k dispozici zkratka
Počet lomítek v hesle pro rejstřík není omezen. Můžete tedy vytvořit
víceúrovňový rejstřík. Nicméně je třeba vědět, že zkratka "@" nevytváří
-všechny permutace, ale jen prohazuje první údaj před lomítkem se všemi
-ostatnĂ­mi. TakĹže "\ii a/b/c,@" je totĂŠĹž jako "\ii a/b/c" "\ii b/c/a".
+všechny permutace, ale jen přesune první údaj před lomítkem za všechny
+ostatnĂ­. TakĹže "\ii a/b/c,@" je totĂŠĹž jako "\ii a/b/c" "\ii b/c/a".
Samotný rejstřík vznikne v místě příkazu "\makeindex". Rejstřík obsahuje
data z předchozího zpracování dokumentu \TeX{}em, takže je potřeba
@@ -587,7 +591,7 @@ Funkci si vysvětlíme na příkladu:
\iis věta/o~neúplnosti/Goedelova {věta/o~neúplnosti/G\"odelova}
\endtt
%
-Lze pak psĂĄt "\ii relax" nebo "\ii chikvadrat" nebo
+Lze pak psĂĄt "\ii relax", "\ii chikvadrat" nebo
"\ii Goedelova/věta/o~neúplnosti,@".
OPmac abecedně řadí podle těchto hesel, ale když dojde
na potřebu heslo vytisknout do rejstříku, vytiskne místo těchto hesel
@@ -596,8 +600,7 @@ který je uveden na pravé straně slovníku.
Příklad ukazuje, že tím lze
řešit nejen tisk hesel, která je potřeba ošetřit
speciálními makry (v příkladu slovo relax), ale také
-výjimky abecedního řazení (písmeno "\"{\tt\char`\"o}
-nemáme v české abecedě, kdoví, kam by se to zařadilo).
+výjimky abecedního řazení.
%
Slovník výjimek je možný zapsat kamkoli před "\makeindex",
typicky se píše na začátek dokumentu.
@@ -625,8 +628,8 @@ Takže třeba "\ii Ernst~@~Young" pro řazení a
\sec Barvy, vodoznaky
%%%%%%%%%%%%%%%%%%%%%
-Makra uvedená v této sekci nastavují barvy jen při použití pdf\TeX{}u a při
-výstupu do PDF. Jinak tato makra neudělají nic.
+Makra uvedená v této sekci nastavují barvy jen při přímém
+vytváření do PDF. Takže při výstupu do DVI tato makra neudělají nic.
%
Barvu textu můžete nastavit pomocí přepínačů
{\localcolor\Blue "\Blue"},
@@ -639,48 +642,53 @@ Barvu textu můžete nastavit pomocí přepínačů
{"\White"},
{\localcolor\Grey "\Grey"},
{\localcolor\LightGrey "\LightGrey"} a
-{"\Black"}. Je potřeba si uvědomit, že tyto
-přepínače pracují globálně nezávisle na skupině uvnitř boxu i mimo, prostě
-kdekoli. Barvu jinou než černou je potřeba nakonec vypnout přepínačem
-"\Black". Pokud barvu jinou než černou zapnete na některé stránce a text v
-této barvě přeteče do stránek dalších, při opakovaném \TeX{}ování se objeví
-správná barva i na následujících stránkách. Tuto skutečnost si totiž
-\TeX{} musí ujasnit prostřednictvím pomocného souboru s odkazy.
-
-Společně s barvou textu tyto přepínače zapínají i barvu větších ploch
-vytvořených pomocí "\hrule" a "\vrule". Ve specifikaci formátu PDF je
-nicméně ještě jeden přepínač barev nezávislý na barvě textu a větších ploch.
-Jsou to barvy linek, kterĂŠ majĂ­ tlouĹĄĹĽku menĹĄĂ­ neĹž 1~bp. Tento \uv{druh
-barvy} se přepíná stejnými přepínači "\Blue", ..., "\Black" ovšem
-před tímto přepínačem musí bezprostředně předcházet slovo "\linecolor".
-Takže "\linecolor\Red" zapne barvu linek na červenou, ale barva textu
-zĹŻstane pĹŻvodnĂ­. Nebo "\Black" vrĂĄtĂ­ do normĂĄlu barvu textu, zatĂ­mco
-"\linecolor\Black" způsobí, že také linky budou dále černé.
+{"\Black"}.
+
+Implicitně tyto přepínače pracují globálně nezávisle na \TeX{}ové skupině.
+Barvu jinou než černou je pak potřeba ukončit explicitním přepínačem
+"\Black". Toto chování je možné změnit uvedením příznaku "\localcolor".
+Tento příznak je možné nastavit globálně (například na začátku dokumentu)
+nebo lokálně uvnitř skupiny. Při globálním nastavení se sazba vrací
+k~původní barvě za všemi \TeX{}ovými skupinami
+a při lokálním nastavení se k původní barvě vrací sazba
+za skupinou začínající příznakem "\localcolor" (a za všemi vnořenými skupinami).
+Příklad:
\def\podbarvi#1#2#3{\setbox0=\hbox{#3}\leavevmode
{\localcolor\rlap{#1\strut\vrule width\wd0}#2\box0}}
+\begtt
+Černý {\localcolor \Blue modrý {\Green zelený \Red červený} modrý} černý.
+\endtt
+%
+Další příklad vytvoří \podbarvi\Yellow\Brown{podbarvený text:}
+
+\begtt
+\def\podbarvi#1#2#3{\setbox0=\hbox{#3}\leavevmode
+ {\localcolor\rlap{#1\strut\vrule width\wd0}#2\box0}}
+ \podbarvi\Yellow\Brown{Tady je hnědý text na žlutém pozadí.}
+\endtt
+
+V původní verzi OPmac bylo moŞnÊ rozliťovat barvy tenkých linek a písma.
+Tuto vlastnost jsem opustil od verze Dec.~2014. Zdůvodnění najdete v
+technickĂŠ dokumentaci.
+
Kromě uvedených barevných přepínačů si můžete \uv{namíchat} v režimu CMYK
i barvy vlastní. Stačí se inspirovat, jak jsou uvedené přepínače
definovĂĄny:\par\nobreak
\begtt
-\def\Red{\setcmykcolor{0.0 1.0 1.0 0}}
+\def\Red{\setcmykcolor{0 1 1 0}}
\def\Brown{\setcmykcolor{0 0.67 0.67 0.5}} ...
\endtt
-Uvnitř skupiny, která se nerozpadne do více stránek, je možno před přepnutím
-barvy použít "\localcolor". \TeX{} si v místě tohoto příkazu
-zapamatuje aktuální barvu a po ukončení
-skupiny se k nĂ­ automaticky vrĂĄtĂ­.
-Následuje příklad, kterým vytvoříme \podbarvi\Yellow\Brown{podbarvený text:}
+Aktuální barvu ve formě čtyř čísel CMYK je možné přečíst z makra
+"\currentcolor" například pomocí
+"\let\savedcolor=\currentcolor" a později je možné se k této barvě
+vrĂĄtit pomocĂ­ "\setcmykcolor\savedcolor".
-\begtt
-\def\podbarvi#1#2#3{\setbox0=\hbox{#3}\leavevmode
- {\localcolor\rlap{#1\strut\vrule width\wd0}#2\box0}}
- \podbarvi\Yellow\Brown{Tady je hnědý text na žlutém pozadí.}
-\endtt
+\medskip
{\bf Vodoznakem} je míněn šedý text opakující se na každé stránce,
který je vytištěn pod obvyklým textem. Například OPmac nabízí makro
"\draft", kterĂŠ zpĹŻsobĂ­, Ĺže kaĹždĂĄ strĂĄnka obsahuje ĹĄikmo napsanĂ˝ velikĂ˝ ĹĄedĂ˝
@@ -800,7 +808,7 @@ odsazenĂ­.
Je-li před zahájením "\begtt" nastaven registr "\ttline" na nezápornou
hodnotu, bude makro číslovat řádky. První řádek má číslo "\ttline+1"
-a po práci makra se registr "\ttbline" posune na číslo posledního
+a po práci makra se registr "\ttline" posune na číslo posledního
vytištěného řádku. Takže v~dalším prostředí "\begtt" ... "\endtt"
číslování pokračuje tam, kde přestalo. Implicitně je "\ttline=-1",
takže číslování neprobíhá.
@@ -852,7 +860,7 @@ makrosouborĹŻ. DĹŻvod: "\activettchar" nastavuje <znak> jako aktivnĂ­, coĹž mĹŻĹ
čtení souborů maker vadit. Není taky rozumné aktivovat znak pro derivaci nebo jiný
v~textu pouŞívaný znak.
-Verbatim listingy je možné tisknout z externího souboru. Například
+Verbatim výpisy je možné tisknout z externího souboru. Například
\begtt
\verbinput (12-42) program.c
@@ -866,7 +874,7 @@ Parametry v kulatĂŠ zĂĄvorce mohou vypadat takĂŠ takto:
\verbinput (-60) program.c % výpis od začátku souboru do řádku 60
\verbinput (61-) program.c % výpis od řádku 61 do konce souboru
\verbinput (-) program.c % výpis celÊho souboru
-\verbinput (70+10) program.c % čtení od řádku 70, přečteno bude 10 řádků
+\verbinput (70+10) program.c % výpis od řádku 70, tiskne 10 řádků
\endtt
V dalších ukázkách OPmac čte od řádku, který následuje za naposledy
@@ -875,8 +883,8 @@ přečteným řádkem souboru z předchozího volání "\verbinput". Je-li soubo
řádek je označen v komentářích jako "n".
\begtt
-\verbinput (+10) program.c % čtení deseti řádků od řádku n
-\verbinput (+) program.c % čtení od řádku n do konce souboru
+\verbinput (+10) program.c % výpis deseti řádků od řádku n
+\verbinput (+) program.c % výpis od řádku n do konce souboru
\vebrinput (-5+7) program.c % vynechá 5 řádků, od n+5 tiskne dalších 7
\verbinput (-3+) program.c % vynechá 3 řádky, tiskne do konce souboru
\endtt
@@ -902,7 +910,7 @@ OPmac v makru "\table{<deklarace>}{<data>}". Příklad:
\begtt
\table{||lc|r||}{\crl
- Měsíc & zboží & cena\hfil \crli \tskip.2em
+ měsíc & zboží & cena\hfil \crli \tskip.2em
leden & noťas & 14 kKč \cr
únor & skejt & 2 kKč \cr
červenec & jachtička & 3,4 MKč \crl}
@@ -912,7 +920,7 @@ Uvedený příklad povede na následující výsledek:
\medskip
\hfil\table{||lc|r||}{\crl
- Měsíc & zboží & cena\hfil \crli \tskip.2em
+ měsíc & zboží & cena\hfil \crli \tskip.2em
leden & noťas & 14 kKč \cr
únor & skejt & 2 kKč \cr
červenec & jachtička & 3,4 MKč \crl}
@@ -1022,10 +1030,10 @@ TBN, kapitolu čtvrtou.
Makro "\inspic <jméno>.<přípona><mezera>" vloží obrázek. Je-li předem nastaven
registr "\picw", má obrázek požadovanou šířku.
-ImplicitnĂ­ hodonta registru je 0\,pt, coĹž znamenĂĄ, Ĺže bude obrĂĄzek vloĹžen
+ImplicitnĂ­ hodnota registru je 0\,pt, coĹž znamenĂĄ, Ĺže bude obrĂĄzek vloĹžen
ve své přirozené velikosti. Analogicky lze nastavit výšku obrázku registrem
"\picheight".
-Přípony souboru s obrázkem mohou být: "png", "jpg", "jbig2", "pdf".
+Přípony souboru s obrázkem mohou být "png", "jpg", "jbig2", "pdf".
Obrázek je vyhledán v adresáři "\picdir". Toto makro je implicitně prázdné,
tj. obrázek je vyhledán v aktuálním adresáři.
@@ -1045,7 +1053,7 @@ do PDF dokumentu jen jednou pdf\TeX{}ovým příkazem "\pdfximage" a dále
opakovat jeho zobrazení na různých místech dokumentu pomocí "\pdfrefximage".
Dokumentace k pdf\TeX{}u řekne víc.
-Makro "\inspic" pracuje jen v pdf\TeX{}u při výstupu do PDF. Pokud máte
+Makro "\inspic" pracuje jen při výstupu do PDF. Pokud máte
nastaven výstup do DVI,
můŞete pouŞít makro "epsf.tex". Vzhledem k omezeným moŞnostem (obråzek jen
ve formĂĄtu EPS) nenĂ­ tento zpĹŻsob prĂĄce s obrĂĄzky v makru OPmac podporovĂĄn.
@@ -1106,14 +1114,13 @@ třetí:
\bigskip\bigskip
-
\sec Poznámky pod čarou a na okraji
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\bf Poznámku pod čarou}
vytvoříte pomocí "\fnote{<text>}". V místě tohoto zápisu
v textu se objeví automaticky generovaná značka a pod čarou dole na stránce
-je tato značka zopakovaná a vedle ní je <text>.
+je tato značka zopakována a vedle ní je <text>.
Značka je implicitně definovaná jako číslo v exponentu
následované závorkou. Číslování poznámek je na každé stránce započato
@@ -1144,11 +1151,11 @@ Příklad:
\begtt
{\typoscale[/1200]\table{||lc|r||}{\crl
- Měsíc & zboží & cena\hfil \crli \tskip.2em
+ měsíc & zboží & cena\hfil \crli \tskip.2em
leden & noťas\fnotemark1 & 14 kKč \cr
únor & skejt\fnotemark2 & 2 kKč \cr
červenec & jachtička\fnotemark3 & 3,4 MKč \crl}}
-\par\nobreak \fnotetext{notebook}\fnotetext{scateboard}\fnotetext{jachta}
+\par\nobreak \fnotetext{notebook}\fnotetext{skateboard}\fnotetext{jachta}
\endtt
%
Čísla za slovy "\fnotemark" je třeba psát od jedné v každé tabulce/boxu.
@@ -1188,7 +1195,7 @@ nahoru. Při záporné hodnotě se posune dolů. Například
%%%%%%%%%%%%%%%%%%%%%%%%%
{\bf Odkazy.}
-PomocĂ­ "\cite[<lejblĂ­k>]" nebo "\cite[<lejbĂ­k1>,<lejblĂ­k2>,<lejblĂ­k3>]"
+PomocĂ­ "\cite[<lejblĂ­k>]" nebo "\cite[<lejblĂ­k1>,<lejblĂ­k2>,<lejblĂ­k3>]"
atd. vytvoříme v~textu odkazy na položky v seznamu literatury. V
seznamu literatury je třeba uvést záznamy, které mají odkazované lejblíky.
Tyto záznamy dostanou v seznamu automaticky vygenerovaná čísla a sekvence
@@ -1238,16 +1245,16 @@ Jednotlivé způsoby jsou níže probrány podrobněji.
\par\nobreak
\begtt
-\bib [tbn] Petr OlĹĄĂĄk. {\it\TeX{}book naruby.} 468~s. Brno: Konvoj, 1997.
+\bib [tbn] Petr OlĹĄĂĄk. {\it\TeX{}book naruby.} 468~s. Brno: Konvoj, 2001.
\bib [tst] Petr OlĹĄĂĄk. {\it TypografickĂ˝ systĂŠm \TeX.}
- 269~s. Praha: CSTUG, 1995.
+ 300~s. Brno: Konvoj, 2000.
\endtt
%
Výťe uvedenå ukåzka då nåsledující výstup:
\medskip
-\bib[tbn] Petr OlĹĄĂĄk. {\it\TeX{}book naruby.} 468~s. Brno: Konvoj, 1997.
+\bib[tbn] Petr OlĹĄĂĄk. {\it\TeX{}book naruby.} 468~s. Brno: Konvoj, 2001.
\bib[tst] Petr OlĹĄĂĄk. {\it TypografickĂ˝ systĂŠm \TeX.}
- 269~s. Praha: CSTUG, 1995.
+ 300~s. Brno: Konvoj, 2000.
\medskip
Je možné použít rozšířený způsob zápisu
"\bib [<lejblík>] = {<značka>} <text záznamu>". Údaj "<značka>" se
@@ -1255,8 +1262,8 @@ pouĹžije do odkazĹŻ při zapnutĂŠm "\nonumcitations". Kolem rovnĂ­tka musejĂ­ bĂ
Například:
\begtt
-\bib [tbn] = {OlĹĄĂĄk, 1997}
- OLŠÁK, P. {\it\TeX{}book naruby.} 468~s. Brno: Konvoj, 1997.
+\bib [tbn] = {OlĹĄĂĄk, 2001}
+ OLŠÁK, P. {\it\TeX{}book naruby.} 468~s. Brno: Konvoj, 2001.
\endtt
\medskip\noindent
@@ -1290,7 +1297,7 @@ pokyny pro Bib\TeX{} do souboru "<dokument>.aux" a zjistĂ­, Ĺže soubor
WARNING: .bbl file doesn't exist. Use the ``bibtex <dokument>'' command.
\endtt
-Přejděte tedy na příkazový řádek a napíšeme "bibtex <dokument>". Tím se
+Přejděte tedy na příkazový řádek a napište "bibtex <dokument>". Tím se
spustí program Bib\TeX{}, který přečte ze souboru "<dokument>.aux" vstupní
pokyny (kterou otevřít ".bib" databázi, který ".bst" styl a jaké lejblíky
jsou požadovány) a na základě toho vygeneruje soubor "<dokument>.bbl", který
@@ -1376,7 +1383,7 @@ podle různých stylů různÊ soubory typu "mybbl-plain.bbl",
\noindent
{\bf Přímé čtení ".bib" databáze} je možné po "\input opmac-bib.tex".
Tato přídavná makra navíc používají externí balíček na čtení ".bib" souborů
-"librarian.tex" od Paula Isamberta. Užití je podobné, jako při "\usebbl":
+"librarian.tex" od Paula Isamberta. Užití je podobné jako při "\usebbl":
\begtt
\usebib/c (<style>) <bib-báze> % řadit podle pořadí citace (c=cite),
@@ -1394,7 +1401,7 @@ představ. Více informací je na konci souboru "opmac-bib.tex".
\noindent
{\bf Formátování seznamu literatury} je řízeno makrem "\printbib",
které je vloženo na začátek každé položky v seznamu.
-Implicitní hodnota makra tiskne čísla položek do
+Implicitně makro tiskne čísla položek do
hranatých závorek a při použití "\nonumcitations" předsadí první řádek
položky a nepřidává nic. Makro může využít "\the\bibnum" pro tisk
čísla nebo "\the\bibmark" pro tisk značky (při "\nonumcitations").
@@ -1471,7 +1478,7 @@ je možné použít následující globální přepínače:
Plain\TeX{} nastavuje levý okraj 1~in a šířku sazby ("\hsize") nastavuje
tak, aby i pravý okraj při formátu papíru \uv{letter} byl 1\,in. Také horní a
-dolní okraj (do kterého přesahuje záhlaví a stránková číslice) jsou
+dolní okraj (do kterého přesahuje záhlaví a čísla stran) jsou
nastaveny na 1~in při formátu papíru \uv{letter} a tím je určena výška sazby
("\vsize"). \csplain{} dělá totéž, tj. okraje jsou 1~in, ale formát papíru
je~A4.\fnote
@@ -1504,14 +1511,25 @@ s~výškou sazby "\vsize". Například
% \hsize, \vsize beze změny.
\endtt
-Uživatel může před použitím "\margins" definovat vlastní <formát> papíru pomocí
-příkazu "\sdef{pgs:<formát>}{(<šířka>,<výška>)<jednotka>}".
-Opmac například implicitně definuje:
+Údaj "<formát>" může být též ve tvaru "(<šířka>,<výška>)<jednotka>", kde
+"<jednotka>" je nepovinnĂĄ a pokud chybĂ­, pouĹžije se jednotka za Ăşdaji s
+okraji. Tedy třeba
\begtt
-\sdef{pgs:a4}{(210,297)mm} \sdef{pgs:letter}{(8.5,11)in}
-\sdef{pgs:b5}{(176,250)mm} \sdef{pgs:a4l}{(297,210)mm}
+\margins/1 (100,200) (7,7,7,7)mm
\endtt
+%
+deklaruje papír o rozměru 100$\times$200\,mm a s okraji 7\,mm po každé
+straně. Mezery před a za údajem "<formát>" nelze vynechat.
+
+Uživatel může také před použitím "\margins" definovat vlastní <formát> papíru pomocí
+příkazu "\sdef{pgs:<formát>}{(<šířka>,<výška>)<jednotka>}".
+%Opmac například implicitně definuje:
+%
+%\begtt
+%\sdef{pgs:a4}{(210,297)mm} \sdef{pgs:letter}{(8.5,11)in}
+%\sdef{pgs:b5}{(176,250)mm} \sdef{pgs:a4l}{(297,210)mm}
+%\endtt
Celou sazbu na úkor okrajů je možno zvětšit/zmenšit příkazem
"\magscale[<factor>]". Například "\magscale[500]" zmenší sazbu na polovinu.
diff --git a/Master/texmf-dist/doc/cstex/prvni.pdf b/Master/texmf-dist/doc/cstex/prvni.pdf
index 27d61de1727..1940d05919b 100644
--- a/Master/texmf-dist/doc/cstex/prvni.pdf
+++ b/Master/texmf-dist/doc/cstex/prvni.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/cstex/prvni.tex b/Master/texmf-dist/doc/cstex/prvni.tex
index 7b0f8e0b932..346e3cc3d6b 100644
--- a/Master/texmf-dist/doc/cstex/prvni.tex
+++ b/Master/texmf-dist/doc/cstex/prvni.tex
@@ -136,7 +136,7 @@ Ostatní v manuålu pouŞitÊ nåzvy programových produktů, firem
apod. mohou být ochrannými znåmkami nebo registrovanými ochrannými
známkami příslušných vlastníků.
\vfill
-Copyright $\copyright$ RNDr. Petr OlĹĄĂĄk, 1999, 2012, 2013
+Copyright $\copyright$ RNDr. Petr OlĹĄĂĄk, 1999, 2012, 2013, 2015
\par
Tento text si můžete vytisknout pro vlastní potřeby. Je k~dispozici
společně s~balíkem \CS\TeX{} na
@@ -203,8 +203,10 @@ odkazují na tzv.~\uv{místní příručku} (Local Guide), která by měla toto
rozhraní popisovat. Tato příručka je závislá na použitém operačním systému,
na čase jejího vzniku, na použité distribuci \TeX{}u, na vybraném textovém
editoru a někdy též na administrátorovi systému, který konfiguruje některé
-věci specificky pro větší pohodlí uživatelů. Ani v~tomto manuálu nejsou
-uvedeny podrobnosti o~uĹživatelskĂŠm rozhranĂ­.
+věci specificky pro větší pohodlí uživatelů. Texty o \TeX{}u uživatelské
+prosředí většinou neuvádějí (je totiž závislé na okolnostech) a popisují pouze
+na systĂŠmu nezĂĄvislĂŠ vlastnosti \TeX{}u jako formĂĄtoru. Ani tento manuĂĄl
+není v tomto ohledu výjimkou.
Při práci s \TeX{}em je obvyklé mít otevřen
v~jednom okĂŠnku textovĂ˝ editor, ve kterĂŠm uĹživatel pĂ­ĹĄe nebo
@@ -222,8 +224,8 @@ pråce s~\TeX{}em nepouŞívåme.
Zvyklosti ve značkování dokumentu jsou vesměs závislé na použitém {\it
formåtu} \TeX{}u, který modifikuje jeho chovåní. Říkåme, Şe je
dokument napsán ve formátu {\it \LaTeX}, pokud je někde na začátku
-vstupního textu dokumentu uvedena značka "\documentclass" nebo
-"\documentstyle". Pokud tam tuto značku nenajdeme, můžeme
+vstupního textu dokumentu uvedena značka "\documentclass" (nebo dříve
+"\documentstyle"). Pokud tam tuto značku nenajdeme, můžeme
předpokládat, že je dokument napsán ve formátu {\it plain}.
Ten umoŞňuje psåt jen anglickÊ texty.
V čechách nebo na slovensku se místo formátu plain
@@ -245,10 +247,10 @@ vstupní text dokumentu připraven v~souboru {\tt dokument.tex}.
příkazový řádek & komentář
\tabline
"tex dokument" & anglickĂ˝ dokument, formĂĄt plain
- "csplain dokument" & formåt csplain, výstup do DVI
"pdfcsplain dokument" & formåt csplain, výstup do PDF
- "latex dokument" & formåt \LaTeX, výstup do DVI
+ "csplain dokument" & formåt csplain, výstup do DVI
"pdflatex dokument" & formåt \LaTeX, výstup do PDF
+ "latex dokument" & formåt \LaTeX, výstup do DVI
\endtable
Všimneme si, že v~příkazovém řádku píšeme za jméno formátu název vstupního
@@ -259,14 +261,16 @@ právě tímto formátem.
Pokud nemĂĄme ve svĂŠ distribuci \TeX{}u formĂĄt csplain, je to ĹĄpatnĂŠ
znamenĂ­. Nebudeme totiĹž schopni zpracovat ani tento manuĂĄl ani
ukázku, která je v~něm obsažena. V~takovém případě lze doporučit
-poohlédnout se po \CS\TeX{}u, který najdeme například na
-\url{http://petr.olsak.net/cstex.html}.
+poohlédnout se www stránce csplainu, kterou najdeme například na
+\url{http://petr.olsak.net/csplain.html}.
\sekce Jdeme na to
%%%%%%%%%%%%%%%%%%
-Nejprve zkusíme v~nějakém textovém editoru vytvořit soubor {\tt pokus.tex},
+Nejprve zkusíme v~nějakém textovém editoru vytvořit soubor {\tt
+pokus.tex}\footnote{Soubor musí být kódovaný při použití cslainu z roku 2013
+a novějšího ~v UTF-8.},
který obsahuje zkušební větu:
\begtt %--------------------------------------------------------------
@@ -286,8 +290,8 @@ očekávaný výsledek:
\enduk %-------------------------------------------------------------
\pp Přitom dole na stránce je ještě vytištěno číslo strany:~1.
-Povelem {\tt csplain pokus} dostaneme tentýŞ výsledek, ale
-výstupem je DVI soubor.
+%Povelem {\tt csplain pokus} dostaneme tentýŞ výsledek, ale
+%výstupem je DVI soubor.
Pokud zkusíme tentýŞ soubor zpracovat \TeX{}em s~formåtem plain
(příkazový řádek {\tt tex pokus}), výstup bude zmršený: \uv{Ahoj svte!}.
@@ -412,6 +416,7 @@ prohlížečem {\tt dvi} souboru následující výsledek:
\par\nobreak\medskip} % konec řádku, zakázaný zlom, menší mezera
\bigskipamount=12truept \medskipamount=6truept
\let\itemskip=\medskip % kolem výčtu prvků bude menší mezera \medskip
+\csname mitvariables\endcsname
\nadpis MĹŻj prvnĂ­ dokument
@@ -781,22 +786,23 @@ To by pro začátek stačilo. Příkazem \verb|\bye| ukončíme své pokusy.
\end{document}
\endtt %--------------------------------------------------------------
-Poznamenejme, Şe zavedení doplňkovÊho stylu {\tt czech} způsobí aktivaci
-českých vzorů dělení slov a písma s~českými znaky. Bez použití tohoto stylu
-pracuje \LaTeX{} implicitně s~anglickými vzory dělení slov a s~písmy, která
-neobsahují háčkovaná a čárkovaná písmena.
+%Poznamenejme, Şe zavedení doplňkovÊho stylu {\tt czech} způsobí aktivaci
+%českých vzorů dělení slov a písma s~českými znaky. Bez použití tohoto stylu
+%pracuje \LaTeX{} implicitně s~anglickými vzory dělení slov a s~písmy, která
+%neobsahují háčkovaná a čárkovaná písmena.
Upozorňujeme, že v~současné době je bohužel \LaTeX{}ů několik druhů.
\uv{StarĂ˝ \LaTeX} (verze~2.09), ve kterĂŠm se
-struktura záhlaví dokumentu mírně lišila. Dále je pro potřeby
-českých dokumentů nutné rozlišovat mezi \LaTeX{}em a \CS\LaTeX{}em
-(druhĂ˝ jmenovanĂ˝ je dnes povaĹžovĂĄn zastaralĂ˝).
-\LaTeX{} implementuje
-český a slovenský jazyk pomocí balíku maker \uv{Babel} nebo
-\uv{polyglossia}, zatímco \CS\LaTeX{} měl k tomu vlastní stylový soubor.
-\CS\LaTeX{} byl u nås mnoho let pouŞívån jako jistå
-modifikace \LaTeX{}u. Uvedená ukázka předpokládá \LaTeX{} s balíčkem
-Babel.
+struktura záhlaví dokumentu mírně lišila (byl použit příkaz "\documentstyle"
+místo "\documentclass"). Dále se pro potřeby
+českých dokumentů dlouho používal místo \LaTeX{}u tzv. \CS\LaTeX{}, který se
+vyhýbal balíčku "babel". Ovšem \CS\LaTeX{} je dnes také považován zastaralý.
+Uvedená ukázka zahrnuje klasický \LaTeX{}, často označovaný jako verze 2e.
+
+Na druhé straně na novějších modifikacích \TeX{}u (Lua\TeX{} a Xe\TeX) je vybudována novější
+verze \LaTeX{}u zvaná Lua\LaTeX{} a Xe\LaTeX. V této novější verzi se nepoužívají
+balíčky {\tt inputenc}, {\tt fontenc} ani {\tt babel}, ale místo toho balíčky
+{\tt fontspec} a {\tt polyglossia}. O tom ale tento ĂşvodnĂ­ text nepojednĂĄvĂĄ.
Výsledek po zpracovåní naťeho dokumentu \LaTeX{}em v~tomto manuålu
pro stručnost neuvádíme. Kdo chce, může si sám \LaTeX{}