%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} % more will move to the lua end (old code, early luatex approach) \unprotect \def\registereffect#1#2#3% #2=stretch #3=rulethickness {\setxvalue{(es:#1:#2:\number\dimexpr#3\relax)}% {\attribute\effectattribute\ctxlua{tex.write(attributes.effects.register('#1',#2,\number\dimexpr#3\relax))}\relax}} \def\dotriggereffect {\ctxlua{attributes.effects.enable()}% \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} \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{\getvalue{\??et#1\c!alternative}}{\getvalue{\??et#1\c!stretch}}{\getvalue{\??et#1\c!rulethickness}}} \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