summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/strc-des.mkvi
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/strc-des.mkvi')
-rw-r--r--tex/context/base/mkiv/strc-des.mkvi250
1 files changed, 250 insertions, 0 deletions
diff --git a/tex/context/base/mkiv/strc-des.mkvi b/tex/context/base/mkiv/strc-des.mkvi
new file mode 100644
index 000000000..83daba0fe
--- /dev/null
+++ b/tex/context/base/mkiv/strc-des.mkvi
@@ -0,0 +1,250 @@
+%D \module
+%D [ file=strc-des,
+%D version=2008.10.20,
+%D title=\CONTEXT\ Structure Macros,
+%D subtitle=Descriptions,
+%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 Structure Macros / Descriptions}
+
+\unprotect
+
+\installcorenamespace{description}
+
+\installcommandhandler \??description {description} \??description
+
+\let\setupdescriptions\setupdescription
+
+% \setupdescriptions % check with old
+% [\c!alternative=\descriptionparameter\c!location,
+% \c!location=\v!left]
+
+\setupdescriptions % check with old
+ [\c!alternative=\v!left,
+ \c!headstyle=\v!bold,
+ \c!titlestyle=\v!bold,
+ %\c!style=,
+ %\c!color=,
+ %\c!headcolor=,
+ %\c!titlecolor=,
+ \c!width=7\emwidth,
+ \c!distance=\emwidth,
+ \c!titledistance=.5\emwidth,
+ %\c!hang=,
+ %\c!sample=,
+ %\c!align=,
+ %\c!headalign=,
+ \c!margin=\v!no,
+ \c!before=\blank,
+ \c!inbetween=\blank,
+ \c!after=\blank,
+ \c!indentnext=\v!yes,
+ \c!indenting=\v!never,
+ \c!titleleft=(,
+ \c!titleright=),
+ %\c!closesymbol=,
+ \c!closecommand=\wordright,
+ \c!display=\v!yes,
+ %\c!command=,
+ \c!titlecommand=,
+ \c!expansion=\v!no,
+ %\c!xmlsetup=,
+ %\s!catcodes=,
+ \c!title=\v!yes,
+ %\c!text=,
+ ]
+
+\appendtoks
+ \ifx\currentdescriptionparent\empty
+ \defineconstruction[\currentdescription][\currentdescriptionparent][\s!handler=\v!description,\c!level=1]%
+ \else
+ \defineconstruction[\currentdescription][\s!handler=\v!description,\c!level=1]%
+ \fi
+ \setuevalue {\currentdescription}{\strc_descriptions_command{\currentdescription}}%
+ \setuevalue{\e!start\currentdescription}{\strc_descriptions_start {\currentdescription}}%
+ \setuevalue{\e!stop \currentdescription}{\strc_descriptions_stop}%
+\to \everydefinedescription
+
+\let\p_strc_constructions_title \empty
+
+\unexpanded\setvalue{\??constructioninitializer\v!description}%
+ {\let\currentdescription \currentconstruction
+ \let\constructionparameter \descriptionparameter
+ \let\constructionnamespace \??description
+ \let\detokenizedconstructionparameter\detokenizeddescriptionparameter
+ \let\letconstructionparameter \letdescriptionparameter
+ \let\useconstructionstyleandcolor \usedescriptionstyleandcolor
+ \let\setupcurrentconstruction \setupcurrentdescription
+ \edef\p_strc_constructions_title{\constructionparameter\c!title}%
+ \ifx\p_strc_constructions_title\v!yes
+ \settrue\c_strc_constructions_title_state
+ \else
+ \setfalse\c_strc_constructions_title_state
+ \fi}
+
+% We keep the command variant around but rather would move to the
+% start-stop one. Also, passing the title as argument has some
+% history so we need to keep that as well.
+
+% \startdescription [reference] text \stopdescription
+% \startdescription [reference]{title} text \stopdescription
+% \startdescription [title=,title=,reference=] text \stopdescription
+
+% A bit over the top, the optional title but mkii has it too.
+
+\unexpanded\def\strc_descriptions_start#1%
+ {\begingroup
+ \strc_constructions_initialize{#1}%
+ \doifelsenextoptionalcs\strc_descriptions_start_yes\strc_descriptions_start_nop}
+
+\unexpanded\def\strc_descriptions_start_yes[#1]%
+ {\doifelseassignment{#1}\strc_descriptions_start_yes_assignment\strc_descriptions_start_yes_reference[#1]}
+
+\unexpanded\def\strc_descriptions_start_yes_assignment[#1]% todo userdata
+ {\strc_constructions_register[\c!label={\descriptionparameter\c!text},\c!reference=,\c!title=,\c!bookmark=,\c!list=,#1][]%
+ \csname\??constructionstarthandler\currentconstructionhandler\endcsname}
+
+\unexpanded\def\strc_descriptions_start_yes_reference
+ {\ifconditional\c_strc_constructions_title_state
+ \expandafter\strc_descriptions_start_yes_titled
+ \else
+ \expandafter\strc_descriptions_start_yes_normal
+ \fi}
+
+\unexpanded\def\strc_descriptions_start_yes_titled[#1]%
+ {\doifelsenextbgroup
+ {\strc_descriptions_start_yes_titled_indeed[#1]}%
+ {\setfalse\c_strc_constructions_title_state
+ \strc_descriptions_start_yes_normal[#1]}}
+
+\unexpanded\def\strc_descriptions_start_yes_titled_indeed[#1]#2% todo userdata
+ {\strc_constructions_register[\c!label={\descriptionparameter\c!text},\c!reference={#1},\c!title={#2},\c!bookmark=,\c!list=][]%
+ \csname\??constructionstarthandler\currentconstructionhandler\endcsname}
+
+\unexpanded\def\strc_descriptions_start_yes_normal[#1]% todo userdata
+ {\strc_constructions_register[\c!label={\descriptionparameter\c!text},\c!reference={#1},\c!title=,\c!bookmark=,\c!list=][]%
+ \csname\??constructionstarthandler\currentconstructionhandler\endcsname}
+
+\unexpanded\def\strc_descriptions_start_nop
+ {\ifconditional\c_strc_constructions_title_state
+ \expandafter\strc_descriptions_start_nop_titled
+ \else
+ \expandafter\strc_descriptions_start_nop_normal
+ \fi}
+
+\unexpanded\def\strc_descriptions_start_nop_titled
+ {\doifelsenextbgroup
+ {\strc_descriptions_start_nop_titled_indeed}%
+ {\setfalse\c_strc_constructions_title_state
+ \strc_descriptions_start_nop_normal}}%
+
+\unexpanded\def\strc_descriptions_start_nop_titled_indeed#1%
+ {\strc_constructions_register[\c!label={\descriptionparameter\c!text},\c!reference=,\c!title={#1},\c!bookmark=,\c!list=][]%
+ \csname\??constructionstarthandler\currentconstructionhandler\endcsname}
+
+\unexpanded\def\strc_descriptions_start_nop_normal
+ {\strc_constructions_register[\c!label={\descriptionparameter\c!text},\c!reference=,\c!title=,\c!bookmark=,\c!list=][]%
+ \csname\??constructionstarthandler\currentconstructionhandler\endcsname}
+
+\unexpanded\def\strc_descriptions_stop
+ {\csname\??constructionstophandler\currentconstructionhandler\endcsname}
+
+% \description [reference] text \par
+% \description [reference] {title} text \par
+
+\unexpanded\def\strc_descriptions_command#1%
+ {\begingroup
+ \strc_constructions_initialize{#1}%
+ \doifelsenextoptionalcs\strc_descriptions_yes\strc_descriptions_nop}
+
+\unexpanded\def\strc_descriptions_yes
+ {\ifconditional\c_strc_constructions_title_state
+ \expandafter\strc_descriptions_yes_titled
+ \else
+ \expandafter\strc_descriptions_yes_normal
+ \fi}
+
+\unexpanded\def\strc_descriptions_yes_titled[#1]#2%
+ {\strc_constructions_register[\c!label={\descriptionparameter\c!text},\c!reference={#1},\c!title={#2},\c!bookmark=,\c!list=][]%
+ \csname\??constructioncommandhandler\currentconstructionhandler\endcsname}
+
+\unexpanded\def\strc_descriptions_yes_titled[#1]%
+ {\doifelsenextbgroup
+ {\strc_descriptions_yes_titled_indeed[#1]}%
+ {\setfalse\c_strc_constructions_title_state
+ \strc_descriptions_yes_normal[#1]}}
+
+\unexpanded\def\strc_descriptions_yes_titled_indeed[#1]#2%
+ {\strc_constructions_register[\c!label={\descriptionparameter\c!text},\c!reference={#1},\c!title={#2},\c!bookmark=,\c!list=][]%
+ \csname\??constructioncommandhandler\currentconstructionhandler\endcsname}
+
+\unexpanded\def\strc_descriptions_yes_normal[#1]%
+ {\strc_constructions_register[\c!label={\descriptionparameter\c!text},\c!reference={#1},\c!title=,\c!bookmark=,\c!list=][]%
+ \csname\??constructioncommandhandler\currentconstructionhandler\endcsname}
+
+\unexpanded\def\strc_descriptions_nop
+ {\ifconditional\c_strc_constructions_title_state
+ \expandafter\strc_descriptions_nop_titled
+ \else
+ \expandafter\strc_descriptions_nop_normal
+ \fi}
+
+\unexpanded\def\strc_descriptions_nop_titled
+ {\doifelsenextbgroup
+ {\strc_descriptions_nop_titled_indeed}%
+ {\setfalse\c_strc_constructions_title_state
+ \strc_descriptions_nop_normal}}
+
+\unexpanded\def\strc_descriptions_nop_titled_indeed#1%
+ {\strc_constructions_register[\c!label={\descriptionparameter\c!text},\c!reference=,\c!title={#1},\c!bookmark=,\c!list=][]%
+ \csname\??constructioncommandhandler\currentconstructionhandler\endcsname}
+
+\unexpanded\def\strc_descriptions_nop_normal
+ {\strc_constructions_register[\c!label={\descriptionparameter\c!text},\c!reference=,\c!title=,\c!bookmark=,\c!list=][]%
+ \csname\??constructioncommandhandler\currentconstructionhandler\endcsname}
+
+%D Handlers:
+
+\expandafter\let\csname\??constructionmainhandler \v!description\expandafter\endcsname\csname\??constructionmainhandler \v!construction\endcsname
+\expandafter\let\csname\??constructioncommandhandler\v!description\expandafter\endcsname\csname\??constructioncommandhandler\v!construction\endcsname
+\expandafter\let\csname\??constructiontexthandler \v!description\expandafter\endcsname\csname\??constructiontexthandler \v!construction\endcsname
+
+\unexpanded\setvalue{\??constructioncommandhandler\v!description}%
+ {\dowithpar
+ {\csname\??constructionstarthandler\v!construction\endcsname}%
+ {\csname\??constructionstophandler \v!construction\endcsname\endgroup}}
+
+\unexpanded\setvalue{\??constructionstarthandler\v!description}%
+ {\BeforePar{\csname\??constructionstarthandler\v!construction\endcsname}%
+ \GotoPar}
+
+\unexpanded\setvalue{\??constructionstophandler\v!description}%
+ {\csname\??constructionstophandler\v!construction\endcsname
+ \endgroup}
+
+%D For historic reasons we have (from now on undocumented):
+
+\definedescription
+ [tab]
+ [\c!alternative=\v!left,
+ \c!headstyle=\v!normal,
+ \c!headcolor=,
+ \c!style=\v!normal,
+ \c!color=,
+ \c!width=\v!broad,
+ \c!sample=\kern4\emwidth, % was \hskip but that no longer is okay
+ \c!before=,
+ \c!after=]
+
+\unexpanded\def\setuptab
+ {\setupdescription[tab]}
+
+%D Maybe we should remove this definition.
+
+\protect \endinput