%D \module %D [ file=core-gen, %D version=1995.10.10, %D title=\CONTEXT\ Core Macros, %D subtitle=General, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %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 Core Macros / General} \unprotect %D \macros %D {assigndimension,assignalfadimension} %D %D Hieronder worden enkele commando's gedefinieerd rond %D toekenningen. Allereerst een commando om waarden aan %D een \DIMENSION\ toe te kennen: %D %D \starttyping %D \assigndimension %D {|klein|middel|groot|-klein|-middel|-groot|geen} %D {\dimension} %D {waarde klein} %D {waarde middel} %D {waarde groot} %D \stoptyping %D %D Hierbij krijgt de \DIMENSION\ \type{\dimension} een waarde %D afhankelijk van het meegegeven trefwoord. %D %D \startnarrower %D \startlines %D \type{(-)klein }\qquad (--) waarde klein %D \type{(-)middel}\qquad (--) waarde middel %D \type{(-)groot }\qquad (--) waarde groot %D \type{geen }\qquad 0pt %D \type{waarde }\qquad waarde %D \stoplines %D \stopnarrower %D %D Een trefwoord mag worden voorafgegaan door een \type{-}. %D Deze macro toont een voorbeeld van het gebruik van %D \type{\processaction} en constanten. %D %D Analoog aan het bovenstaande commando kennen we een %D commando om waarden toe te kennen aan een macro: %D %D \starttyping %D \assignalfadimension %D {|klein|middel|groot|geen} %D {\macro} %D {waarde klein} %D {waarde middel} %D {waarde groot} %D \stoptyping % The third (optimized) version: \def\@ad@{@ad@} \setvalue{\@ad@ \v!none }{\zeropoint\gobblethreearguments} \setvalue{\@ad@ \v!big }{\thirdofthreearguments} \setvalue{\@ad@ \v!medium}{\secondofthreearguments} \setvalue{\@ad@ \v!small }{\firstofthreearguments} \setvalue{\@ad@-\v!big }{-\thirdofthreearguments} \setvalue{\@ad@-\v!medium}{-\secondofthreearguments} \setvalue{\@ad@-\v!small }{-\firstofthreearguments} \def\assigndimension#1#2% #3 #4 #5 {#2=\ifcsname\@ad@#1\endcsname \csname\@ad@#1\expandafter\endcsname \else #1\expandafter\gobblethreearguments \fi} \def\@aa@{@aa@} \setvalue{\@aa@\v!none }{0\gobblethreearguments} \setvalue{\@aa@\v!big }{\thirdofthreearguments} \setvalue{\@aa@\v!medium}{\secondofthreearguments} \setvalue{\@aa@\v!small }{\firstofthreearguments} \def\assignalfadimension#1#2#3#4#5% #3#4#5 are single digits {\edef#2{\ifcsname\@aa@#1\endcsname \csname\@aa@#1\expandafter\endcsname \else #1\expandafter\gobblethreearguments \fi#3#4#5}} %D \macros %D {assignvalue} %D %D Een variant hierop is het commando: %D %D \starttyping %D \assignvalue %D {|klein|middel|groot} %D {\macro} %D {waarde klein } %D {waarde middel} %D {waarde groot} %D \stoptyping %D %D Hierbij krijgt \type{\macro} een waarde afhankelijk van %D het meegegeven trefwoord: %D %D \startnarrower %D \startlines %D \type{klein }\qquad waarde klein %D \type{middel}\qquad waarde middel %D \type{groot }\qquad waarde groot %D \type{waarde}\qquad waarde %D \stoplines %D \stopnarrower %D %D Hier doet \type{geen} dus niet mee. \def\@av@{@av@} \letvalue{\@av@\v!big }\thirdofthreearguments \letvalue{\@av@\v!medium}\secondofthreearguments \letvalue{\@av@\v!small }\firstofthreearguments \def\assignvalue#1#2#3#4#5% {\edef#2{\ifcsname\@av@#1\endcsname \csname\@av@#1\expandafter\endcsname \else #1\expandafter\gobblethreearguments \fi{#3}{#4}{#5}}} %D \macros %D {assignwidth} %D %D Een breedte van een opgegeven tekst kan worden berekend en %D toegekend aan een \DIMENSION\ met: %D %D \starttyping %D \assignwidth %D {\dimension} %D {|passend|ruim} %D {tekst} %D \stoptyping %D %D Dit commando sluit, evenals de bovenstaande %D \type{\assign}||commando's, aan op de wijze waarop %D in de andere \CONTEXT||modules toekenningen %D plaatsvinden. Bij \type{ruim} wordt de gemeten breedte %D met 1~em vermeerderd. \def\assignwidth#1#2#3#4% {\doifelsenothing{#2} {\setbox\scratchbox\hbox{#3}% #1\wd\scratchbox} {\doifinsetelse{#2}{\v!fit,\v!broad} {\setbox\scratchbox\hbox{#3}% #1\wd\scratchbox \doif{#2}\v!broad{\advance#1 #4}}% {#1=#2}}}% \protect \endinput