summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/attr-eff.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/attr-eff.mkiv')
-rw-r--r--Master/texmf-dist/tex/context/base/attr-eff.mkiv74
1 files changed, 74 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/attr-eff.mkiv b/Master/texmf-dist/tex/context/base/attr-eff.mkiv
new file mode 100644
index 00000000000..3526276c7e7
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/attr-eff.mkiv
@@ -0,0 +1,74 @@
+%D \module
+%D [ file=attr-eff,
+%D version=2007.06.06,
+%D title=\CONTEXT\ Attribute Macros,
+%D subtitle=Effects,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Attribute Macros / Effects}
+
+\registerctxluafile{attr-eff}{1.001}
+
+\unprotect
+
+% \def\registereffect#1#2#3% #2=stretch #3=rulethickness
+% {\setxvalue{(es:#1:#2:\number\dimexpr#3\relax)}% todo: set attribute at lua end
+% {\attribute\effectattribute\ctxcommand{registereffect('#1',#2,\number\dimexpr#3\relax)}\relax}}
+%
+% \def\dotriggereffect
+% {\ctxcommand{enableeffect()}% can then move to caller
+% \gdef\dotriggereffect##1##2##3%
+% {\ifcsname(es:##1:##2:\number\dimexpr##3\relax)\endcsname\else\registereffect{##1}{##2}{##3}\fi
+% \csname(es:##1:##2:\number\dimexpr##3\relax)\endcsname}%
+% \dotriggereffect}
+%
+% \def\registereffect#1#2#3% #2=stretch #3=rulethickness
+% {\setxvalue{(es:#1:#2:\number\dimexpr#3\relax)}% todo: set attribute at lua end
+% {\attribute\effectattribute\ctxcommand{registereffect('#1',#2,\number\dimexpr#3\relax)}\relax}}
+
+\gdef\dotriggereffect#1#2#3%
+ {\ctxcommand{triggereffect('#1',#2,\number\dimexpr#3\relax)}}
+
+\unexpanded\def\setupeffect
+ {\dodoubleargument\dosetupeffect}
+
+\def\dosetupeffect[#1][#2]%
+ {\getparameters[\??et#1][#2]}
+
+\unexpanded\def\defineeffect
+ {\dodoubleargument\dodefineeffect}
+
+\def\dodefineeffect[#1][#2]%
+ {\getparameters[\??et#1][\c!method=\v!none,\c!stretch=0,\c!rulethickness=\zeropoint,\c!alternative=\v!normal,#2]%
+ \doif{\getvalue{\??et#1\c!method}}\v!command
+ {\setugvalue{\e!start#1}{\starteffect[#1]}%
+ \setugvalue{\e!stop #1}{\stopeffect}}}
+
+% yes or no grouped
+
+\unexpanded\def\starteffect[#1]%
+ {\dotriggereffect
+ {\csname\??et#1\c!alternative \endcsname}%
+ {\csname\??et#1\c!stretch \endcsname}%
+ {\csname\??et#1\c!rulethickness\endcsname}}
+
+\unexpanded\def\stopeffect % can be special
+ {\dotriggereffect\v!normal0\zeropoint}
+
+\unexpanded\def\effect[#1]%
+ {\groupedcommand{\starteffect[#1]}{\stopeffect}}
+
+\defineeffect [\v!inner] [\c!alternative=\v!inner,\c!rulethickness=.25pt]
+\defineeffect [\v!outer] [\c!alternative=\v!outer,\c!rulethickness=.25pt]
+\defineeffect [\v!both] [\c!alternative=\v!both, \c!rulethickness=.25pt]
+\defineeffect [\v!normal] [\c!alternative=\v!normal]
+\defineeffect [\v!hidden] [\c!alternative=\v!hidden]
+\defineeffect [\v!stretch] [\c!alternative=\v!stretch,\c!stretch=1]
+
+\protect \endinput