%D \module %D [ file=strc-lev, %D version=2010.09.23, %D title=\CONTEXT\ Structure Macros, %D subtitle=Automatic Levels, %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 / Automatic Levels} %D This module is the result of a discussion between Alan Braslau and %D me. I used to have a private (\MKII) module for this but the new %D structure code in \MKIV\ is more suitable for this so now we have %D it as core functionality. For the moment this an experiment that %D Alan and I conduct so it might evolve. \registerctxluafile{strc-lev}{} \unprotect \unexpanded\def\definesectionlevels{\dodoubleargument\strc_levels_define} \unexpanded\def\startsectionlevel {\dosingleempty \strc_levels_start_section} \unexpanded\def\startsubjectlevel {\dosingleempty \strc_levels_start_subject} \unexpanded\def\strc_levels_define[#category][#list]{\clf_definesectionlevels{#category}{#list}} \unexpanded\def\stopsectionlevel {\clf_stopsectionlevel} \unexpanded\def\stopsubjectlevel {\clf_stopsectionlevel} \unexpanded\def\nostarthead{\dotripleargument\strc_levels_start_nop} % used at the lua end \unexpanded\def\nostophead {\dosingleargument\strc_levels_stop_nop } % used at the lua end \unexpanded\def\strc_levels_start_section[#category]% {\doifelseassignment{#category}% {\clf_startsectionlevel\plusone{\v!default}{\currentnamedsection}[#category]}% {\clf_startsectionlevel\plusone {#category}{\currentnamedsection}}} \unexpanded\def\strc_levels_start_subject[#category]% {\doifelseassignment{#category}% {\clf_startsectionlevel\plustwo{\v!default}{\currentnamedsection}[#category]}% {\clf_startsectionlevel\plustwo {#category}{\currentnamedsection}}} \unexpanded\def\strc_levels_start_nop[#category][#settings][#userdata]% {\blank \noindentation{\tttf[start missing section level #category]} \blank} \unexpanded\def\strc_levels_stop_nop[#category]% {\blank \noindentation{\tttf[stop missing section level #category]} \blank} \definesectionlevels [\v!default] [{\v!chapter,\v!title}, {\v!section,\v!subject}, {\v!subsection,\v!subsubject}, {\v!subsubsection,\v!subsubsubject}, {\v!subsubsubsection,\v!subsubsubject}, {\v!subsubsubsubsection,\v!subsubsubject}] \let\definestructurelevels\definesectionlevels \let\startstructurelevel \startsectionlevel \let\stopstructurelevel \stopsectionlevel \protect \endinput % \starttext % % \definehead[xxxxxxsection][subsubsection] % \setuphead [xxxxxxsection][color=red] % % \definesectionlevels[main][chapter,section,subsection,subsubsection] % \definesectionlevels[next][chapter,section,subsection,xxxxxxsection] % % \startsectionlevel [main] [title=first top level] % % \startsectionlevel [main] [title=first lower level] % \startsectionlevel [main] [title=second lower level] % \startsectionlevel [main] [title=third lower level] % test % \stopsectionlevel % \stopsectionlevel % \stopsectionlevel % % \startsectionlevel [main] [title=first lower level] % \startsectionlevel [main] [title=second lower level] % \startsectionlevel [next] [title=third lower level] % test % \stopsectionlevel % \stopsectionlevel % \stopsectionlevel % % \stopsectionlevel % % \stoptext