From 1450af3d3e883477599a3de6492b6cfdb8f2fba4 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 15 Apr 2016 21:39:56 +0000 Subject: cstex (15apr16) git-svn-id: svn://tug.org/texlive/trunk@40539 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/cstex/README-opmac | 2 +- Master/texmf-dist/doc/cstex/opmac-d.tex | 197 ++++++++++++++++++++++------- Master/texmf-dist/doc/cstex/opmac-u-en.pdf | Bin 227735 -> 235111 bytes Master/texmf-dist/doc/cstex/opmac-u-en.tex | 183 +++++++++++++++++++++++---- Master/texmf-dist/doc/cstex/opmac-u.pdf | Bin 264133 -> 270987 bytes Master/texmf-dist/doc/cstex/opmac-u.tex | 171 +++++++++++++++++++++---- 6 files changed, 451 insertions(+), 102 deletions(-) (limited to 'Master') diff --git a/Master/texmf-dist/doc/cstex/README-opmac b/Master/texmf-dist/doc/cstex/README-opmac index b3a34b07dc5..28b3bb7e280 100644 --- a/Master/texmf-dist/doc/cstex/README-opmac +++ b/Master/texmf-dist/doc/cstex/README-opmac @@ -2,7 +2,7 @@ The documentation of the OPmac is: opmac-u.tex,pdf ... user documentation (in Czech) opmac-u-en.tex,pdf ... user documentation (in English) -opamc-d.tex ... technical documentation (in Czech) +opmac-d.tex ... technical documentation (in Czech) See http://petr.olsak.net/opmac.html for more information. diff --git a/Master/texmf-dist/doc/cstex/opmac-d.tex b/Master/texmf-dist/doc/cstex/opmac-d.tex index 8643c42bdba..767b6a096e1 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{Dec. 2014} +\def\projectversion{Apr. 2016} \def\headtitle{OPmac} \widowpenalty=10000 @@ -25,7 +25,7 @@ \input docby.tex \setlinecomment{\percent} \noactive{\nb\percent} \noactive{\percent\cbrace} -\noactive{\nb fontdimen} +\noactive{\nb fontdimen} \noactive{\nb empty} \title OPmac -- rozšiřující makra plain\TeX{}u @@ -175,8 +175,25 @@ druh \inext {isnextchar}{\empty}{+-} +Makro \db eoldef "\foo#1{}" pracuje jako "\def", ale parametr "#1" je +separován koncem řádku. Takže třeba + +\begtt +\eoldef\foo#1{param={#1}} +\foo tady je parametr +\endtt +expanduje na "param={tady je parametr}". Implementace se opírá o to, že +při "\eoldef\foo" se definují "\foo" a "\\foo:M". +Přitom "\foo" ve skupině pozmění catcode znaku pro konec řádku a spustí +\db eoldefA "\foo". Toto makro načte parametr "#2" do konce řádku (po "^^M"), +dále ukončí skupinu a spustí "\\foo:M{parametr}". Konečně +"\\foo:M" vykoná to, co definoval uživatel. + +\inext {eoldef}{\empty}{+-} + Makro \db maybebreak "" umožní uživateli rozlomit řádek -nebo stránku v místě použití. Zlom se uskuteční, chybí-li do konce +nebo stránku v místě použití. Pomocné marko \db maybebreakA se spustí po +načtení parametru. Zlom se uskuteční, chybí-li do konce řádku/stránky zhruba méně než "" místa. Jinak se zlom neuskuteční a nestane se nic. Makro je závislé na módu \TeX{}u (vertikální/horizontální). Chcete-li jím lámat @@ -295,7 +312,9 @@ u \dgn \nb ttpenalty \dgn \nb tthook \dgn \nb intthook +\dgn \nb ptthook \dgn \nb iiskip +\dgn \nb itemhook \dgn \nb bibskip \dgn \nb tabstrut \dgn \nb tabiteml @@ -312,6 +331,7 @@ u \dgn \nb sechook \dgn \nb secchook \dgn \nb cnvhook +\dgn \nb prepghook \dgn \nb pghook \dgn \nb toclinehook \dgn \nb fnotehook @@ -360,9 +380,10 @@ Do nov "\ten" a to slovo "ten" budeme chápat jen jako historický relikt, který nám ovšem napoví, že kontrolní sekvence je fontovým přepínačem. -OPmac si zjistí, zda je definovaný "\regfont". Pokud ne, upozorní na starou -verzi \csplain{}u na terminálu a potřebná makra si definuje. Je to kopie -kódu ze souboru "csfontsm.tex" z balíčku \csplain{}. +OPmac si zjistí, zda je definovaný "\regfont" (tj. je detekován dostatečně +nový csplain). Pokud ne, upozorní na nedostupnost vicejazyčné podpory na +terminálu a potřebná makra pro fonty si definuje. Je to kopie kódu ze +souboru "csfontsm.tex" z balíčku \csplain{}. \inext {regfont}{\empty}{+-} @@ -528,6 +549,12 @@ Je-li detekov \inext {uselanguage}{\empty}{+-} +Makro \db isolangset "{}{}" přiřadí dlohému názvu +jazyka (a související hodnotě registu "\language") jeho +zkratku dle ISO~639-1 při použití formátu generovaného z "etex.src". +Naopak, při použití CSplainu makro nedělá nic, protože ISO +zkratky a jejich propojení na hodnoty "\language" jsou nastaveny +přímo v CSplainu. \subsec REF soubor @@ -555,8 +582,8 @@ Makro \db inputref spust situaci, kdy už budeme mít definovány všechny kontrolní sekvence, které se v REF souboru mohou vyskytnout. Nyní si toto makro jen připravíme. Makro ověří existenci souboru "\jobname.ref" a pokud existuje, provede -"\input \jobname.ref". V takovém případě po načtení REF souboru jej otevře -k~zápisu a připraví "\wref" do stavu, kdy toto +"\input \jobname.ref". V takovém případě po načtení REF souboru jej +pomocí makra "\openrefA" otevře k~zápisu a připraví "\wref" do stavu, kdy toto makro bude ukládat data do souboru. \inext {inputref}{^^B\cbrace}{+-} @@ -564,20 +591,26 @@ makro bude ukl Makro \db openref kdekoli v dokumentu si vynutí založení souboru "\jobname.ref". Toto makro neprovede nic, je-li REF soubor už založen. To pozná podle toho, že makro "\wref" nemá význam "\wrefrelax". Jestliže soubor -ještě není založen, makro jej založí, předefinuje "\wref" a vloží první -řádek do souboru. Tím je zaručeno, že při příštím \TeX{}ování dokumentu -je soubor neprázdný, takže jej OPmac rovnou přečte a znovu založí na začátku -své činnosti. Nakonec se "\openref" zasebevraždí, aby se nemuselo při -opakovaném volání obtěžovat vykonávat nějakou práci. Práce už je totiž -hotova. +ještě není založen, makro zavolá \db openrefA, které REF soubor založí, +předefinuje "\wref" a vloží první řádek do souboru. Tím je zaručeno, že při +příštím \TeX{}ování dokumentu je soubor neprázdný, takže jej OPmac rovnou +přečte a znovu založí na začátku své činnosti. Nakonec se "\openref" +zasebevraždí, aby se nemuselo při opakovaném volání obtěžovat vykonávat +nějakou práci. Práce už je totiž hotova. -\inext {openref}{^^B\cbrace}{++} +\inext {openref}{\count=2 ^^B\cbrace}{++} Pro zápisy do REF souboru používáme tuto konvenci: první kontrolní sekvence na řádku je vždy tvaru "\X", takže máme přehled, která kontrolní sekvence pochází z REF souboru. +Jako první je do REF souboru vložen příkaz \db Xrefversion "{<číslo>}". Pokud +toto "<číslo>" mení rovno \db REFversion, REF soubor se nepřečte. Tím +je zaručeno, že OPmac nezkolabuje při čtení REF souboru kvůli tomu, že je +zde zmatení verzí. Číslo verze "\REFversion" zvětším o jedničku vždy, když +v~budoucí verzi OPmac přidám nebo uberu v REF souboru nějakou funkci. +\inext {REFversion}{\empty}{+-} \subsec Lejblíky a odkazy %%%%%%%%%%%%%%%%%%%%%%%%% @@ -749,10 +782,20 @@ v OPmac takto: Příkazem "\firstnoindent" dávají tato makra najevo, že následující odstavec nebude mít odstavcovou zarážku. +{\bf Upozornění}: Od verze Apr. 2016 jsou makra "\tit", "\chap", "\sec" a +"\secc" definována pomocí "\eoldef", tedy titulek ve zdrojovém kódu je +ukončen koncem řádku a ne následujícím prázdným řádkem. Chcete-li mít delší +titulek ve zdrojovém kódu rozdělen do více řádků, ukončete \uv{pokračovací +řádky} symbolem~"%". +Pokud chcete makra "\chap", "\sec" atd. použít uvnitř vlastních maker, +nelze je použít přímo. Můžete to ale vyřešit třeba takto: + +\begtt +\def\mymacro#1{... \csname\string\sec:M\endcsname{#1} ...} +\endtt + Makro pro titul \db tit počítá s tím, že bude titul na více řádcích. Sází ho -tedy jako odstavec s~pružnými "\leftskip" a "\rightskip". Příkaz "\unskip" -těsně za parametrem "#1" odstraní mezeru z konce řádku, která tam obvykle -je. Teprve poté je nadpis řádně centrován. +tedy jako odstavec s~pružnými "\leftskip" a "\rightskip". \inext{tit}{^^B\cbrace}{++} @@ -795,13 +838,24 @@ zavolaj V proměnlivé části makra "\dotocnum", tedy v "\dotocnumafter", se řeší uložení informací o kapitole, sekci nebo podsekci do obsahu. K tomu je -využito makro \db wcontents, které provede +využito makro \db wtotoc "<úroveň>{}", které vytvoří \bgroup\def\begtthook{\langleactive} \begtt -\write\reffile{\string#1{}{#2}{\the\pageno}} +\write\reffile + {\string\Xtoc{<úroveň>}{}{}{}{\the\pageno}} \endtt \par\egroup +\noindent +Přitom "<úroveň>" je číslo rovné nule, jedná-li se o kapitolu, je rovné +jedné, jedná-li se o sekci a je rovno dvěma, jedná-li se podsekci. + +\inext{wtotoc}{^^B\cbrace}{++} + +Makro \db wcontents je v kódu ponecháno pro zpětnou kompatibilitu (ukládalo +do REF souboru údaje pro obsah "\Xchap", "\Xsec" a "\Xsecc"). +Někdy v roce 2016 je pravděpodobně zcela odstraním. + \inext{wcontents}{^^B\cbrace}{++} Makro \db dotocnum "{}" umístí cíl odkazu do místa, které je od @@ -984,15 +1038,23 @@ Pomoc V době čtení REF souboru vložíme veškerá data obsahu do makra "\toclist" tak, že v tomto bufferu budeme mít za sebou sekvence "\tocline" následované pěti -parametry. Makra \db Xchap, \db Xsec a \db Xsecc -mají parametry "{<číslo>}{}{}" a jsou definovány následovně: +parametry, které jsou shodné, jako parametry +makra \db Xtoc "<úroveň><číslo>". + +\inext{Xtoc}{}{++} + +Makra \db Xchap, \db Xsec a \db Xsecc přetrvávají v kódu jen pro zpětnou +kompatibilitu a někdy v roce 2016 je odstraním. \inext{Xchap}{\empty}{+-} -Makro \db tocline "{}{}{<číslo>}{}{}" vytvoří -řádek obsahu. Řádek tiskneme jako odstavec, protože "" může být třeba -delší. Registr "\leftskip" nastavíme jako součin "" krát "\iindent". -Pokud se v dokumentu vyskytují kapitoly, odsadíme ještě o další "\iindent". +Makro \db tocline "{<úroveň>}{}{<číslo>}{}{}" vytvoří +řádek obsahu. Údaj "<úroveň>" je číslo 0 pro kapitolu, 1 pro +sekci a 2 pro podsekci. Údaj "" používá OPmac pro informaci +o fontu, kterým se má tisknout řádek v obsahu. +Řádek obsahu tiskneme jako odstavec, protože "" může být třeba +delší. Registr "\leftskip" nastavíme jako součin "<úroveň>" krát "\iindent". +Pokud se v~dokumentu vyskytují kapitoly, odsadíme ještě o další "\iindent". Registr "\rightskip" nastavíme na 2"\iindent", aby delší "" se zalomil dřív než v místě, kde jsou stránkové číslice. Konec odstavce se stránkovou číslicí pak vytáhneme mimo tento rozsah pomocí "\hskip-2\iindent". Odstavec @@ -1343,6 +1405,9 @@ makro s~neseparovan Makrem "\setignoredchars" se zcela nakonec nastaví ignorovaným znakům "\lccode" tečky. +Makro \db sortingmessage ukládá informaci o použitém "\sortingdata", což +bude později vypsáno na terminál makrem "\dosorting". + 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 @@ -1428,7 +1493,8 @@ skupiny. Pak osmipolo je první skupina celá setříděná a druhá obsahuje "\end", tj. všechny položky jsou už setříděné v první skupině, takže stačí ji uložit do "\iilist" a ukončit činnost. Pomocí \db gobbletoend -odstraníme druhé "\end" ze vstupního proudu. +odstraníme druhé "\end" ze vstupního proudu. Makro \db sortreturn ukončí +činnost až po koncové "\relax" a dále vykoná svůj parametr. \noactive{dvojice} \ilabel [merge:porovnani] {isAleB} @@ -1436,7 +1502,7 @@ odstran \ilabel [merge:p1] {ifx,} \ilabel [merge:p2] {fif\nb mergesort\cbrace} \ilabel [konecsortu] {empty\nb iilist} -\inext {def\nb mergesort }{^^B\cbrace}{++} +\inext {def\nb mergesort }{\empty}{+-} {\def\quotehook{\catcode`\<12} Jádro "\mergesort" vidíme na řádcích~\cite[merge:porovnani] @@ -1601,7 +1667,7 @@ Nen \inext{ifpdftex}{\empty}{+-} -Makro \db draft vloží do "\headline" box nulové výšky a šířky "\draftbox", +Makro \db draft vloží do "\prepghook" 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. @@ -1688,7 +1754,20 @@ Ov uvedená makra "\toclink", "\pglink", "\citelink" a "\reflink" probouzejí k životu. Zde je také definováno makro \db urlcolor. -\inext{hyperlinks}{\empty}{+-} +\inext{hyperlinks}{^^B\cbrace}{+-} + +Makro "\toclink" čte parametr ve fromátu \uv{číslo kapitoly, sekce, +kapitoly.sekce atd.}. +Makro "\pglink" zase vyžaduje svůj parametr jen jako číslo strany. Když je dokument +rozdělen do bloků a v~každém je samostatné číslování stran, respektive bloky +obsahují samostatné číslování sekcí, je potřeba rozlišit mezi těmito bloky, +aby interní odkaz při "\hyperlinks" v dokumentu byl jednoznačný. Proto +jsou zavedena (implicitně prázdná) makra \db tocilabel a \db pgilabel. +Každý blok v dokumentu by pak měl mít svůj vlastní "\tocilabel" a +"\pgilabel" o což se musí programátor maker postarat sám. + + +\inext{tocilabel}{}{+-} 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 @@ -1727,7 +1806,7 @@ kategorie. Pak by ale makro "\url" nefungovalo uvnit maker. V zájmu jednoduchosti makra "\url" to neděláme. Takže pokud uživatel má v URL znak procento, musí psát "\%" nebo si změní kategorie sám. Podobná poznámka platí pro znaky "{", "}", "\", -"#" a "$". +"#" a "$". %$ \subsec Outlines -- obsah v záložce PDF dokumentu @@ -1748,7 +1827,7 @@ znovu projde "\toclist". \inext{def\nb outlines}{^^B\cbrace}{++} -V makru \db outlinesA "{}{}{<číslo>}{}{}" +V makru \db outlinesA "{}{}{<číslo>}{}{}" počítáme potomky. Makro je navrženo tak, aby bylo snadno rozšířitelné na libovolnou úroveň hloubky stromu, nicméně pro potřeby OPmac stačí hloubka tři (kapitoly, sekce, podsekce). Úroveň uzlu přečteme v @@ -1775,15 +1854,9 @@ kdy \inext{outlinesA}{\count=2 ^^B\cbrace}{++} -V makru \db outlinesB "{}{}{<číslo>}{}{}" -vkládáme jednotlivou položku obsahu do záložek pomocí pdf\TeX{}ového -primitivu\hfil\break -"\pdfoutline goto name{} count {}". -Číslo "" je opatřeno znaménkem mínus právě tehdy, když chceme, aby -položka ve výchozím stavu nezobrazovala své potomky, ale jen trojúhelníček. -Potomci se zobrazí až po kliknutí na trojúhelníček. V makru \db outlinelevel -máme makrem "\outlines" připravenu úroveň rozevření, kterou si uživatel -přeje. Nejprve přičtením "\count" dostaneme řadu +V makru \db outlinesB "{}{}{<číslo>}{}{}" +vkládáme položku obsahu do záložek. +Nejprve přičtením "\count" dostaneme řadu "\count0:\count1:\count2" do stejného stavu, jako v předchozím prvním průchodu a máme tím jednoznačně přidělen uzel stromu. Do "\tmpnum" vložíme údaj o počtu potomků daného uzlu. K tomu je potřeba @@ -1800,8 +1873,28 @@ vz \inext{outlinesB}{^^B\cbrace}{++} -Makro \db setcnvcodesA zkontroluje podle definovanosti "\r", zda je zapnutý -"\csaccents" a pokud je, expanduje "\toasciidata". +Makro \db outlinesC "{<úroveň>}{}{}{}{}" +konečně zavolá primitivní +"\pdfoutline goto name{} count {}". +a vytvoří lejblík v dané úrovni zanoření na +základě předpočítaného údaje "", který obsahuje počet potomků právě +vkládané záložky. Údaj "" je (po expanzi) +prázdný, pokud nechceme mít potomky skryté a obsahuje znak minus, pokud +chceme mít potomky ve výchozím stavu skryté. +Připomínám, že v makru \db outlinelevel +máme makrem "\outlines" připravenu úroveň rozevření, kterou si uživatel +přeje. Makro "\outlinesC" je připraveno k +předefinování v modulu "opmac-xetex.tex", který pro vytvoření záložek +používá "\special" a nepotřebuje znát údaj "". Příslušný "\special" +využije přímo údaj "<úroveň>". + +\inext{outlinesC}{}{+-} + +Makro \db setcnvcodesA zkontroluje, zda je uživatelem definováno makro +"\toasciidata". Pokud je, použije ho jako "\toasciidata" ke +konverzi akcentovaných znaků na neakcentované. Jinak +podle definovanosti "\r" zkontroluje, zda je zapnutý +"\csaccents" a pokud je, expanduje interní "\toasciidata". Makro \db toasciidata potřebujeme expandovat, protože neobsahuje přímý zápis znaků. Důvod je zřejmý, nechceme, aby se soubor {\tt opmac.tex} stal závislý na použitém kódování. @@ -1852,6 +1945,10 @@ pomoc \inext{testparA}{\empty}{+-} +Makro \db printttline vytiskne číslo řádku. + +\inext{printttline}{\empty}{+-} + Makro \db activettchar pracuje podobně, jako makro "\adef". Navíc potřebuje použít nově načtený znak ve své aktivní kategorii jako separátor vymezující konec parametru. Do sekvencí \db savedttchar a \db savedttcharc @@ -1917,11 +2014,10 @@ se ov V prvním cyklu "\loop" v těle makra "\doverbinput" se opakovaně volá \db vireadline, což je makro, které přečte další řádek ze souboru. V druhém cyklu se opakovaně volá "\vireadline" následované \db viprintline. Toto -makro vytiskne přečtený řádek do dokumentu. Před řádkem může být v "\llap" -vytištěno číslo řádku. Záleží na hodnotě "\ttline". Je to naprogramováno v -souladu s uživatelskou dokumentací. +makro vloží přečtený řádek do "\tmpb". Nakonec se "\tmpb" vytiskne stejným +způsobem, jako při přečtení textu makrem "\begtt". -\inext{vireadline}{\empty}{++} +\inext{vireadline}{\empty}{+-} \subsec Jednoduchá tabulka @@ -2064,6 +2160,9 @@ Nen \inext{ifpdftex}{\empty}{+-} +Makro \db inspicpage může při natažení PDF obsahovat text "page". +Pak se jako obrázek použije odpovídající strana PDF dokumentu. + \subsec PDF transformace %%%%%%%%%%%%%%%%%%%%%%%% @@ -2535,7 +2634,9 @@ kter 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. +pro strýčka Příhodu. Makro \db prephoffset je rovněž implictně prázdné, +spouští se v "\begoutput" a může v něm být nastaveno střídání +okrajů pro liché a sudé stránky, viz též makro "\margins". \inext{opmacoutput}{\empty}{+-} diff --git a/Master/texmf-dist/doc/cstex/opmac-u-en.pdf b/Master/texmf-dist/doc/cstex/opmac-u-en.pdf index 1a30d653693..9a2a9c24833 100644 Binary files a/Master/texmf-dist/doc/cstex/opmac-u-en.pdf and b/Master/texmf-dist/doc/cstex/opmac-u-en.pdf differ diff --git a/Master/texmf-dist/doc/cstex/opmac-u-en.tex b/Master/texmf-dist/doc/cstex/opmac-u-en.tex index c81b6c9ac19..5cc91d877c9 100644 --- a/Master/texmf-dist/doc/cstex/opmac-u-en.tex +++ b/Master/texmf-dist/doc/cstex/opmac-u-en.tex @@ -5,14 +5,16 @@ \typosize[11/13] -\def\thefnote{$^{\locfnum}$} +%\def\thefnote{$^{\locfnum}$} +\addto\footstrut{\hang} \catcode`<=13 \def<#1>{\hbox{$\langle$\it#1\/$\rangle$}} \activettchar" -\insertoutline{CONTENTS} \outlines{0} \hyperlinks{\Blue}{\Green} +\hyperlinks{\Blue}{\Green} +\insertoutline{CONTENTS} \outlines{0} \tit OPmac -- macros for plain\TeX\fnotemark1 @@ -27,7 +29,8 @@ \fnotetext {This text is second revised version. The first version was published in TUGboat 34:1, 2013, pp.~88--96} -\notoc\nonum \sec Contents\par\maketoc +\notoc\nonum \sec Contents +\maketoc \nonum \sec Introduction %%%%%%%%%%%% @@ -67,7 +70,7 @@ OPmac package offers a markup language for authors of texts (like \LaTeX), i.e. the fixed set of tags to define the structure of the document. This markup is different from the \LaTeX{} markup. It may offer to write the source text of the document somewhat clearer and more attractive. The OPmac -package, however, does not care for typographic of the document. The simple +package, however, does not care for the typography of the document. The simple sober document is created if no additional macros are used. We assume that the author of additional macros is able to create a look of the document to suit specific requirement. @@ -76,7 +79,7 @@ OPmac has a small number of additional packages: "pdfuni", "opmac-xetex" and "opmac-bib" (see the end of \url{http://petr.olsak.net/opmac-e.html} page). Moreover, there exist many tens of little OPmac tricks comparable with \LaTeX{} packages -mentioned on \url{http://petr.olsak.net/opmac-tricks.html} page. +mentioned on \url{http://petr.olsak.net/opmac-tricks-e.html} page. \secnum=-1 @@ -96,8 +99,9 @@ Here is a text. \bye \endtt -You can use \TeX, pdf\TeX, Xe\TeX{} or lua\TeX{} with "etex.src" or \csplain{} -preloaded. The \csplain{} is recommended but it is not explicitly requested if you +You can use \TeX, pdf\TeX, Xe\TeX{} or lua\TeX{} with plain \TeX{} format +(classical "plain.tex", "etex.src" or \csplain{}). +The \csplain{} is recommended but it is not explicitly requested if you don't need to use Czech/Slovak specific features\fnote {Warnings: ``falling back to ASCII sorting'' or ``CZ/SK outline-conversion is off'' may occur without \csplain{}.}. @@ -183,14 +187,14 @@ This is {\em important} text. % = This is {\it important\/} text. %%%%%%%%%%%%%%%%%%%%%%%%%% The document can be divided into chapters, sections and subsections and titled -by "\tit" command. The parameters have to be separed by empty line (no +by "\tit" command. The parameters are separed by the end of current line (no braces are used): \begtt -\tit Document title -\chap Chapter title -\sec Section title -\secc Subsection title +\tit Document title +\chap Chapter title +\sec Section title +\secc Subsection title \endtt The chapters are numbered by one number, sections by two numbers @@ -555,7 +559,7 @@ DRAFT on the background of every page. \sec Hyperlinks, outlines %%%%%%%%%%%%%%%%%%%%%%%%% -If the command "\hyperlins{}{}" is used at the beginning of +If the command "\hyperlinks{}{}" is used at the beginning of the file, then the following objects are hyperlinked when PDF output is used: \begitems @@ -597,7 +601,7 @@ The "\url" macro prints its parameter in "\tt" font and creates a potential breakpoints in it (after slash or dot, for example). If "\hyperlinks" declaration is used then the parameter of "\url" is treated as an external URL link. An example: "\url{http://www.olsak.net}" creates \url{http://www.olsak.net}. -The charecters {\tt\%}, "\", "#", "$", "{" and "}" have to be protected by +The charecters {\tt\%}, "\", "#", "$", "{" and "}" have to be protected by %$ backslash in the "\url" argument, the other special charecters "~", "_", "^", "&" can be written as single character. You can insert the "\|" command in the "\url" argument as a potential breakpoint. @@ -606,10 +610,10 @@ If the linked text have to be different than the URL, you can use "\ulink[]{text}" macro. For example: \begtt -\ulink[http://www.olsak.net/opmac-e.html]{OPmac page} +\ulink[http://petr.olsak.net/opmac-e.html]{OPmac page} \endtt creates -\ulink[http://www.olsak.net/opmac-e.html]{OPmac page}. +\ulink[http://petr.olsak.net/opmac-e.html]{OPmac page}. The PDF format provides ``outlines'' which are notes placed in the special frame of the PDF viewer. These notes can be managed as structured and hyperlinked @@ -798,7 +802,7 @@ can be set by the command "\rulewidth=". The default value given by \TeX{} is 0.4pt. Many tips about tables can be seen on -\url{http://petr.olsak.net/opmac-tricks.html}. +\url{http://petr.olsak.net/opmac-tricks-e.html}. \sec Images %%%%%%%%%%% @@ -874,11 +878,16 @@ the footnotes are numbered from one in whole document in such case. Alternatives are possible, see OPmac tricks or technical documentation.}. The "" is scaled by "\typoscale[800]". The implicit visual aspect of the footnote mark is defined by -"\def\thefnote{$^{\locfnum}$)}". User can redefine it, for example: +"\def\thefnote{$^{\locfnum}$}". +%\fnote{% +% Note the right parenthesis in the mark. This isn't bug, this is used in Czech +% traditional typography. If you need to remove it, you can define +% {\def\s{\string}\tt\s\def\s\thefnote\s{\$\s^\s{\s\locfnum\s}\$\s}}. +% }. +User can redefine it, for example: \begtt -\def\thefnote{\ifcase\locfnum\or - *\or**\or***\or$^{\dag}$\or +\def\thefnote{\ifcase\locfnum\or *\or**\or***\or$^{\dag}$\or $^{\ddag}$\or$^{\dag\dag}$\fi} \endtt @@ -1064,7 +1073,7 @@ of the entry) and "\the\bibmark" (the mark of the entry used when \endtt Next examples can be found on the -\ulink[http://petr.olsak.net/opmac-tricks.html]{OPmac tricks WWW page}. +\ulink[http://petr.olsak.net/opmac-tricks-e.html]{OPmac tricks WWW page}. \sec Typesetting math @@ -1092,7 +1101,7 @@ manual (or TX-fonts manual) for complete list of symbols. The following math alphabets are available: -{\def\tthook{\catcode`\$=3 \catcode`/=0 \medmuskip=0mu}% +{\def\tthook{\catcode`\$=3 \catcode`/=0 \medmuskip=0mu \adef{ }{ }}% \begtt \mit % mathematical variables $abc-xyz,ABC-XYZ$ \it % text italics $/it abc-xyz,ABC-XYZ$ @@ -1128,6 +1137,11 @@ You can change this behavior by following commands: \itvariables % variables typeset by text italics. \mitvariables % variables typeset by math italics. \endtt +% +{\bf Note:} Due to the features described in this section (AMS symbols, "\bbchar", +"\script", "\frak" characters and sans serif bold in math) more special fonts are loaded +(from AMS package and from EC fonts). If you dislike such dependency, you +can follow the \ulink[http://petr.olsak.net/opmac-tricks-e.html\#onlycm]{OPmac trick 0111}. \sec Setting the margins @@ -1179,8 +1193,8 @@ mirrored in such case, it means that is replaced by and vice versa. The "" can be in the form "(,)" where "" is -optional. If it is missing then "" after margins sspecification is -used. Fo example: +optional. If it is missing then "" after margins specification is +used. For example: \begtt \margins/1 (100,200) (7,7,7,7)mm @@ -1224,15 +1238,128 @@ page'': \footline={\hss \rm \thefontsize[10]\the\pageno/\the\lastpage \hss} \endtt +\sec Using other language +%%%%%%%%%%%%%%%%%%%%%%%%% + +OPmac supports all languages but only English, Czech and Slovak languages +are immediately ready for use. When using another language, you have to do +little more work. First of all, use \TeX{} engine and \TeX{} format ready +for such language (with hyphenation patterns preloaded). In order to not +fall to the ``encoding hell'', I recommend to use Unicode engine ("xetex" or +"luatex") and to use Unicode font family where all characters and letters +needed for your language are prepared. + +The "xetex" and "luatex" run with e\TeX{} plain format (generated from +"etex.src" sources) by default. This format includes hyphenation tables for +all languages. For example, you can select Spanish language by +"\uselanguage{espanol}". + +OPmac needs to know the translation of three auto-generated words +``Chapter'', ``Table'' and ``Figure'' for selected language. And this +language is marked by its ISO 639-1 code, "es" for Spanish, for example. + +If you are using e\TeX{} plain format you +must set the connection between long language name and short ISO code +by the macro "\isolangset{}{}". This command does nothing if +\csplain{} is used, because \csplain{} sets ISO codes during format generation. + +The full example with Spanish language follows. Use "xetex example" +or "luatex example" for compiling this. + +\mubyte \ntie ^^c3^^b1\endmubyte \def\ntie{\~n} +\mubyte \ccedilla ^^c3^^a7\endmubyte \def\ccedilla{\c c} +\mubyte \Ccedilla ^^c3^^87\endmubyte \def\Ccedilla{\c C} + +\begtt +\input opmac + +\ifx\directlua\undefined \else \ifx\luafonts\undefined \input luafonts +\fi\fi % lua code to re-define \font primitive, irrelevant in XeTeX + +\font\tenrm="DejaVu Serif" % Unicode font family, +\font\tenbf="DejaVu Serif/B" % where all needed characters are ready +\font\tenit="DejaVu Serif/I" +\font\tenbi="DejaVu Serif/IB" +\tenrm + +\input tx-math % Math setting using TX fonts + +\isolangset {espanol}{es} +\sdef{mt:chap:es}{CapĂ­tulo} % Chapter in es +\sdef{mt:t:es}{Cuadro} % Table in es +\sdef{mt:f:es}{Figura} % Figure in es + +\uselanguage{espanol} % Spanish hyphenation + autogenerated words +\typosize[12/14.4] + +\tit MaĂąana + +\sec MaĂąana + +MaĂąana. + +\caption/f Test % generates the text "Figura 1.1 Test" + +\bye +\endtt + +When sorting the index by "\makeindex" in the non-\csplain{} format, OPmac +writes a warning: ``falling back to ASCII sorting''. +If you want to use sorting rules given for your language, +you must define the macro "\sortingdata". And you can optionally +define the "\specsortingdata" macro. Example: +{\emergencystretch=2em\par} + +\begtt +\def\sortingdataes {aAäÄáÁ,bB,cCçÇ,^^P^^Q^^R,dD,...,zZ,.} +\def\specsortingdataes {ch:^^P Ch:^^Q CH:^^R} +\endtt + +There are groups of letters separated by comma and ended by comma-dot in +the macro "\sortingdata". (In the example above, three dots must +be replaced by real data by the user.) All letters in one group are not +distinguished during first step of sorting (primary sorting). If some items +are equal from this point of view then the secondary sorting is processed +for such items where all mentioned letters are distinguished in the order +given in the macro. + +Sorting algorithm can treat couple of letters (like Dz, Ch etc.) as one letter +if the macro "\specsortingdata" is defined. There is +a space separated list of items in the form ":". The +replacing from to is done before sorting, so you can +use "" in the "\sortingdata" macro. The "" +must be something special not used as the letter of the alphabet. The usage of "^^A", +"^^B" etc. is recommended but you must avoid the "^^I" and "^^M" because +these characters have special catcode. + +The macro "\sortingdata" (if it is defined and the hyphenation of +given language is selected) has precedence before an internal "\sortingdata" +defined in OPmac. The internal "\sortingdata" are optimized for Czech, +Slovak and English languages. + +The list of ignored characters for sorting point of view is defined in the +"\setignoredchars" macro. OPmac defines this macro like: + +{\catcode`\<=12 +\begtt +\def\setignoredchars{\setlccodes ,.;.?.!.:.'.".|.(.).[.].<.>.=.+.{}{}} +\endtt +}% +It means that comma, semicolon, question mark, \dots, plus mark are treated +as dot and dot is ignored by sorting algorithm. You can redefine this macro, +but you must keep the format, keep "\setlccodes" in the front and "{}{}" in +the end. + + \sec Summary %%%%%%%%%%%% \def\tthook{\adef!{\string\endtt}\adef&{\kern.25em}} \begtt -\tit Title (terminated by a blank line) -\chap Chapter Title (terminated by a blank line) -\sec Section Title (terminated by a blank line) -\secc Subsection Title (terminanted by a blank line) +\tit Title (terminated by end of line) +\chap Chapter Title (terminated byend of line) +\sec Section Title (terminated by end of line) +\secc Subsection Title (terminanted by end of line) \maketoc % table of contents generation \ii item1,item2 % insertion the items to the index diff --git a/Master/texmf-dist/doc/cstex/opmac-u.pdf b/Master/texmf-dist/doc/cstex/opmac-u.pdf index 3a485896585..224f494d611 100644 Binary files a/Master/texmf-dist/doc/cstex/opmac-u.pdf and b/Master/texmf-dist/doc/cstex/opmac-u.pdf differ diff --git a/Master/texmf-dist/doc/cstex/opmac-u.tex b/Master/texmf-dist/doc/cstex/opmac-u.tex index fa26b8e53ab..5dcb3351cc8 100644 --- a/Master/texmf-dist/doc/cstex/opmac-u.tex +++ b/Master/texmf-dist/doc/cstex/opmac-u.tex @@ -6,6 +6,7 @@ \chyph % use (pdf)csplain \input opmac \input pdfuni +\hyperlinks{\Blue}{\Green} \typosize[11/13] @@ -14,8 +15,7 @@ \activettchar" -\insertoutline{OBSAH} \outlines{0} \hyperlinks{\Blue}{\Green} - +\insertoutline{OBSAH} \outlines{0} \tit OPmac -- rozĹĄiřujĂ­cĂ­ makra plain\TeX{}u %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -25,11 +25,11 @@ \bigskip \centerline{\url{http://petr.olsak.net/opmac.html}} -\notoc\nonum \sec Obsah\par\maketoc +\notoc\nonum \sec Obsah +\maketoc \nonum \sec Úvod %%%%%%%%% - OPmac je balĂ­k jednoduchĂ˝ch doplňujĂ­cĂ­ch maker k plain\TeX{}u umoŞňujĂ­cĂ­ uĹživatelĹŻm zĂĄkladnĂ­ \LaTeX{}ovou funkcionalitu: změny velikosti pĂ­sma, automatickou tvorbu obsahu a rejstříku, prĂĄci s {\tt bib} databĂĄzemi, @@ -92,7 +92,6 @@ Pojďme společnĂ˝mi silami tomu odstranit případnĂŠ mouchy a muĹĄky. \sec Velikosti fontĹŻ a řádkovĂĄnĂ­ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - VĹĄechna makra popsanĂĄ v tĂŠto sekci nastavujĂ­ změny ve fontech a dalĹĄĂ­ch parametrech jen lokĂĄlně, takĹže jsou-li ve skupině, za nĂ­ se nastavenĂ­ vracĂ­ k pĹŻvodnĂ­m hodnotĂĄm. @@ -180,12 +179,11 @@ To je {\em zdĹŻrazněnĂ˝} text. % jako: To je {\it zdĹŻrazněnĂ˝\/} text. \label[cleneni] \sec ČleněnĂ­ dokumentu %%%%%%%%%%%%%%%%%%%%%% - Dokument se mĹŻĹže sklĂĄdat z kapitol, kapitola ze sekcĂ­ a sekce z podsekcĂ­. -Titul dokumentu vyznačte pomocĂ­ "\tit ", kapitolu -zahajte "\chap" a podobně novou sekci zahajte -"\sec" a podsekci -"\secc". +Titul dokumentu vyznačte pomocĂ­ "\tit ", kapitolu +zahajte "\chap " a podobně novou sekci zahajte +"\sec " a podsekci +"\secc ". TakĹže třeba: \begtt @@ -483,13 +481,13 @@ Příklad: \begtt Tady mluvĂ­m o jistĂŠm -\ii bazmek -bazmeku, kterĂ˝ provokoval moji zvědavost. +\ii kroutilĂ­k +kroutilĂ­ku, kterĂ˝ provokoval moji zvědavost. \endtt Makro "\ii" viditelně neudělĂĄ v sazbě nic. PřilepĂ­ se na nĂĄsledujĂ­cĂ­ slovo (v -naĹĄem příkladě slovo \uv{bazmeku}) jako skrytĂĄ značka. Číslo strany, -kde se ta značka objevĂ­, bude v rejstříku vedle slova \uv{bazmek}. +naĹĄem příkladě slovo \uv{kroutilĂ­ku}) jako skrytĂĄ značka. Číslo strany, +kde se ta značka objevĂ­, bude v rejstříku vedle slova \uv{kroutilĂ­k}. Je-li "\ii" zapsĂĄno ve vertikĂĄlnĂ­m mĂłdu, zahĂĄjĂ­ se v danĂŠm mĂ­stě odstavec, aby se mohla neviditelnĂĄ značka z "\ii" nalepit na nĂĄsledujĂ­cĂ­ slovo. Pokud @@ -573,7 +571,7 @@ To musĂ­me udělat sami. OPmac nabĂ­zĂ­ pro sazbu do vĂ­ce sloupcĹŻ makra "\begmulti ... \endmulti". Příklad: \begtt -\sec Rejstřík\par +\sec Rejstřík \begmulti 3 \makeindex \endmulti \endtt @@ -1122,8 +1120,8 @@ vytvoříte pomocĂ­ "\fnote{}". 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 zopakovĂĄna a vedle nĂ­ je . -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 +Značka je implicitně definovanĂĄ jako číslo v exponentu. +ČíslovĂĄnĂ­ poznĂĄmek je na kaĹždĂŠ strĂĄnce započato jedničkou\fnote {Toto chovĂĄnĂ­ se dĂĄ změnit vloĹženĂ­m příkazu {\tt\char`\\runningfnotes} na začátek dokumentu. V takovĂŠm případě se poznĂĄmky číslujĂ­ od jednĂŠ v celĂŠm @@ -1136,11 +1134,12 @@ Například po \begtt \def\thefnote{\ifcase\locfnum\or - *\or**\or***\or$^{\dag}$\or$^{\ddag}$\or$^{\dag\dag}$\fi} + *\or**\or***\or$^{\dag}$\or$^{\ddag}$\or$^{\dag\dag}$\fi)} \endtt % -bude prvnĂ­ poznĂĄmka mĂ­t hvězdičku, druhĂĄ dvě hvězdičky atd. UvedenĂĄ -definice předpoklĂĄdĂĄ, Ĺže na jednĂŠ strĂĄnce nebudete mĂ­t vĂ­ce neĹž 6 poznĂĄmek. +bude prvnĂ­ poznĂĄmka mĂ­t hvězdičku se zĂĄvorkou, druhĂĄ dvě hvězdičky se +zĂĄvorkou atd. UvedenĂĄ definice předpoklĂĄdĂĄ, Ĺže na jednĂŠ strĂĄnce nebudete mĂ­t +vĂ­ce neĹž 6 poznĂĄmek. Makro "\fnote" je moĹžnĂŠ zapsat jen v běžnĂŠm textu odstavce, nikoli v boxu (například v~tabulce). Chcete-li odkazovat třeba z tabulky, je nutnĂŠ v @@ -1433,7 +1432,7 @@ matematickĂ˝mi abecedami}. Jakmile začnete psĂĄt pĂ­smena mezi dolary bez pouĹžitĂ­ přepĂ­nače, je pouĹžita implicitnĂ­ matematickĂĄ abeceda "\mit". Celkově jsou k dispozici nĂĄsledujĂ­cĂ­ abecedy: -{\def\tthook{\catcode`\$=3 \catcode`/=0 \medmuskip=0mu}% +{\def\tthook{\catcode`\$=3 \catcode`/=0 \medmuskip=0mu \adef{ }{ }}% \begtt \mit % matematickĂĄ kurzĂ­va $abc-xyz,ABC-XYZ$ \it % textovĂĄ kurzĂ­va $/it abc-xyz,ABC-XYZ$ @@ -1472,6 +1471,13 @@ je moĹžnĂŠ pouŞít nĂĄsledujĂ­cĂ­ globĂĄlnĂ­ přepĂ­nače: \itvariables % implicitnĂ­ abeceda bude textovĂĄ kurzĂ­va, \mitvariables % implicitnĂ­ abeceda bude matematickĂĄ kurzĂ­va. \endtt +% +{\bf PoznĂĄmka:} Vlastnosti popsanĂŠ v tĂŠto kapitole (AMS symboly, "\bbchar", +"\script", "\frak", sans serifovĂ˝ font po přepĂ­načích "\bf", "\bi" v math +mĂłdu) vyĹžadujĂ­ zavĂŠst speciĂĄlnĂ­ fonty (AMS fonty, EC fonty). Chcete-li +se vyhnout tĂŠto zĂĄvislosti na fontech, mĹŻĹžete vyuŞít +\ulink[http://petr.olsak.net/opmac-tricks.html\#onlycm]{OPmac trik~0111}. + \sec Okraje %%%%%%%%%%% @@ -1561,6 +1567,121 @@ NenĂ­-li soubor REF otevřen, je hodnota registru "\lastpage" rovna nule. \endtt +\sec DalĹĄĂ­ jazyk +%%%%%%%%%%%%%%%% + +OPmac přímo podporuje čeĹĄtinu, slovenĹĄtinu a angličtinu. OstatnĂ­ jazyky lze +pouŞít takĂŠ, ale je potřeba vynaloĹžit nepatrnĂŠ ĂşsilĂ­. PředevĹĄĂ­m je potřeba +pouŞít \TeX{}ovĂ˝ stroj a formĂĄt takovĂ˝, aby byl jazyk podporovĂĄn. FormĂĄt +musĂ­ mĂ­t připravenĂŠ vzory dělenĂ­ vybranĂŠho jazyka. Abychom se nepropadli do +kĂłdovacĂ­ho pekla, doporučuji pouŞít UnikĂłdovĂ˝ \TeX{}ovĂ˝ stroj ("xetex" nebo +"luatex") a zavĂŠst rodinu fontĹŻ podporujĂ­cĂ­ Unicode, ve kterĂŠ jsou vĹĄechny +potřebnĂŠ znaky abecedy danĂŠho jazyka připraveny. + +Na příkladu si ukĂĄĹžeme, jak toto lze udělat v nativnĂ­m formĂĄtu pro Xe\TeX{} +nebo Lua\TeX. Tyto stroje pouŞívajĂ­ formĂĄt generovanĂ˝ ze souboru "etex.src" +jako implicitnĂ­ (tj. formĂĄt je přímo připraven po spuĹĄtěnĂ­ příkazu "xetex" nebo "luatex"). +ProtoĹže tento formĂĄt mĂĄ vloĹženy vzory dělenĂ­ vĹĄech dostupnĂ˝ch jazykĹŻ, je pro +prĂĄci s dalĹĄĂ­mi jazyky ideĂĄlnĂ­. NenĂ­ totiĹž nutnĂŠ nic přegenerovĂĄvat. Například +vzory dělenĂ­ pro ĹĄpanělĹĄtinu aktivujete v dokumentu pomocĂ­ +"\uselanguage{espanol}". + +OPmac potřebuje znĂĄt překlad tří automaticky generovanĂ˝ch slov +\uv{Kapitola}, \uv{Tabulka} a \uv{ObrĂĄzek} pro zvolenĂ˝ jazyk. Tento jazyk je +v OPmac označovĂĄn pomocĂ­ zkratky podle ISO~639-1. Například ĹĄpanělĹĄtina je +tam označena ISO-kĂłdem "es". + +Při pouĹžitĂ­ formĂĄtu z "etex.src" je nutnĂŠ přidělit dlouhĂŠmu nĂĄzvu jazyka +jeho ISO kĂłd pomocĂ­ "\isolangset{}{}". Naopak, při pouĹžitĂ­ +\csplain{}u jsou vĹĄechny ISO kĂłdy jiĹž nastaveny, a proto příkaz +"\isolangset" v takovĂŠm případě neudělĂĄ nic. + +NĂĄsleduje příklad pro ĹĄpanělĹĄtinu. \TeX{}ujte pomocĂ­ "xetex soubor" nebo +"luatex soubor". + +\mubyte \ntie ^^c3^^b1\endmubyte \def\ntie{\~n} +\mubyte \ccedilla ^^c3^^a7\endmubyte \def\ccedilla{\c c} +\mubyte \Ccedilla ^^c3^^87\endmubyte \def\Ccedilla{\c C} + +\begtt +\input opmac + +\ifx\directlua\undefined \else \ifx\luafonts\undefined \input luafonts +\fi\fi % to zavede lua kĂłd na redefinovĂĄnĂ­ \font, v XeTeXu je irelevantnĂ­ + +\font\tenrm="DejaVu Serif" % UnicodovĂĄ rodina fontĹŻ, +\font\tenbf="DejaVu Serif/B" % kde vĹĄechny potřebnĂŠ znaky +\font\tenit="DejaVu Serif/I" % jsou k dispozici +\font\tenbi="DejaVu Serif/IB" +\tenrm + +\input tx-math % NastavenĂ­ TX fontĹŻ v matematice + +\isolangset {espanol}{es} % Deklarace ISO kĂłdu +\sdef{mt:chap:es}{CapĂ­tulo} % "Kapitola" v jazyku es +\sdef{mt:t:es}{Cuadro} % "Tabulka" v jazyku es +\sdef{mt:f:es}{Figura} % "ObrĂĄzek" v jazyku es + +\uselanguage{espanol} % Ĺ panělskĂŠ vzory dělenĂ­ + autogenerovanĂĄ slova +\typosize[12/14.4] + +\tit MaĂąana + +\sec MaĂąana + +MaĂąana. + +\caption/f Test % vytvoří text "Figura 1.1 Test" + +\bye +\endtt + +Při abecednĂ­m řazenĂ­ rejstříku pomocĂ­ "\makeindex" mĹŻĹže OPmac ohlĂĄsit +(nenĂ­-li pouĹžit \csplain) varovĂĄnĂ­: ``falling back to ASCII sorting''. +Pokud chcete dodrĹžet pravidla řazenĂ­ danĂŠho jazyka, je proto nutnĂŠ definovat makro +"\sortingdata". DĂĄle mĹŻĹžete přidat makro +"\specsortingdata". Příklad: + +\begtt +\def\sortingdataes {aAäÄáÁ,bB,cCçÇ,^^P^^Q^^R,dD,...,zZ,.} +\def\specsortingdataes {ch:^^P Ch:^^Q CH:^^R} +\endtt + +PrvĂŠ makro obsahuje skupiny znakĹŻ oddělenĂŠ od sebe čárkami a ukončenĂŠ +čárkou-tečkou. Znaky v kaĹždĂŠ skupině jsou nerozliĹĄitelnĂŠ při prvĂŠm prĹŻchodu +(primĂĄrnĂ­ řazenĂ­). Jsou-li z~tohoto pohledu některĂŠ Ăşdaje shodnĂŠ, je na tyto +Ăşdaje pouĹžito sekundĂĄrnĂ­ řazenĂ­, ve kterĂŠm uĹž jsou vĹĄechny znaky rozliĹĄeny a +seřazeny v pořadĂ­, jako v makru. PoznĂĄmka: tři tečky v příkladu si musĂ­ ĹĄpanělsky +mluvĂ­cĂ­ uĹživatel doplnit za reĂĄlnĂĄ data sĂĄm. + +ŘadicĂ­ algoritmus umoŞňuje skupiny znakĹŻ (spřeĹžky Ch, Dz atd.) interpretovat +jako jedinĂ˝ znak. K tomu slouŞí makro "\specsortingdata". V něm +jsou mezerami od sebe odděleny Ăşdaje ve tvaru ":". OPmac +provede vĂ˝měnu "" za "" před zahĂĄjenĂ­m řadicĂ­ho algoritmu, +takĹže "" je moĹžnĂŠ vloĹžit do "\sortingdata" jako jeden znak. +Je nutnĂŠ pouŞívat znaky, kterĂŠ nejsou součástĂ­ abecedy jazyka, například +"^^A", "^^B" atd. Přitom je potřeba se vyhnout znakĹŻm "^^I" a "^^M" , +protoĹže tyto majĂ­ speciĂĄlnĂ­ kategorii. + +OPmac definuje internĂ­ makro "\sortingdata", kterĂŠ +je moĹžnĂŠ pouŞít pro čeĹĄtinu, slovenĹĄtinu a angličtinu. +Makro "\sortingdata" mĂĄ přednost před internĂ­m makrem +"\sortingdata", je-li definovĂĄno a jazyk odpovĂ­dajĂ­cĂ­ ISO kĂłdu mĂĄ +aktivovĂĄny vzory dělenĂ­ slov. + +Konečně mĹŻĹžete pozměnit seznam ignorovanĂ˝ch znakĹŻ (z hlediska řazenĂ­), kterĂ˝ +je uveden v makru "\setignoredchars" takto: + +{\catcode`\<=12 +\begtt +\def\setignoredchars{\setlccodes ,.;.?.!.:.'.".|.(.).[.].<.>.=.+.{}{}} +\endtt +}% +Toto makro mĹŻĹžete předefinovat, ale ponechte v předu "\setlccodes", vzadu +"{}{}" a za kaĹždĂ˝m znakem piĹĄte tečku, kterĂĄ je implicitnĂ­m ignorovanĂ˝m +znakem. + + \sec ShrnutĂ­ %%%%%%%%%%%% @@ -1568,10 +1689,10 @@ NenĂ­-li soubor REF otevřen, je hodnota registru "\lastpage" rovna nule. \def\tthook{\adef!{\string\endtt}\adef&{\kern.25em}} \begtt -\tit -\chap -\sec -\secc +\tit +\chap +\sec +\secc \maketoc % generovĂĄnĂ­ obsahu \ii , % vloĹženĂ­ hesel do rejstříku -- cgit v1.2.3