diff options
Diffstat (limited to 'Master/texmf-dist/doc/cstex/opmac-d.tex')
-rw-r--r-- | Master/texmf-dist/doc/cstex/opmac-d.tex | 61 |
1 files changed, 47 insertions, 14 deletions
diff --git a/Master/texmf-dist/doc/cstex/opmac-d.tex b/Master/texmf-dist/doc/cstex/opmac-d.tex index ab78fec6146..7fd3da08a92 100644 --- a/Master/texmf-dist/doc/cstex/opmac-d.tex +++ b/Master/texmf-dist/doc/cstex/opmac-d.tex @@ -7,7 +7,8 @@ % This file is encoded in ISO-8859-2 because % UTF-8 encTeX has a conflict with DocByTeX -\def\projectversion{May 2014} +\chyph +\def\projectversion{Jul 2014} \def\headtitle{OPmac} \widowpenalty=10000 @@ -20,7 +21,6 @@ \def\csplain{\CS plain} \def\CS{CS} -\chyph \input docby.tex @@ -1027,8 +1027,17 @@ chceme navíc takový seznam nahradit zápisem 13--16. Makro \inext{Xindex}{\empty}{+-} -Činnost makra "\Xindex" si vysvětlíme za chvíli podrobněji. Nejprve ovšem -definujeme pomocné makro \db firstdata "\,<heslo>"~"\<cs>", které expanduje na +Činnost makra "\Xindex" si vysvětlíme za chvíli podrobněji. Nyní jen +uvedeme, že "\Xindex" je jen speciální variantou obecného makra +\db Xindexg při "#1=,". Takže pracuje s kontrolními sekvencemi typu +"\,<heslo>". Následující text popisuje jen tento případ. Makro "\Xindexg" +je možné použít pro pralelní vytváření dalších seznamů stránek +stejných hesel (např. seznam vyznačený kurzívou, tučně atd.). Jak to udělat +je popsáno v OPmac triku 0072. + +Údaje o stranách spojených s rejstříkovým heslem jsou ukládány do makra +"\,<heslo>" a jsou rozděleny do dvou částí ve tvaru "{prvni}{druhy}". +Definujeme pomocné makro \db firstdata "\,<heslo>"~"\<cs>", které expanduje na "\<cs>"~"<první-datový-údaj-hesla>&". Je-li třeba "\,aa" definováno jako "{prvni}{druhy}", pak "\firstdata"~"\,aa"~"\cosi" expanduje na "\cosi"~"prvni&". Tím máme možnost vyzískat data z makra. Podobně makro @@ -1073,7 +1082,7 @@ if (první výskyt \,<heslo>) { <seznam-stran> = "<strana>"; <stav> = +; <posledni-strana> = <strana>; return; } -if (<strana> == <posledni-strana>) return; +if (<strana> == <empty> || <strana> == <posledni-strana>) return; if (<stav> == +) { if (<strana> == <posledni-strana>+1) { <seznam-stran> += "--"; @@ -1093,6 +1102,15 @@ else { <poslední-strana> = <strana>; \endtt +V makru "\Xindex" pracujeme ještě se dvěma pomocnými makry +\db pgfolioA a \db pgfolioB. Pro kladné stránky se tato makra chovají +stejně, jako kdyby tam vůbec nebyla. Ovšem v plain\TeX{}u +(viz maro "\folio") se mohou stránkové číslice vyskytnout +na začátku dokumentu záporné, v takovém případě se mají tisknout +římskými číslicemi. Proto jsou uvedená makra definována poněkud chytřeji. + +\inext{pgfolioA}{\empty}{+-} + \def\begtthook{} Makro \db makeindex nejprve definuje přechodný význam rekurzivního "\act" tak, aby byly uzavřeny seznamy stránek (tj. aby seznam nekončil @@ -1776,12 +1794,15 @@ expandujeme "\tmpb" pomocí pěti "\expandafter" a poté ho pronulujeme, takže to pracuje jako "\def\tmbb{}\tmp<původní obsah tmpb>\/<string1>\relax". -\inext{replacestring}{\empty}{+-} +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žena sekvence "\/", která jej odděluje od přidaného -"<string1>". Kdybychom ji tam nedali, pak při "<string1>=//" a při lomítku +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á sekvence "\/" zase odstraněna. +V závěru makra "\replacestring" je přidaný otazník zase odstraněn. \subsec Outlines -- obsah v záložce PDF dokumentu @@ -2026,10 +2047,10 @@ raději i mezery za položkou uděláme nepodstatné. Příklad: po deklaraci: "{|cr||cl|}" makro "\scantabdata" vytvoří: \begtt -tabdata: \vrule\tabiteml\hfil#\unsskip\hfil\tabitemr - &\tabiteml\hfil#\unsskip\tabitemr \vrule\kern\vvkern\vrule - &\tabiteml\hfil#\unsskip\hfil\tabitemr - &\tabiteml#\unsskip\hfil\tabitemr\vrule +tabdata: \vrule\tabiteml\hfil#\unsskip\hfil\tabitemr\tabstrutA + &\tabiteml\hfil#\unsskip\tabitemr \vrule\kern\vvkern\vrule\tabstrutA + &\tabiteml\hfil#\unsskip\hfil\tabitemr\tabstrutA + &\tabiteml#\unsskip\hfil\tabitemr\vrule\tabstrutA ddlinedata: &\dditem &\dditem\vvitem &\dditem &\dditem \endtt @@ -2270,10 +2291,22 @@ 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". +"\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: |