diff options
author | Marius <mariausol@gmail.com> | 2010-07-04 15:32:09 +0300 |
---|---|---|
committer | Marius <mariausol@gmail.com> | 2010-07-04 15:32:09 +0300 |
commit | 85b7bc695629926641c7cb752fd478adfdf374f3 (patch) | |
tree | 80293f5aaa7b95a500a78392c39688d8ee7a32fc /tex/context/base/x-set-11.mkiv | |
download | context-85b7bc695629926641c7cb752fd478adfdf374f3.tar.gz |
stable 2010-05-24 13:10
Diffstat (limited to 'tex/context/base/x-set-11.mkiv')
-rw-r--r-- | tex/context/base/x-set-11.mkiv | 476 |
1 files changed, 476 insertions, 0 deletions
diff --git a/tex/context/base/x-set-11.mkiv b/tex/context/base/x-set-11.mkiv new file mode 100644 index 000000000..784df3113 --- /dev/null +++ b/tex/context/base/x-set-11.mkiv @@ -0,0 +1,476 @@ +%D \module +%D [ file=x-set-11, +%D version=2004.10.31, +%D remark=setupx.tex: 1998.07.20 and later, +%D title=\CONTEXT\ Setup Definitions, +%D subtitle=Macro Definitions, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +% \startluacode +% collectgarbage("stop") +% function collectgarbage() return 0 end +% \stopluacode + +% todo: for fun: pure lua interface, but as this style evolved over 15 years +% it's a waste of time +% +% todo: +% +% \setup{setupinterlinespace} +% \setup{setupinterlinespace:1} +% \setup{setupinterlinespace:2} +% +% cd:include -> @file +% cd:choice +% +% register, interaction + +\usemodule[set-99] % interface messages + +\unprotect + +% general + +\unexpanded\def\setupnumfont {} +\unexpanded\def\setuptxtfont {} +\unexpanded\def\setupintfont {\WORD} +\unexpanded\def\setupvarfont {\sl} +\unexpanded\def\setupoptfont {\sl} +\unexpanded\def\setupalwcolor {} +\unexpanded\def\setupoptcolor {darkgray} + +\def\c!setup!definereserved#1#2% + {\setvalue{c!setup!:r:#1}{#2}} + +\def\c!setup!reserved!#1% + {\executeifdefined{c!setup!:r:#1}{#1}} + +\def\c!setup!internal!#1% + {\dontleavehmode + \begingroup + \setupintfont{#1}% + \endgroup} + +\def\c!setup!text!#1% + {\dontleavehmode + \begingroup + \setupvarfont{#1}% + \endgroup} + +\def\c!setup!command!#1% + {{\setupvarfont{\texescape...#1}}} + +\def\??stp{@@stp} + +\defineregister + [texmacro] + [texmacros] + +\definesorting + [texcommand] + [texcommands] + +\setupsorting + [texcommand] + [\c!command=\showsetupinlist, + \c!criterium=\@@stpcriterium] + +\pushmacro\setuptext + +\defineframedtext + [setuptext] + [\c!width=\hsize, + \c!height=\v!fit, + \c!align=\v!right, + \c!offset=0.75em] + +\popmacro\setuptext + +%D Loading: + +\let\currentSETUPfullname\s!unknown + +\startxmlsetups xml:setups:assemblename + \doifelse {\xmlatt{#1}{environment}} {yes} { + \let\currentSETUPprefix\e!start + } { + \let\currentSETUPprefix\empty + } + \edef\currentSETUPname{\xmlatt{#1}{name}} + \doifelse {\xmlatt{#1}{generated}} {yes} { + \def\currentSETUPgenerated{*} + } { + \let\currentSETUPgenerated\empty + } + \doifelsenothing {\xmlatt{#1}{variant}} { + \let\currentSETUPvariant\empty + } { + \def\currentSETUPvariant{:\xmlatt{#1}{variant}} + } + \edef\currentSETUPfullname { + \currentSETUPprefix + \currentSETUPname + \currentSETUPvariant + \currentSETUPgenerated + } +\stopxmlsetups + +\startxmlsetups xml:setups:register + \xmlsetup{#1}{xml:setups:assemblename} + \expanded{\texcommand[stp:x:\currentSETUPfullname]{#1}} +\stopxmlsetups + +\startxmlsetups xml:setups:basics + \xmlsetsetup {#1} { + sequence|string|variable|assignments|keywords|content|displaymath|index|math| + nothing|file|position|reference|csname|destination|triplet|word| + resolve|parameter|constant|inherit|parameter|define + } {xml:setups:*} +\stopxmlsetups + +\xmlregisterdocumentsetup{setups}{xml:setups:basics} + +\def\loadsetups{\complexorsimple\loadsetups} + +\let\loadedsetups\empty % we load more setups, setups:<name> + +\def\simpleloadsetups + {\doifnotmode{no-setup-main}{\complexloadsetups[cont-en.xml]}} + +\def\complexloadsetups[#1]% + {\doifsomething{#1} + {\doonlyonce{setups:#1} + {\doglobal\prependtocommalist{setups:#1}\loadedsetups % last overloads first + \xmlloadonly{setups:#1}{#1}{setups}% + \xmlfilter{setups:#1}{/interface/command/command(xml:setups:register)}}}} % qualified path saves > 50% runtime + +\newif\ifshortsetup + +\unexpanded\def\setup {\shortsetupfalse\doshowsetup} +\def\showsetup {\shortsetupfalse\doshowsetup} +\def\shortsetup{\shortsetuptrue \doshowsetup} +\unexpanded\def\setupsetup{\dodoubleargument\getparameters[\??stp]} + +%unexpanded\def\showsetupinlist#1#2#3{\shortsetupfalse\showsetupindeed{#3}\par} +\unexpanded\def\showsetupinlist#1#2#3{\shortsetupfalse\xmlsetup{#3}{xml:setups:typeset}\par} + +% todo: only references in lists + +\def\doshowsetup + {\dosingleempty\dodoshowsetup} + +\def\dodoshowsetup[#1]% + {\iffirstargument + \dododoshowsetup{#1}% + \else + \expandafter\dododoshowsetup + \fi} + +\def\dododoshowsetup#1% this will trigger 'used' + {\registersort[texcommand][stp:x:#1]% + \showsetupindeed{#1}} + +\def\showsetupindeed#1% + {\xmlfilterlist{\loadedsetups}{/interface/command[@name='#1']/command(xml:setups:typeset)}} + +\unexpanded\def\placesetup {\placelistofsorts[texcommand][\c!criterium=\v!used]} +\unexpanded\def\placeallsetups{\placelistofsorts[texcommand][\c!criterium=\v!all ]} + +\let\placeeverysetup\placeallsetups + +%D Typesetting: + +\setupxml + [\c!method=mkiv, % mixed mode + \c!default=\v!hidden, % ignore elements that are not defined + \c!compress=\v!yes, % strip comment + \c!entities=\v!yes] % replace entities + +\newcounter\currentSETUPargument +\newcounter\maximumSETUPargument + +\def\currentSETUPwidth{0pt} + +\startxmlsetups xml:setups:typeset + \getvalue{\e!start setuptext} + \tttf + \nohyphens + \veryraggedright + \doglobal\newcounter\currentSETUPargument + \xdef\maximumSETUPargument{\xmlcount{#1}{/arguments/*}} + \bgroup + \doif {\xmlatt{#1}{generated}} {yes} { + \ttsl + } + \doifelse {\xmlatt{#1}{type}} {environment} { + \tex{\e!start} + } { + \tex{} + } + \xmlfilter{#1}{/sequence/first()} + \ignorespaces + \egroup + \xmldoif{#1}{/arguments} { + \bgroup + \enablemode[setups-pass-one] + \doglobal\newcounter\currentSETUPargument + \ignorespaces + \xmlfilter{#1}{/arguments/text()} + \egroup + } + \doif {\xmlatt{#1}{type}} {environment} { + \bgroup + \hskip.5em\unknown\hskip.5em + \doif {\xmlatt{#1}{generated}} {yes} { + \ttsl + } + \tex{\e!stop} + \xmlfilter{#1}{/sequence/variable/first()} + \ignorespaces + \egroup + } + \endgraf + \xmldoif{#1}{/arguments} { + \bgroup + \enablemode[setups-pass-two] + \doglobal\newcounter\currentSETUPargument + \blank[\v!line] + \switchtobodyfont[small] + \ignorespaces\xmlfilter{#1}{/arguments/text()}\endgraf + \egroup + } + \getvalue{\e!stop setuptext} +\stopxmlsetups + +\setupsetup + [\c!before=, + \c!after=, + \c!command=\setup, + \c!criterium=\v!used] + +\startxmlsetups xml:setups:resolve + \ignorespaces + \xmlfilterlist{\loadedsetups}{/interface/define[@name='\xmlatt{#1}{name}']/first()} +\stopxmlsetups + +%D This is the first pass; here we generate the top line. + +\startxmlsetups xml:setups:define + \ignorespaces\xmlflush{#1} +\stopxmlsetups + +\startxmlsetups xml:setups:sequence + \ignorespaces\xmlflush{#1} +\stopxmlsetups + +\startxmlsetups xml:setups:string + \xmlatt{#1}{value}\ignorespaces +\stopxmlsetups + +\startxmlsetups xml:setups:content \showSETUPcomponent{#1}{content} {content} \stopxmlsetups +\startxmlsetups xml:setups:displaymath \showSETUPcomponent{#1}{displaymath}{display math}\stopxmlsetups +\startxmlsetups xml:setups:index \showSETUPcomponent{#1}{index} {index} \stopxmlsetups +\startxmlsetups xml:setups:math \showSETUPcomponent{#1}{math} {math} \stopxmlsetups +\startxmlsetups xml:setups:nothing \showSETUPcomponent{#1}{nothing} {nothing} \stopxmlsetups +\startxmlsetups xml:setups:file \showSETUPcomponent{#1}{file} {file name} \stopxmlsetups +\startxmlsetups xml:setups:position \showSETUPcomponent{#1}{position} {position} \stopxmlsetups +\startxmlsetups xml:setups:reference \showSETUPcomponent{#1}{reference} {reference} \stopxmlsetups +\startxmlsetups xml:setups:csname \showSETUPcomponent{#1}{csname} {csname} \stopxmlsetups +\startxmlsetups xml:setups:destination \showSETUPcomponent{#1}{destination}{destination} \stopxmlsetups +\startxmlsetups xml:setups:triplet \showSETUPcomponent{#1}{triplet} {triplet} \stopxmlsetups +\startxmlsetups xml:setups:word \showSETUPcomponent{#1}{word} {word} \stopxmlsetups + +\def\showSETUPcomponent#1#2#3% + {\doifmodeelse{setups-pass-one} + {\getvalue{showSETUP#2}{#1}} + {\simpleSETUPargument{#3}}} + +%D This is the second pass; here we generate the table. + +\unexpanded\def\startfirstSETUPcolumn#1% + {\bgroup + \advance\leftskip 2em + \noindent\llap{\hbox to 2em{#1\hss}}} + +\unexpanded\def\stopfirstSETUPcolumn + {\endgraf + \egroup} + +\unexpanded\def\startsecondSETUPcolumn#1#2% + {\bgroup + \advance\hangindent\dimexpr\currentSETUPwidth+2.5em\relax + \noindent \hbox to \hangindent{#1\hss\hbox to 2.5em{\hss#2\hss}}} + +\unexpanded\def\stopsecondSETUPcolumn + {\endgraf + \egroup} + +\def\secondSETUPcolumn#1#2% + {\startsecondSETUPcolumn{#1}{#2}\stopsecondSETUPcolumn} + +\def\previousSETUPargument{\currentSETUPargument} + +\startxmlsetups xml:setups:parameter:measure + \setbox0=\hbox{\c!setup!reserved!{\xmlatt{#1}{name}}} + \ifdim\wd0>\currentSETUPwidth\xdef\currentSETUPwidth{\the\wd0}\fi +\stopxmlsetups + +\startxmlsetups xml:setups:assignments + \doifmodeelse{setups-pass-one} { + \showSETUPassignment{#1} + } { + \xdef\currentSETUPwidth{0pt}% + \bgroup + \xmlfilter{#1}{/parameter/command(xml:setups:parameter:measure)} + \egroup + \startfirstSETUPcolumn{\showSETUPnumber}% + \ignorespaces + \xmlflush{#1} + \let\previousSETUPargument\currentSETUPargument + \stopfirstSETUPcolumn + \blank[\v!halfline] + \ignorespaces + } +\stopxmlsetups + +\startxmlsetups xml:setups:keywords + \doifmodeelse{setups-pass-one} { + \showSETUPkeyword{#1} + } { + \startfirstSETUPcolumn{\showSETUPnumber}% + \ignorespaces + \xmlflush{#1} + \let\previousSETUPargument\currentSETUPargument + \stopfirstSETUPcolumn + \blank[\v!halfline] + \ignorespaces + } +\stopxmlsetups + +\startxmlsetups xml:setups:parameter + \startsecondSETUPcolumn{\c!setup!reserved!{\xmlatt{#1}{name}}}{=} + \ignorespaces + \xmlflush{#1} + \stopsecondSETUPcolumn + \ignorespaces +\stopxmlsetups + +\startxmlsetups xml:setups:constant + \doifmodeelse {setups-pass-one} { + } { + \doif {\xmlatt{#1}{default}} {yes} { + \underbar % next needs to be {braced} + } + {\c!setup!reserved!{\xmlatt{#1}{type}}} + \space + \ignorespaces + } +\stopxmlsetups + +\startxmlsetups xml:setups:variable + \doifmodeelse {setups-pass-one} { + \expanded{\setupintfont{\xmlatt{#1}{value}}}\ignorespaces + } { + \c!setup!reserved!{\xmlatt{#1}{value}} + \space + \ignorespaces + } +\stopxmlsetups + +\startxmlsetups xml:setups:inherit + \secondSETUPcolumn { + \c!setup!text!{\getmessage{setup}{inherits}} + \enspace + \tex{} + \xmlatt{#1}{name} + } {} + \ignorespaces +\stopxmlsetups + +\def\simpleSETUPargument#1% + {\startfirstSETUPcolumn{\showSETUPnumber}% + \c!setup!internal!{#1}% + \stopfirstSETUPcolumn + \blank[\v!halfline] + \ignorespaces} + +\c!setup!definereserved {cd:command} {\c!setup!internal!{\getmessage{setup}{command}}} +\c!setup!definereserved {cd:dimension} {\c!setup!internal!{\getmessage{setup}{dimension}}} +\c!setup!definereserved {cd:file} {\c!setup!internal!{\getmessage{setup}{file}}} +\c!setup!definereserved {cd:name} {\c!setup!internal!{\getmessage{setup}{identifier}}} +\c!setup!definereserved {cd:character} {\c!setup!internal!{\getmessage{setup}{character}}} +\c!setup!definereserved {cd:mark} {\c!setup!internal!{\getmessage{setup}{mark}}} +\c!setup!definereserved {cd:number} {\c!setup!internal!{\getmessage{setup}{number}}} +\c!setup!definereserved {cd:reference} {\c!setup!internal!{\getmessage{setup}{reference}}} +\c!setup!definereserved {cd:plural} {\c!setup!internal!{\getmessage{setup}{plural}}} +\c!setup!definereserved {cd:singular} {\c!setup!internal!{\getmessage{setup}{singular}}} +\c!setup!definereserved {cd:text} {\c!setup!internal!{\getmessage{setup}{text}}} +\c!setup!definereserved {cd:formula} {\c!setup!internal!{\getmessage{setup}{formula}}} +\c!setup!definereserved {cd:file} {\c!setup!internal!{\getmessage{setup}{file}}} +\c!setup!definereserved {cd:matrix} {\c!setup!internal!{\getmessage{setup}{matrix}}} +\c!setup!definereserved {cd:list} {\c!setup!internal!{\getmessage{setup}{list}}} +\c!setup!definereserved {cd:section} {\c!setup!internal!{\getmessage{setup}{section}}} + +\c!setup!definereserved {cd:noargument} {\c!setup!command! {}} +\c!setup!definereserved {cd:oneargument} {\c!setup!command! {\#1}} +\c!setup!definereserved {cd:twoarguments} {\c!setup!command! {\#1\#2}} +\c!setup!definereserved {cd:threearguments} {\c!setup!command! {\#1\#2\#3}} + +%D Auxiliary. + +\unexpanded\def\showSETUP#1#2#3% + {\bgroup + \doglobal\increment\currentSETUPargument + \setbox0=\hbox + {\doifelse{\xmlatt{#1}{list}}{yes}{#3}{#2}}% + \setbox2=\hbox to \wd0 + {\hss + \raise1ex\hbox + {\tx\ifcase\maximumSETUPargument\relax + \or*\else\currentSETUPargument + \fi}% + \hss}% + \setbox4=\hbox to \wd0 + {\hss + \lower2ex\hbox + \bgroup + \txx\doif{\xmlatt{#1}{optional}}{yes}{\c!setup!internal!{\getmessage{setup}{optional}}}% + \egroup + \hss}% + \ht2\ht\strutbox + \dp4\dp\strutbox + \hskip.5em\hsmash{\box0}\hsmash{\box4}\box2% + \egroup + \ignorespaces} + +\def\showSETUPnumber + {\doglobal\increment\currentSETUPargument + \hbox to 2em + {\ifcase\maximumSETUPargument\relax + \or*\else\currentSETUPargument + \fi + \hss}} + +\def\showSETUPassignment #1{\showSETUP{#1}{[.\lower.5ex\hbox{=}.]} {[..,.\lower.5ex\hbox{=}.,..]}} +\def\showSETUPkeyword #1{\showSETUP{#1}{[...]} {[...,...]}} +\def\showSETUPargument #1{\showSETUP{#1}{\leftargument..\rightargument} {\leftargument..,...,..\rightargument}} +\def\showSETUPdisplaymath#1{\showSETUP{#1}{\$\$...\$\$} {\$\$...\$\$}} +\def\showSETUPindex #1{\showSETUP{#1}{\leftargument...\rightargument} {\leftargument..+...+..\rightargument}} +\def\showSETUPmath #1{\showSETUP{#1}{\$...\$} {\$...\$}} +\def\showSETUPnothing #1{\showSETUP{#1}{...} {}} +\def\showSETUPfile #1{\showSETUP{#1}{~...~} {}} +\def\showSETUPposition #1{\showSETUP{#1}{(...)} {(...,...)}} +\def\showSETUPreference #1{\showSETUP{#1}{[...]} {[...,...]}} +\def\showSETUPcsname #1{\showSETUP{#1}{{\c!setup!command!{}}} {}} +\def\showSETUPdestination#1{\showSETUP{#1}{[\leftargument..[ref]\rightargument]}{[..,\leftargument..[ref,..]\rightargument,..]}} +\def\showSETUPtriplet #1{\showSETUP{#1}{[x:y:z=]} {[x:y:z=,..]}} +\def\showSETUPword #1{\showSETUP{#1}{\leftargument...\rightargument} {\leftargument.. ... ..\rightargument}} +\def\showSETUPcontent #1{\showSETUP{#1}{\leftargument...\rightargument} {\leftargument.. ... ..\rightargument}} + +\protect \endinput |