summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/cstex/opmac-d.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-05-03 21:31:44 +0000
committerKarl Berry <karl@freefriends.org>2016-05-03 21:31:44 +0000
commit229d2a84824108e60025d12c971370b90ee01578 (patch)
tree1f9095e43dc97603b65e80084d63d3b6eef07b87 /Master/texmf-dist/doc/cstex/opmac-d.tex
parent23ec1d8f81a005ed2c9f96fd3037a36a80acb6e2 (diff)
cstex (3may16)
git-svn-id: svn://tug.org/texlive/trunk@40871 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/cstex/opmac-d.tex')
-rw-r--r--Master/texmf-dist/doc/cstex/opmac-d.tex46
1 files changed, 27 insertions, 19 deletions
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á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.
+makra \db replacestringsA a \db replacestringsB 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".
+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í, protože vykřičník a otazník mají normálně kategorii
\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í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".
+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}{+-}