diff options
author | Karl Berry <karl@freefriends.org> | 2020-03-05 00:48:46 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-03-05 00:48:46 +0000 |
commit | f210bce174e1f2f05305ab03e88e120a1cbfc4da (patch) | |
tree | 5c4e2ad096b5c745e859516ac3196fa0864292d5 /Master/texmf-dist/tex/context/modules/mkiv/m-simulate.mkiv | |
parent | 35fd641a3546acc0c62e0aa7f134888e36da30d4 (diff) |
context (from cont-tmf.zip of Feb 17 16:00, size 116339406)
git-svn-id: svn://tug.org/texlive/trunk@54086 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/modules/mkiv/m-simulate.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/modules/mkiv/m-simulate.mkiv | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-simulate.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/m-simulate.mkiv new file mode 100644 index 00000000000..dc444890308 --- /dev/null +++ b/Master/texmf-dist/tex/context/modules/mkiv/m-simulate.mkiv @@ -0,0 +1,222 @@ +%D \module +%D [ file=m-simulate, +%D version=2016.02.18, % follow up on m-visual of 2000.01.10 +%D title=\CONTEXT\ Extra Modules, +%D subtitle=Visualization and Faking Redone, +%D author={Hans Hagen \& Ton Otten}, +%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. + +\unprotect + +\definepalet + [fakerule] + [fr1c=darkred, + fr2c=darkgreen, + fr3c=darkblue, + fr4c=darkyellow, + fr5c=darkgray, + fr6c=darkred, + fr7c=darkgreen, + fr8c=darkblue, + fr9c=darkyellow, + fr0c=darkgray] + +\installcorenamespace {simulatewords} + +\installcommandhandler \??simulatewords {simulatewords} \??simulatewords + +\setupsimulatewords + [\c!n =\plusten, + \c!m =40, + \c!min =\plusone, + \c!max =\plusfive, + \c!minwidth=0.50\emwidth, + \c!maxwidth=1.25\emwidth, + \c!color =\empty, + \c!hyphen =\v!yes, + \c!distance=-.2\onebasepoint] + +\unexpanded\def\dosimulatedword + {\clf_fakeword + factor \exheight + name {\p_line} + min \scratchdimenone + max \scratchdimentwo + \relax} + +\def\simulatedhyphen + {\kern.2\points-\kern.2\points} + +\unexpanded\def\simulatewords + {\dodoubleempty\dosimulatewords} + +\unexpanded\def\dosimulatewords[#1][#2]% + {\dontleavehmode + \begingroup + \begstrut + \ifsecondargument + \edef\currentsimulatewords{#1}% + \setupcurrentsimulatewords[#2]% + \else + \doifassignmentelse{#1} + {\let\currentsimulatewords\empty + \setupcurrentsimulatewords[#1]} + {\edef\currentsimulatewords{#1}% + \setupcurrentsimulatewords[#2]}% + \fi + \scratchcounterone\simulatewordsparameter\c!n + \scratchcountertwo\simulatewordsparameter\c!m + \scratchmin \simulatewordsparameter\c!min + \scratchmax \simulatewordsparameter\c!max + \scratchdimenone \simulatewordsparameter\c!minwidth + \scratchdimentwo \simulatewordsparameter\c!maxwidth + \scratchdimenthree\simulatewordsparameter\c!distance + \edef\p_random{\simulatewordsparameter\c!random}% + \edef\p_color {\simulatewordsparameter\c!color}% + \edef\p_line {\simulatewordsparameter\c!line}% + \edef\p_hyphen{\simulatewordsparameter\c!hyphen}% + \edef\p_line {fake:\ifx\p_line\v!yes word\else rule\fi}% + \ifx\p_color\v!text + % no need + \else + \setuppalet[fakerule]% + \ifx\p_color\empty + \directcolored[fakerulecolor]% + \else\ifx\p_color\v!auto + % different + \else + \directcolored[\p_color]% + \fi\fi + \fi + \edef\p_hyphen + {\ifx\p_hyphen\v!yes + \discretionary{\bf\simulatedhyphen}{}{\kern\scratchdimenthree}% + \else\ifx\p_hyphen\v!margin + \discretionary{\hpack to \zeropoint{\bf\simulatedhyphen\hss}}{}{\kern\scratchdimenthree}% + \else\ifx\p_hyphen\v!none + \allowbreak\kern\scratchdimenthree + \else\ifx\p_hyphen\v!no + \allowbreak\kern\scratchdimenthree + \else\ifx\p_hyphen\v!both + \discretionary{\bf\simulatedhyphen}{\bf\simulatedhyphen}{\kern\scratchdimenthree}% + \else\ifx\p_hyphen\empty + \allowbreak\kern\scratchdimenthree + \else + \discretionary{\p_hyphen}{}{\kern\scratchdimenthree}% + \fi\fi\fi\fi\fi\fi}% + \edef\truncated##1##2\relax{##1}% + % trialtypesetting: tricky + \ifx\p_random\empty \else + \pushrandomseed + \setrandomseed\p_random + \fi + \dorecurse{\randomnumber\scratchcounterone\scratchcountertwo} {% + \let\dosimulatedhyphen\relax + \dorecurse{\randomnumber\scratchmin\scratchmax} {% + \dosimulatedhyphen + \begingroup + \ifx\p_color\v!auto + \directcolored[fr\truncated####1\relax c]% + \fi + \dosimulatedword + \endgroup + \let\dosimulatedhyphen\p_hyphen + }% + \relax + \space + }% + \ifx\p_random\empty \else + \poprandomseed + \fi + \removeunwantedspaces + \endstrut + \endgroup} + +%D For old times sake: + +\unexpanded\def\fakewords#1#2% + {\simulatewords[\c!n=#1,\c!m=#2,\c!min=1,\c!max=5,\c!hyphen=\v!none,\c!color=\v!text,\c!line=\v!yes]} + +%D Lines + +\unexpanded\def\fakeline + {\dosingleempty\dofakeline} + +\unexpanded\def\dofakeline[#1]% + {\par + \dontleavehmode + \hpack\bgroup + \scratchwidth \availablehsize + \scratchheight.8\strutht + \scratchdepth .8\strutdp + \iffirstargument + \letsimulatewordsparameter\c!width \scratchwidth + \letsimulatewordsparameter\c!height\scratchheight + \letsimulatewordsparameter\c!depth \scratchdepth + \getcurrentsimulatewords[#1]% + \scratchwidth \simulatewordsparameter\c!width + \scratchheight\simulatewordsparameter\c!height + \scratchdepth \simulatewordsparameter\c!depth + \fi + \edef\p_color{\simulatewordsparameter\c!color}% + \begingroup + \ifx\p_color\empty + \directcolored[fakerulecolor]% + \else\ifx\p_color\v!auto + % text color + \else + \directcolored[\p_color]% + \fi\fi + \vrule + \s!width \scratchwidth + \s!height\scratchheight + \s!depth \scratchdepth + \endgroup + \hskip-\scratchwidth + \directcolored[\s!white]% + \scratchdimen.5\onepoint + \vrule + \s!width \scratchwidth + \s!height\scratchdimen + \s!depth \scratchdimen + \egroup + \par} + +\protect + +\continueifinputfile{m-simulate.mkiv} + +\starttext + + \simulatewords[n=50,m=100,min=1,max=5,color=auto,hyphen=margin,line=yes]\par + \simulatewords[n=50,m=100,min=3,max=9,color=auto,hyphen=margin,line=yes]\par + \simulatewords[n=50,m=100,min=3,max=9,color=auto,hyphen=margin,line=yes]\par + \page + \simulatewords[n=50,m=100,min=2,max=6,hyphen=yes]\par + \simulatewords[n=50,m=100,min=2,max=6,hyphen=both]\par + \simulatewords[n=50,m=100,min=2,max=6,hyphen=both]\par + + \startcolor[red] + \simulatewords[n=50,m=100,min=2,max=6,color=text]\par + \stopcolor + + \definesimulatewords[foo][n=50,m=100,min=2,max=6,color=text] + + \startcolor[green] + \simulatewords[foo][color=darkyellow,random=1234] + \stopcolor + + \page + + \fakeline + + \startnarrower + \fakeline + \stopnarrower + +\stoptext |