From 229d2a84824108e60025d12c971370b90ee01578 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 3 May 2016 21:31:44 +0000 Subject: cstex (3may16) git-svn-id: svn://tug.org/texlive/trunk@40871 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/cstex/opmac-d.tex | 46 +++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 19 deletions(-) (limited to 'Master/texmf-dist/doc/cstex/opmac-d.tex') diff --git a/Master/texmf-dist/doc/cstex/opmac-d.tex b/Master/texmf-dist/doc/cstex/opmac-d.tex index 85482f28976..2b85b79ba80 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{Apr. 2016} +\def\projectversion{May 2016} \def\headtitle{OPmac} \widowpenalty=10000 @@ -259,11 +259,10 @@ souboru nar Makro \db replacestrings "{}{}" vymění v makru "\tmpb" veškeré výskyty "" za "". Pro tento účel definuje pracovní -makro \db replacestringsA se separátorem "". Jak to pracuje je -ukázáno na příkladu níže. +makra \db replacestringsA a \db replacestringsB se separátorem "". +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". +do vstupní fronty pomocí "\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 @@ -272,26 +271,29 @@ textu nikdy neobjev \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: +v "\tmpb" uložen třeba text "ahaXXuffXXkonec". Makra "\replacestringsA" a +"\replacestringsB" jsou v takovém případě definována jako: \begtt -\def\replacestringsA #1XX#2!{% - \ifx!#2!\addto\tmpb{#1}\else\addto\tmpb{#1YY}\replacestringsA#2!\fi}% +\def\replacestringsA #1XX{\def\tmpb{#1}\replacestringsB} +\def\replacestringsB #1XX{\ifx!#1\relax\else + \addto\tmpb{YY#1}\expandafter\replacestringsB\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čí. +\replacestringsA ahaXXuffXXkonec?XX!XX +#1 = "aha" zbytek fronty = "uffXXkonec?XX!" +\def\tmpb{aha} +\replacestringsB uffXXkonec?XX!XX +#1 = "uff" zbytek fronty = "konec?XX!" +\addto\tmpb{YYuff}, tj. \tmpb obsahuje "ahaYYuff". +\replacestringsB konec?XX!XX +#1 = "konec?" zbytek fronty = "!XX" +\addto\tmpb{YYkonec?}, tj. \tmpb obsahuje "ahaYYuffYYkonec?" +\replacestringsB !XX +#1 = ! zbytek fronty prázdný, rekurze končí \endtt % Dále se předefinuje "\def\replacestrin""gsA#1?{\def\tmpb{#1}}" a provede se @@ -306,6 +308,11 @@ tedy t dávali? Kdyby tam nebyl, tak by nesprávně fungovalo "\replacestrings{XX}{YY}" při "\tmpb" ve tvaru "ahaX". +Makro "\replacestrings" je kompromisem mezi jednoduchostí a přijatelnými +možnostmi. Nefunguje nad textem s nespárovanými "\if...\fi" a také +při "\def\tmpb{{aha}XX}\replacestrings{XX}{YY}" se bohužel odstraní kučeravé +závorky kolem "aha". Můžete třeba přidat před každou dvojici takových +závorek "\empty", abyste měli jistotu, že závorky nezmizí. \subsec Globální parametry %%%%%%%%%%%%%%%%%%%%%%%%%% @@ -825,7 +832,8 @@ Fonty pro titul, kapitoly a sekce \db titfont, jsou definovány jako odpovídající zvětšení a nastavení tučného duktu. Ten je nastaven pomocí \db bfshape jako "\bf" a navíc je ztotožněn "\tenit" s "\tenbi", takže když nyní uživatel napíše "\it", dostane tučnou -kurzívu. +kurzívu. Tučné varianty matematických fontů se zavedou až při použití +matematického módu v nadpise (viz "\everymath"). \inext{titfont}{\empty}{+-} -- cgit v1.2.3