summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/strc-sec.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/strc-sec.mkxl')
-rw-r--r--tex/context/base/mkiv/strc-sec.mkxl1321
1 files changed, 0 insertions, 1321 deletions
diff --git a/tex/context/base/mkiv/strc-sec.mkxl b/tex/context/base/mkiv/strc-sec.mkxl
deleted file mode 100644
index 9a0ebbb54..000000000
--- a/tex/context/base/mkiv/strc-sec.mkxl
+++ /dev/null
@@ -1,1321 +0,0 @@
-%D \module
-%D [ file=strc-sec,
-%D version=2008.10.20,
-%D title=\CONTEXT\ Structure Macros,
-%D subtitle=Sectioning,
-%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.
-
-%D In retrospect I should have gone futher and move more to the
-%D \LUA\ end but here we are now. Maybe some day.
-
-\writestatus{loading}{ConTeXt Structure Macros / Sectioning}
-
-\unprotect
-
-\startcontextdefinitioncode
-
-\installcorenamespace{structure}
-
-\installdirectcommandhandler \??structure {structure} % unchecked, so we need to initialize used parameters
-
-\setupstructure % not a user command so we might need to change the name
- [\c!number=,
- \c!level=,
- \c!name=,
- \c!title=,
- \c!bookmark=,
- \c!marking=,
- \c!list=,
- \c!label=,
- \c!coupling=,
- \c!ownnumber=,
- % \c!interaction=\v!list,
- \c!sectionseparatorset=\s!default,
- \c!sectionconversionset=\s!default,
- \c!sectionstopper=,
- \c!sectionstarter=,
- \c!sectionsegments=,
- \c!sectionresetset=,
- \c!reference=,
- \c!backreference=,
- \c!expansion=\v!no,
- \c!xmlsetup=,
- \s!catcodes=,
- \c!saveinlist=\v!yes]
-
-% maybe flags for list, bm, mark
-
-\def\m_strc_references_prefix_yes{+}
-\def\m_strc_references_prefix_nop{-}
-
-\let\currentstructurereferenceprefix\empty
-
-\installglobalmacrostack\currentstructurereferenceprefix
-
-\def\strc_sectioning_set_reference_prefix
- {\ifempty\currentstructurereferenceprefix
- % nothing
- \orelse\ifx\currentstructurereferenceprefix\m_strc_references_prefix_yes
- \global\advance\prefixcounter \plusone % temp here
- \setupglobalreferenceprefix[\the\prefixcounter]%
- \orelse\ifx\currentstructurereferenceprefix\m_strc_references_prefix_nop
- \setupglobalreferenceprefix[]%
- \else
- \setupglobalreferenceprefix[\currentstructurereferenceprefix]%
- \fi
- \glet\currentstructurereferenceprefix\referenceprefix}
-
-% why xdef ?
-
-\setupstructure
- [\c!label={\headparameter{\currentsectionblock\c!label}},
- \c!incrementnumber=\ifconditional\c_strc_sectioning_increment\v!yes\else\v!no\fi, % not that needed
- \c!saveinlist=\ifconditional\c_strc_sectioning_to_list\v!yes\else\v!no\fi,
- \c!level=\currentheadlevel,
- \c!number=\ifconditional\c_strc_sectioning_increment\ifconditional\headshownumber\v!yes\else\v!no\fi\else\v!no\fi,
- \c!expansion=\headparameter\c!expansion,
- \c!xmlsetup=\headparameter\c!xmlsetup,
- \s!catcodes=\headparameter\s!catcodes,
- \c!sectionresetset=\headparameter\c!sectionresetset,
- \c!sectionseparatorset=\headparameter\c!sectionseparatorset,
- \c!sectionconversionset=\headparameter\c!sectionconversionset,
- \c!sectionconversion=\headparameter\c!conversion, % just for compatibility
- \c!sectionstarter=\headparameter\c!sectionstarter,
- \c!sectionstopper=\headparameter\c!sectionstopper,
- \c!sectionset=\headparameter\c!sectionset,
- \c!sectionsegments=\headparameter\c!sectionsegments,
- \c!reference=\headparameter\c!reference,
- \c!referenceprefix=\headparameter\c!referenceprefix,
- \c!criterium=\headparameter\c!criterium]
-
-% see lists/neat-001.tex for usage of:
-
-\permanent\def\namedstructureheadlocation#1% expandable, maybe [#1]
- {\csname\??savedinternalreference\ifcsname\??savedinternalreference#1\endcsname#1\else\s!default\fi\endcsname}
-
-% The next directive only makes sense when we have sort of garanteed outcome (math is not so
-% nice for instance).
-%
-% \enabledirectives[references.bookmarks.preroll]
-
-\newconditional\c_strc_bookmarks_preroll
-
-\installtexdirective
- {references.bookmarks.preroll}
- {\settrue \c_strc_bookmarks_preroll}
- {\setfalse\c_strc_bookmarks_preroll}
-
-\def\strc_sectioning_autobookmark#1%
- {\begingroup
- % \settrialtypesetting
- \the\everypreroll
- \nodestostring\tempstring{#1}%
- \glet\currentstructurebookmark\tempstring
- \endgroup}
-
-% zeros:
-%
-% \setuphead[subsection][criterium=all]
-%
-% \dorecurse{3} {
-% \chapter{Blabla} \subsection{bla 1 1} \subsection{bla 1 2}
-% \section{bla 2} \subsection{bla 2 1} \subsection{bla 2 2}
-% }
-
-\protected\def\strc_sectioning_register#1#2#3% #1=interfaced-settings, #2=optional user data (not yet supported)
- {\begingroup
- \setupstructure[\c!name={#1},#2]%
- \xdef\currentstructurename {\structureparameter\c!name}%
- \xdef\currentstructurecoupling {\structureparameter\c!coupling}%
- \xdef\currentstructureownnumber {\structureparameter\c!ownnumber}% optional own number
- \xdef\currentstructurelevel {\structureparameter\c!level}%
- \edef\currentstructureexpansion {\structureparameter\c!expansion}%
- \xdef\currentstructurexmlsetup {\structureparameter\c!xmlsetup}%
- \xdef\currentstructurecatcodes {\structureparameter\s!catcodes}%
- \xdef\currentstructurelabel {\structureparameter\c!label}%
- \xdef\currentstructurereference {\structureparameter\c!reference}%
- \xdef\currentstructurereferenceprefix{\structureparameter\c!referenceprefix}%
- \xdef\currentstructurebackreference {\structureparameter\c!backreference}%
- \xdef\currentstructureshownumber {\structureparameter\c!number}%
- \xdef\currentstructuresaveinlist {\structureparameter\c!saveinlist}%
- \xdef\currentstructureincrementnumber{\structureparameter\c!incrementnumber}%
- \xdef\currentstructureplaceholder {\structureparameter\c!placeholder}%
- \ifx\currentstructureexpansion\s!xml
- \xmlstartraw
- \xdef\currentstructuretitle {\structureparameter\c!title}%
- \xdef\currentstructurebookmark{\structureparameter\c!bookmark}%
- \xdef\currentstructuremarking {\structureparameter\c!marking}%
- \xdef\currentstructurelist {\structureparameter\c!list}%
- \xmlstopraw
- \iflocation \ifempty\currentstructurebookmark \ifconditional\c_strc_bookmarks_preroll
- \strc_sectioning_autobookmark\currentstructuretitle
- \fi \fi \fi
- \ifempty\currentstructurelist
- \glet\currentstructurelist\currentstructuretitle
- \fi
- \glet\currentstructurecoding\s!xml
- \else
- \ifx\currentstructureexpansion\v!yes
- \xdef\currentstructuretitle {\structureparameter\c!title}%
- \xdef\currentstructurebookmark{\structureparameter\c!bookmark}%
- \xdef\currentstructuremarking {\structureparameter\c!marking}%
- \xdef\currentstructurelist {\structureparameter\c!list}%
- \iflocation \ifempty\currentstructurebookmark \ifconditional\c_strc_bookmarks_preroll
- \strc_sectioning_autobookmark\currentstructuretitle
- \fi \fi \fi
- \else
- \xdef\currentstructuretitle {\detokenizedstructureparameter\c!title}%
- \xdef\currentstructurebookmark{\detokenizedstructureparameter\c!bookmark}%
- \xdef\currentstructuremarking {\detokenizedstructureparameter\c!marking}%
- \xdef\currentstructurelist {\detokenizedstructureparameter\c!list}%
- \iflocation \ifempty\currentstructurebookmark
- \ifconditional\c_strc_bookmarks_preroll
- \strc_sectioning_autobookmark{\structureparameter\c!title}%
- \else
- \begingroup
- \simplifycommands
- \xdef\currentstructurebookmark{\detokenize\expandafter{\normalexpanded{\structureparameter\c!title}}}%
- \endgroup
- \fi
- \fi \fi
- \fi
- \ifempty\currentstructurelist
- \glet\currentstructurelist\currentstructuretitle
- \fi
- \glet\currentstructurecoding\s!tex
- \fi
- \setnextinternalreference
- \storeinternalreference\currentstructurename{\the\locationcount}%
- \strc_sectioning_set_reference_prefix
- \clf_setsectionentry
- references {
- internal \locationcount
- % block {\currentsectionblock}
- prefix {\currentstructurereferenceprefix}
- reference {\currentstructurereference}
- backreference {\currentstructurebackreference}
- }
- directives {
- resetset {\structureparameter\c!sectionresetset}
- }
- metadata {
- kind {section}
- name {\currentstructurename}
- catcodes \ifempty\currentstructurecatcodes\catcodetable\else\csname\currentstructurecatcodes\endcsname\fi\space
- coding {\currentstructurecoding}
- \ifx\currentstructurecoding\s!xml
- xmlroot {\xmldocument}
- \fi
- \ifempty\currentstructurexmlsetup \else
- xmlsetup {\currentstructurexmlsetup}
- \fi
- \ifx\currentstructuresaveinlist\v!no
- nolist \space true\space
- \fi
- \ifx\currentstructureincrementnumber\v!yes
- increment {\currentstructureincrementnumber}
- \fi
- }
- titledata {
- label {\detokenize\expandafter{\currentstructurelabel}}
- title {\detokenize\expandafter{\currentstructuretitle}}
- \ifx\currentstructurebookmark\currentstructuretitle \else
- bookmark {\detokenize\expandafter{\currentstructurebookmark}}
- \fi
- \ifx\currentstructuremarking\currentstructuretitle \else
- marking {\detokenize\expandafter{\currentstructuremarking}}
- \fi
- \ifx\currentstructuresaveinlist\v!no \else
- \ifx\currentstructurelist\currentstructuretitle \else
- list {\detokenize\expandafter{\currentstructurelist}}
- \fi
- \fi
- }
- numberdata {
- % block {\currentsectionblock}
- \ifx\currentstructureshownumber\v!no
- hidenumber \space true\space % space needed for parser
- \fi
- separatorset {\structureparameter\c!sectionseparatorset}
- conversionset {\structureparameter\c!sectionconversionset}
- conversion {\structureparameter\c!sectionconversion}
- starter {\structureparameter\c!sectionstarter}
- stopper {\structureparameter\c!sectionstopper}
- set {\structureparameter\c!sectionset}
- segments {\structureparameter\c!sectionsegments}
- ownnumber {\currentstructureownnumber}
- language {\currentlanguage}% for the moment, needed for bookmarks conversion
- criterium {\structureparameter\c!criterium}
- }
- userdata {\detokenize{#3}}% will be converted to table at the lua end
- \relax
- \xdef\currentstructurelistnumber{\clf_currentsectiontolist}%
- % \currentstructuresynchronize has to be called someplace, since it introduces a node
- \setstructuresynchronization\currentstructurelistnumber
- \endgroup}
-
-\let\currentsectioncountervalue \!!zerocount % redefined later
-\let\previoussectioncountervalue\!!zerocount % redefined later
-
-% We can access the (stored) data with the following macros.
-%
-% \def\MyHeadCommand #1#2{\framed{#1}\framed{#2 / \structureuservariable{subtitle}}}
-% \def\MyListCommand#1#2#3{\externalfigure[\structurelistuservariable{figure}][height=5mm]#2}
-%
-% \setuphead[chapter][command=\MyHeadCommand]
-% \setuplist[chapter][alternative=command,command=\MyListCommand]
-%
-% \starttext
-% \setupheadertexts[chapter]
-% \setupinteraction[state=start]
-% \placebookmarks[chapter]
-% \placelist[chapter]
-% \startchapter[ownnumber=10,title=Ton,list=Hans,marking=Kees,bookmark=Bram][figure=cow.pdf,subtitle=oeps]
-% \stopchapter
-% \stoptext
-
-% todo: #1 => "#1" ... adapt lua code for name and number
-
-\permanent\def\structurenumber {\clf_structurenumber}
-\permanent\def\structuretitle {\clf_structuretitle}
-\permanent\def\structurevariable #1{\clf_structurevariable {#1}}
-\permanent\def\structureuservariable #1{\clf_structureuservariable {#1}}
-\permanent\def\structurecatcodedget #1{\clf_structurecatcodedget {#1}} % bad name
-\permanent\def\structuregivencatcodedget #1#2{\clf_structuregivencatcodedget {#1}#2 } % bad name
-\permanent\def\structureautocatcodedget #1#2{\clf_structureautocatcodedget {#1}{#2}}
-\permanent\def\namedstructurevariable #1#2{\clf_namedstructurevariable {#1}{#2}}
-\permanent\def\namedstructureuservariable#1#2{\clf_namedstructureuservariable{#1}{#2}}
-
-% compatibility issue:
-%
-% \def\setfullsectionnumber #1{}
-% \def\preparefullnumber #1{}
-% \def\fullsectionnumber {1--1--1}
-% \def\makesectionnumber [#1]{}
-% \def\makesectionformat {}
-% \def\sectionformat {1--1-1-1-1-1-1}
-% \def\composedsectionnumber{}
-% \def\@@kolist{}
-
-% \setuphead[section] [separator=\separatorlist{?,!,*}]
-% \setuphead[subsection][separator=\separatorlist{??,!!,**}]
-%
-% \let\spr\separatorlist % this will enable this feature
-%
-% \setuphead[section] [separator={?,!,*}]
-% \setuphead[subsection][separator={??,!!,**}]
-%
-% \setupheads[separator={A,B,C,D,E,F}]
-% \chapter{test}
-% \section{test} \subsection{test} \subsection{test}
-% \section{test} \subsection{test} \subsection{test}
-
-% lua interface / names and interface might change
-
-% \newconditional\c_strc_rendering_continuous % not used (mkii ?)
-
-\permanent\def\setstructurelevel #1#2{\clf_setstructurelevel {#1}{#2}} % name, level|parent
-\permanent\def\getstructurelevel #1{\clf_getstructurelevel {#1}} % name
-\permanent\def\setstructurenumber #1#2{\clf_setstructurenumber #1{#2}} % level, number (+/-)
-\permanent\def\getstructurenumber #1{\clf_getstructurenumber \numexpr#1\relax} % level
-\permanent\def\getsomestructurenumber #1#2{\clf_getsomestructurenumber #1{#2}} % level, what
-\permanent\def\getfullstructurenumber #1{\clf_getfullstructurenumber \numexpr#1\relax} % level
-\permanent\def\getsomefullstructurenumber#1#2{\clf_getsomefullstructurenumber #1{#2}} % level, what
-\permanent\def\getspecificstructuretitle #1{\clf_getspecificstructuretitle {#1}{\headparameter\s!catcodes}}
-
-% structure heads (like \startchapter)
-
-% \c!deeptextcommand, \c!deepnumbercommand: undefined !
-% \c!before \c!after \c!distance
-% \c!page \c!header \c!text \c!footer=,
-% \c!numbercommand \c!textcommand \c!ownnumber \c!number
-% \c!file \c!grid \c!margintext
-% \c!expansion \c!xmlsetup \s!catcode
-
-\installcorenamespace{head}
-\installcorenamespace{headlevel}
-\installcorenamespace{headincrement}
-\installcorenamespace{headplace}
-\installcorenamespace{headmarkyes}
-\installcorenamespace{headmarknop}
-
-\installcommandhandler \??head {head} \??head
-
-\installmacrostack\currenthead
-\installmacrostack\currentheadparent
-
-\setuphead [%
- %\c!after=,
- %\c!align=,
- %\c!aligntitle=,
- \c!alternative=\v!normal,
- %\c!before=,
- %\c!color=,
- %\c!command=,
- \c!continue=\v!yes,
- %\c!coupling=,
- %\c!deepnumbercommand=,
- %\c!deeptextcommand=,
- %\c!default=,
- \c!distance=\zeropoint,
- \c!textdistance=\zeropoint,
- \c!textwidth=\zeropoint, % signal too
- \c!numberwidth=\zeropoint, % signal too
- \c!width=\zeropoint, % signal too
- \c!expansion=\v!no,
- %\c!file=,
- %\c!footer=,
- %\c!grid=,
- \c!hang=\v!none,
- %\c!header=,
- \c!incrementnumber=\v!yes,
- \c!indentnext=\v!no,
- %\c!label=,
- %\c!limittext=\languageparameter\c!limittext,
- \c!margin=\zeropoint,
- %\c!margintext=,
- \c!number=\v!yes,
- \c!numbercolor=\headparameter\c!color,
- \c!textcolor=\headparameter\c!color,
- \c!numberstyle=\headparameter\c!style,
- \c!textstyle=\headparameter\c!style,
- %\c!numbercommand=,
- %\c!textcommand=,
- \c!ownnumber=\v!no,
- %\c!page=,
- \c!placehead=\v!yes,
- \c!sectionconversionset=\s!default,
- \c!sectionnumber=\v!yes,
- %\c!sectionsegments=,
- \c!sectionseparatorset=\s!default,
- \c!sectionset=\v!all,
- \c!interlinespace=,
- %\c!sectionstopper=,
- %\c!sectionstarter=,
- %\c!strut=,
- %\c!style=,
- %\c!text=,
- %\c!tolerance=,
- %\c!beforesection=\directsetup{document:\currenthead:start}, % these might become defaults i.e. acpect document: namespace
- %\c!insidesection=\directsetup{document:\currenthead:inside}, % these might become defaults i.e. acpect document: namespace
- %\c!aftersection=\directsetup{document:\currenthead:stop}, % these might become defaults i.e. acpect document: namespace
- ]
-
-\aliased\let\setupheads\setuphead % will go
-
-\appendtoks
- \ifempty\currentheadparent
- \edef\currentheaddefault{\headparameter\c!default}%
- \edef\currentheadsection{\headparameter\c!section}%
- \ifx\currenthead\currentheaddefault
- \let\currentheadparent\currentheadsection
- \orelse\ifempty\currentheaddefault
- \let\currentheadparent\currentheadsection
- \else
- \let\currentheadparent\currentheaddefault
- \fi
- \normalexpanded {%
- \setheadparameter{\c!label}{\currenthead}%
- \setheadparameter{\c!coupling}{\currenthead}%
- \setheadparameter{\s!parent}{\??head\currentheadparent}%
- \definemarking[\currenthead] [\currentheadsection]%
- \definemarking[\currenthead\v!number][\currentheadsection]%
- \setupmarking [\currenthead] [\c!filtercommand=\noexpand\sectionheadmarkingtitle {\currenthead}]%
- \setupmarking [\currenthead\v!number][\c!filtercommand=\noexpand\sectionheadmarkingnumber{\currenthead}]%
- }%
- \doifelselist\currenthead\donothing
- {\definelist[\currenthead][\c!prefix=\v!no]}%
- % we can't do this now for backward compatibility reasons
- % \doifelselist\currenthead\donothing
- % {\normalexpanded{\definelist[\currenthead][\currentheadparent][\c!prefix=\v!no]}}%
- \else
- \normalexpanded {%
- \setheadparameter{\c!label}{\currenthead}%
- \setheadparameter{\c!coupling}{\currentheadparent}%
- \definemarking[\currenthead] [\currentheadparent]%
- \definemarking[\currenthead\v!number][\currentheadparent\c!number]%
- }%
- \doifelselist\currenthead\donothing
- {\normalexpanded{\definelist[\currenthead][\currentheadparent][\c!prefix=\v!no]}}%
- \fi
- \presetlabeltext[\currenthead=]%
- \the\everysetuphead
-\to \everydefinehead
-
-\newtoks\everyredefinehead
-
-\appendtoks
- \the\everyredefinehead
-\to \everydefinehead
-
-\appendtoks
- \setstructurelevel\currenthead{\thenamedheadlevel\currenthead}%
-\to \everyredefinehead
-
-\appendtoks
- % beware, this is a global register
- \begingroup
- \edef\currentsectionheadcoupling{\sectionheadcoupling\currenthead}%
- \edef\currentsectionheadsection {\sectionheadsection \currentsectionheadcoupling}%
- \edef\currentsectionlevel {\sectionlevel \currentsectionheadsection}%
- \clf_registersection {\currenthead} {
- coupling {\currentsectionheadcoupling}
- section {\currentsectionheadsection}
- level \space \currentsectionlevel \space % space needed for parser
- parent {\currentheadparent}
- }%
- \endgroup
-\to \everyredefinehead
-
-\appendtoks
- \frozen\instance\setuevalue{\e!start\currenthead}{\strc_sectioning_start[\currenthead]}%
- \frozen\instance\setuevalue{\e!stop \currenthead}{\strc_sectioning_stop [\currenthead]}%
-\to \everydefinehead
-
-% so \subject as well as \section will need two commands when ownnumber
-% is used (one can disable it anyway for subject) .. this is not downward
-% compatible but better
-
-\appendtoks
- \ifempty\currenthead \else
- \doifelse{\headparameter\c!ownnumber}\v!yes
- {\instance\setuevalue\currenthead{\strc_sectioning_handle_own[\currenthead]}}
- {\instance\setuevalue\currenthead{\strc_sectioning_handle_nop[\currenthead]}}%
- \fi
-\to \everysetuphead
-
-\permanent\protected\def\doredefinehead#1#2% called at lua end
- {\push_macro_currenthead
- \push_macro_currentheadparent
- \edef\currenthead{#1}%
- \edef\currentheadparent{#2}%
- \the\everyredefinehead\relax
- \pop_macro_currentheadparent
- \pop_macro_currenthead}
-
-\let\currentnamedsection\empty
-
-\installmacrostack\currentnamedsection
-
-% structure sections (the parents of chapter etc)
-
-\let\firstsectionname\empty
-\let\lastsectionname \empty
-
-\let\resetallstructuremarks \relax
-\let\resetcurrentstructuremarks \relax
-\let\resetcurrentstructuremarkswithpage\relax
-
-\def\resetallstructuremarks {\resetmarking[\firstsectionname]} % will become option (was \v!section-1)
-\def\resetcurrentstructuremarks {\resetmarking[\lastsectionname]} % will become option
-%def\resetcurrentstructuremarkswithpage{\resetmarking[\lastsectionname]} % will become option
-
-% We could use a commandhandler here but sections are somewhat special in the
-% sense that we have two ways of chaining: the main section (levels) as well
-% as rendering (head).
-
-% -2 = text
-% -1 = manual
-% 0 = block
-% +1 = structurelevel 1 .. n
-
-\newcount\maxstructuredepth
-
-\permanent\def\sectionlevel#1%
- {\csname\??headlevel\ifcsname\??headlevel#1\endcsname#1\else\v!none\fi\endcsname}
-
-\permanent\def\namedsectionlevel#1#2% direct indirect
- {\csname\??headlevel
- \ifcsname\??headlevel#1\endcsname
- #1%
- \orelse\ifcsname\??headlevel#2\endcsname
- #2%
- \else
- \v!none
- \fi
- \endcsname}
-
-\permanent\def\xthenamedheadlevel#1%
- {\namedsectionlevel{#1}{\sectionheadsection{\sectionheadcoupling{#1}}}}
-
-\setvalue{\??headlevel\v!block}{0}
-\setvalue{\??headlevel\v!none }{-1}
-\setvalue{\??headlevel\v!text }{-2}
-\setvalue{\??headlevel\v!head }{-3}
-
-\newtoks\everydefinesection
-
-\permanent\protected\def\definesection[#1]%
- {\ifcsname\??headlevel#1\endcsname \else
- \edef\currentsection{#1}% not used, will go
- \edef\currenthead{#1}%
- \global\advance\maxstructuredepth\plusone
- \setevalue{\??headlevel#1}{\the\maxstructuredepth}%
- \setstructurelevel{#1}{\sectionlevel{#1}}%
- \normalexpanded{\setheadparameter{\s!parent}{\??head\lastsectionname}}% TO BE CHECKED, WE HAVE A HELPER
- \the\everydefinesection
- % so far for these default inheritances
- \definemarking[#1]%
- \ifnum\maxstructuredepth>\plusone
- \normalexpanded{\relatemarking[#1][\lastsectionname]}% so, the parent will reset the child
- \fi
- \xdef\lastsectionname{#1}%
- \ifempty\firstsectionname
- \glet\firstsectionname\lastsectionname
- \fi
- \fi}
-
-\permanent\tolerant\protected\def\setupsection[#1]#*[#2]#*[#3]%
- {\ifparameter#1\else
- \push_macro_currenthead
- \edef\currenthead{\ifcsname\??headlevel#1\endcsname#1\else\sectionheadsection{#1}\fi}%
- \ifparameter#3\or
- \edef\currenthead{\currenthead#2}% not used at any more in mkiv (sets now)
- \setupcurrenthead[#3]%
- \else
- \setupcurrenthead[#2]%
- \fi
- \pop_macro_currenthead
- \fi}
-
-% we share the parameters as sections are roots of heads so eventually we can
-% consider \definesection -> \definehead with one argument
-
-\appendtoks
- % This is a rather practical default that we don't want to
- % be part of the parent chain lookup mechanism; it's also
- % mkii compatible. Somewhat weird that it's part of the
- % top level structure but it will be flattened anyway.
- \let\currenthead\currentsection %
- \setheadparameter\c!textstyle {\directheadparameter\c!style}%
- \setheadparameter\c!textcolor {\directheadparameter\c!color}%
- \setheadparameter\c!numberstyle{\directheadparameter\c!style}%
- \setheadparameter\c!numbercolor{\directheadparameter\c!color}%
-\to \everydefinesection
-
-% head -> head
-
-\permanent\def\sectionheadmarkingtitle #1#2{\clf_markingtitle {#1}{#2}} % can be done at lua end
-\permanent\def\sectionheadmarkingnumber#1#2{\clf_markingnumber{#1}{#2}} % can be done at lua end
-
-\permanent\def\sectionheadcoupling#1{\namedheadparameter{#1}\c!coupling}
-\permanent\def\sectionheadsection #1{\namedheadparameter{#1}\c!section}
-
-% head construction
-
-\newconditional\currentstructureown
-
-\newtoks\everybeforehead % hook, todo: before/after keys
-\newtoks\everyafterhead % hook, todo: before/after keys
-
-\permanent\tolerant\protected\def\strc_sectioning_handle_own[#1]#*[#2]#:#*#=#*#=% [ref] {nr} {title}
- {\settrue\currentstructureown
- \triggerautostructurelevel
- \strc_sectioning_handle{#1}{\c!reference={#2},\c!ownnumber={#3},\c!title={#4}}{}} % name ref nr title --
-
-\permanent\tolerant\protected\def\strc_sectioning_handle_nop[#1]#*[#2]% [ref] {title} / for taco: [key=value] variant
- {\setfalse\currentstructureown
- \triggerautostructurelevel
- \ifhastok={#2}%
- \expandafter\strc_sectioning_handle_nop_indeed_yes
- \else
- \expandafter\strc_sectioning_handle_nop_indeed_nop
- \fi
- {#1}{#2}}
-
-\def\strc_sectioning_handle_nop_indeed_yes#1#2%
- {\strc_sectioning_handle{#1}{#2}{}}
-
-\def\strc_sectioning_handle_nop_indeed_nop#1#2#3%
- {\strc_sectioning_handle{#1}{\c!reference={#2},\c!title={#3}}{}} % name ref nr title --
-
-\permanent\tolerant\protected\def\strc_sectioning_start[#1]#*[#2]#*[#3]% for the moment no grouping, too annoying with page breaks
- {\push_macro_currentnamedsection
- \push_macro_currentstructurereferenceprefix
- \edef\currentnamedsection{#1}%
- \setfalse\currentstructureown
- %\globalpushmacro\currenthead % this does not work out well
- \xdef\currenthead{#1}%
- \setsystemmode\currenthead % new, also here now
- \headparameter\c!beforesection % beware, no users vars set yet
- \the\everybeforehead
- \strc_sectioning_handle{#1}{#2}{#3}% name -- -- -- userdata (we might move the tagged to here)
- % potential: \bgroup (can be optional: grouped = yes)
- \headparameter\c!insidesection}
-
-\permanent\protected\def\strc_sectioning_stop[#1]% !!! also used at lua end
- {\dostoptagged
- \dostoptagged
- % potential: \egroup
- %\globalpopmacro\currenthead % so we do a hard recover
- \xdef\currenthead{#1}% recover
- \headparameter\c!aftersection
- \the\everyafterhead
- \resetsystemmode\currenthead
- \pop_macro_currentstructurereferenceprefix
- \pop_macro_currentnamedsection} % new, also here now
-
-\aliased\let\dostarthead\strc_sectioning_start % used at lua end
-\aliased\let\dostophead \strc_sectioning_stop % used at lua end
-
-% todo: add grouping but where: before/after trickery .. probably inside because one can always add
-% grouping to the before/after settings
-
-\aliased\let\startnamedsection\strc_sectioning_start
-
-\permanent\protected\def\stopnamedsection
- {\normalexpanded{\strc_sectioning_stop[\currentnamedsection]}}
-
-% \newconditional\structurereversesectionnumbers % todo: key/val
-
-\newconditional\c_strc_sectioning_to_list
-\newconditional\c_strc_sectioning_increment
-\newconditional\c_strc_sectioning_place
-\newconditional\c_strc_sectioning_empty
-\newconditional\c_strc_sectioning_hidden
-\newconditional\c_strc_sectioning_section
-
-\newconditional\headshownumber % public
-\newconditional\headisdisplay % public
-\newconditional\headissomewhere % public
-
-\setvalue{\??headincrement\v!yes }{\settrue \c_strc_sectioning_increment\settrue \c_strc_sectioning_to_list}
-\setvalue{\??headincrement\v!no }{\setfalse\c_strc_sectioning_increment\setfalse\c_strc_sectioning_to_list}
-\setvalue{\??headincrement\v!list }{\setfalse\c_strc_sectioning_increment\settrue \c_strc_sectioning_to_list}
-\setvalue{\??headincrement\s!empty}{\settrue \c_strc_sectioning_increment\settrue \c_strc_sectioning_to_list}
-
-\protected\def\strc_sectioning_initialize_increment
- {\edef\currentheadincrement{\headparameter\c!incrementnumber}%
- \ifcsname\??headincrement\currentheadincrement\endcsname
- \lastnamedcs
- \else
- \settrue \c_strc_sectioning_increment\settrue \c_strc_sectioning_to_list
- % \filterheadnumber
- \fi}
-
-\permanent\protected\def\filterheadnumber
- {\settrue\c_strc_sectioning_increment
- \settrue\c_strc_sectioning_to_list
- \ifempty\currentproduct
- % todo : filter from other toc (number, file, title)
- % use : \currentheadincrement as spec
- \fi}
-
-\setvalue{\??headplace\v!yes}%
- {\setfalse\c_strc_sectioning_empty
- \settrue \c_strc_sectioning_place
- \setfalse\c_strc_sectioning_hidden
- \setfalse\c_strc_sectioning_section}
-
-\setvalue{\??headplace\v!empty}%
- {\settrue \c_strc_sectioning_empty
- \settrue \c_strc_sectioning_place
- \setfalse\c_strc_sectioning_hidden
- \setfalse\c_strc_sectioning_section}
-
-\setvalue{\??headplace\v!no}%
- {\settrue \c_strc_sectioning_empty
- \setfalse\c_strc_sectioning_place
- \setfalse\c_strc_sectioning_hidden
- \setfalse\c_strc_sectioning_section}
-
-\setvalue{\??headplace\v!hidden}%
- {\settrue \c_strc_sectioning_empty
- \setfalse\c_strc_sectioning_place
- \settrue \c_strc_sectioning_hidden
- \setfalse\c_strc_sectioning_section}
-
-\setvalue{\??headplace\v!section}%
- {\settrue \c_strc_sectioning_empty
- \setfalse\c_strc_sectioning_place
- \settrue \c_strc_sectioning_hidden
- \settrue \c_strc_sectioning_section}
-
-\protected\def\strc_sectioning_initialize_placement
- {\expandnamespaceparameter\??headplace\headparameter\c!placehead\v!yes}
-
-\newmode\v!sectionnumber
-
-\def\dosetstructureheadnumbercontent
- {\setsystemmode\v!sectionnumber
- \settrue\headshownumber} % why ?
-
-\def\doresetstructureheadnumbercontent
- {\resetsystemmode\v!sectionnumber
- \setfalse\headshownumber} % why ?
-
-\protected\def\strc_sectioning_initialize_number
- {\edef\p_number{\sectionblockparameter\c!number}%
- \ifx\p_number\v!yes
- \edef\p_number{\headparameter\c!number}%
- \ifx\p_number\v!yes
- \settrue\headshownumber
- \else
- \setfalse\headshownumber
- \fi
- \else
- \setfalse\headshownumber
- \fi}
-
-% Beware, we do need some node for anchoring marks and normally a zwnj will
-% do but it interferes so we deal with it at the \LUA\ end.
-
-\newtoks\everyheadsynchronization
-
-% \appendtoks
-% \currentstructuresynchronize
-% \to \everyheadsynchronization
-
-\aliased\let\currentstructuresynchronize\donothing
-
-\appendtoks
- \currentstructuresynchronize
- \enforced\glet\currentstructuresynchronize\donothing
-\to \everyheadsynchronization
-
-\protected\def\theheadsynchonization
- {% no, interferes: \signalcharacter
- \the\everyheadsynchronization}
-
-% BEWARE: \marking[section]{my text} does not work as we use list indices instead
-% so we need a 'keep track of raw set option' (or maybe a funny internal prefix)
-
-\permanent\protected\def\setheadmarking % li:: so that we can use \marking[section]{Taco needed this}
- {\strc_sectioning_delayed_flush
- \normalexpanded{\setmarking[\currenthead]{li::\currentstructurelistnumber}}}
-
-\let\deepstructurenumbercommand\relax
-\let\deepstructuretitlecommand \relax
-
-\permanent\protected\def\fullheadnumber
- {\edef\currentheadlabeltag{\currentsectionblock\c!label}%
- \dostarttagged\t!sectionnumber\empty
- \labeltexts
- {\headparameter\currentheadlabeltag}
- {\ifx\deepstructurenumbercommand\relax
- \structurenumber
- \else
- \normalexpanded{\noexpand\deepstructurenumbercommand{\structurenumber}}%
- \fi}%
- \dostoptagged}
-
-\permanent\protected\def\fullheadtitle
- {\dostarttagged\t!sectiontitle\empty
- \ifx\deepstructuretitlecommand\relax
- \structuretitle
- \else
- \normalexpanded{\noexpand\deepstructuretitlecommand{\structuretitle}}%
- \fi
- \dostoptagged}
-
-\let\currenthead \empty
-\let\currentheadcoupling\empty
-\let\currentheadsection \empty
-\let\currentheadlevel \!!zerocount
-\let\currentheadcounter \!!zerocount
-
-\let\strc_show_used\relax
-
-\installtextracker
- {structures.showused}
- {\let\strc_show_used\clf_showstructure}
- {\let\strc_show_used\relax}
-
-\appendtoks
- \strc_show_used
-\to \everystoptext
-
-\protected\def\strc_sectioning_report{\clf_reportstructure}
-
-\ifdefined\strc_rendering_initialize_style_and_color \else
-
- \protected\def\strc_rendering_initialize_style_and_color#1#2%
- {\dontconvertfont
- \useheadstyleandcolor\c!style\c!color
- \useheadstyleandcolor#1#2%
- \setupinterlinespace}
-
-\fi
-
-\permanent\tolerant\protected\def\placeheadtext[#1]%
- {\dontleavehmode
- \begingroup
- \protected\def\\{\space}% messy here, but the default (and needs to be grouped)
- \global\settrue\headisdisplay % triggers interlinespace checking
- \edef\currenthead{#1}% maybe only when #1 is given
- \strc_rendering_initialize_style_and_color\c!textstyle\c!textcolor
- \relax
- \getspecificstructuretitle{\thenamedheadlevel{#1}}%
- \endgraf
- \endgroup}
-
-\permanent\tolerant\protected\def\placeheadnumber[#1]%
- {\dontleavehmode
- \begingroup
- \global\settrue\headisdisplay % triggers interlinespace checking
- \edef\currenthead{#1}% maybe only when #1 is given
- \strc_rendering_initialize_style_and_color\c!numberstyle\c!numbercolor
- \relax
- \getfullstructurenumber{\thenamedheadlevel{#1}}%
- \endgraf
- \endgroup}
-
-\ifdefined\triggerautostructurelevel \else \let\triggerautostructurelevel\relax \fi
-
-\newtoks\everybeforesectionheadhandle
-\newtoks\everyaftersectionheadhandle
-
-\def\strc_sectioning_handle#1#2#3% name data userdata (we can move #1 to the caller)
- {\xdef\currenthead {#1}%
- \xdef\currentheadcoupling{\sectionheadcoupling\currenthead}%
- \xdef\currentheadsection {\sectionheadsection \currentheadcoupling}%
- \xdef\currentheadlevel {\sectionlevel \currentheadsection}%
- %
- %\writestatus\m!system{setup: \currenthead,\currentheadcoupling,\currentheadsection,\currentheadlevel}%
- %
- \strc_sectioning_initialize_autolevel
- \strc_sectioning_initialize_increment
- \strc_sectioning_initialize_placement
- \strc_sectioning_initialize_number
- %
- \the\everybeforesectionheadhandle
- %
- % todo: also mark (for header)
- %
- % we might remove the lower level
- %
- % not here, after optional \page: \strc_sectioning_register{#1}{#2}{#3}%
- %
-% \xdef\currentheadcounter{\currentsectioncountervalue}% lua call
- %
- % \currentstructuresynchronize % will move
- %
- \let\getheadnumber\empty
- \let\getheadtitle \empty
- \let\getheadsyncs \empty
- \ifconditional\c_strc_sectioning_increment
- \ifconditional\c_strc_sectioning_place
- \strc_sectioning_before_yes
- \strc_sectioning_register{#1}{#2}{#3}% after optional \page
- \strc_sectioning_report
- \dostarttagged\t!sectioncaption\empty
- \let\getheadsyncs\theheadsynchonization
- \let\getheadtitle\fullheadtitle
- \ifconditional\headshownumber
- \let\getheadnumber\fullheadnumber
- \strc_rendering_place_head_number_and_text
- \else
- \strc_rendering_place_head_text
- \fi
- \dostoptagged
- \strc_sectioning_after_yes
- \orelse\ifconditional\c_strc_sectioning_hidden
- \strc_sectioning_register{#1}{#2}{#3}% after optional \page
- \strc_sectioning_report
- \dostarttagged\t!sectioncaption\empty
- \let\getheadsyncs\theheadsynchonization
- \ifconditional\c_strc_sectioning_section
- \strc_rendering_place_head_section
- \else
- \strc_rendering_place_head_hidden % only something when tracing
- \fi
- \dostoptagged
- \else
- \strc_sectioning_before_nop % toegevoegd ivm subpaginanr / tug sheets
- \strc_sectioning_register{#1}{#2}{#3}% after optional \page
- \strc_sectioning_report
- \dostarttagged\t!sectioncaption\empty
- \let\getheadsyncs\theheadsynchonization
- \strc_rendering_place_head_empty % just flush 'm
- \dostoptagged
- \strc_sectioning_after_nop
- \fi
- \else
- \ifconditional\c_strc_sectioning_place
- \strc_sectioning_before_yes
- \strc_sectioning_register{#1}{#2}{#3}% after optional \page
- \strc_sectioning_report
- \dostarttagged\t!sectioncaption\empty
- \let\getheadsyncs\theheadsynchonization
- \let\getheadtitle\fullheadtitle
- \strc_rendering_place_head_text
- \dostoptagged
- \strc_sectioning_after_yes
- \orelse\ifconditional\c_strc_sectioning_hidden
- \strc_sectioning_register{#1}{#2}{#3}% after optional \page
- \strc_sectioning_report
- \let\getheadsyncs\theheadsynchonization
- \dostarttagged\t!sectioncaption\empty
- \ifconditional\c_strc_sectioning_section
- \strc_rendering_place_head_section
- \else
- \strc_rendering_place_head_hidden % only something when tracing
- \fi
- \dostoptagged
- \else
- % do nothing / should be vbox to 0pt
- \strc_sectioning_before_nop
- \strc_sectioning_register{#1}{#2}{#3}% after optional \page
- \strc_sectioning_report
- \dostarttagged\t!sectioncaption\empty
- \let\getheadsyncs\theheadsynchonization
- \strc_rendering_place_head_empty % just flush 'm
- \dostoptagged
- \strc_sectioning_after_nop
- \fi
- \fi
- %
- \the\everyaftersectionheadhandle
- %
- \setfalse\c_strc_sectioning_ignore_page
- % ignorespaces prevents spaces creeping in when after=\dontleavehmode
- \dostarttagged\t!sectioncontent\empty
- \ifempty\currentstructureplaceholder
- \ifconditional\headisdisplay
- \doubleexpandafter\ignorespaces
- \else
- \doubleexpandafter\ignorepars
- \fi
- \else
- \expandafter\strc_sectioning_placeholder
- \fi}
-
-%D \starttyping
-%D \startsubject[placeholder=todo,title=one]
-%D whatever one
-%D \stopsubject
-%D \stoptyping
-
-\def\strc_sectioning_placeholder
- {\placeholder[\currentstructureplaceholder]%
- \gobblenested{\e!start\currenthead}{\e!stop\currenthead}{\e!stop\currenthead}}
-
-% typesetting (the getters are public)
-
-\protected\def\strc_rendering_place_head_number_and_text
- {\setheadmarking
- \getheadnumber/\getheadtitle
- \getheadsyncs}
-
-\protected\def\strc_rendering_place_head_text
- {\setheadmarking
- \getheadtitle
- \getheadsyncs}
-
-\protected\def\strc_rendering_place_head_empty
- {\setheadmarking
- \getheadsyncs}
-
-\installcorenamespace{hiddenheadattr}
-\installcorenamespace{hiddenheadsync}
-
-% todo: when in the page builder we need to resolve the marking immediately
-% because otherwise we have an async
-
-\newbox\b_sectioning_delayed
-
-\def\strc_sectioning_delayed_flush
- {\ifvoid\b_sectioning_delayed\else
- \smashedbox\b_sectioning_delayed
- \fi}
-
-\protected\def\strc_rendering_place_head_section % see hidden below
- {\global\setbox\b_sectioning_delayed\hpack\bgroup
- \setmarking[\currentheadcoupling]{li::\currentstructurelistnumber}%
- \hpack\headreferenceattributes{}% also does the mark
- \theheadsynchonization
- \egroup}
-
-\protected\def\strc_rendering_place_head_hidden % maybe trialtypesetting check
- {\setxvalue{\??hiddenheadattr\currenthead}%
- {\headreferenceattributes}% can be used when making a box
- \setxvalue{\??hiddenheadsync\currenthead}%
- {\noexpand\letgvalue{\??hiddenheadsync\currenthead}\relax
- \noexpand\setmarking[\currentheadcoupling]{li::\currentstructurelistnumber}%
- \hpack\headreferenceattributes{}% otherwise no destination ... maybe tag ref as hidden and fall back on page reference
- \theheadsynchonization}} % and it's a node anyway
-
-\permanent\def\synchronizehead #1{\csname\??hiddenheadsync#1\endcsname}
-\permanent\def\theheadreferenceattributes#1{\csname\??hiddenheadattr#1\endcsname}
-
-\permanent\protected\def\placerawheaddata [#1]{\synchronizehead{#1}}
-\permanent\protected\def\placerawheadtext [#1]{\getspecificstructuretitle{\thenamedheadlevel{#1}}}
-\permanent\protected\def\placerawheadnumber[#1]{\getfullstructurenumber{\thenamedheadlevel{#1}}}
-
-\permanent\protected\def\repeathead[#1]%
- {\begingroup
- \setupinteraction[\c!state=\v!stop]%
- \def\currenthead{#1}
- \strc_sectioning_initialize_placement
- \strc_sectioning_initialize_number
- \dostarttagged\t!sectioncaption\empty
- \let\getheadsyncs \relax
- \def\getheadtitle {\getmarking[#1]}
- \def\getheadnumber{\getmarking[#1\v!number]}
- \strc_sectioning_before_yes
- \ifconditional\headshownumber
- \strc_rendering_place_head_number_and_text
- \else
- \strc_rendering_place_head_text
- \fi
- \dostoptagged
- \strc_sectioning_after_yes
- \endgroup}
-
-% \setuphead[chapter][placehead=hidden]
-% \chapter {test}
-%
-% %(\synchronizehead{chapter}) % \getheadsyncs
-% %(\getfullstructurenumber{\thenamedheadlevel{chapter}})
-% %(\getspecificstructuretitle{\thenamedheadlevel{chapter}})
-%
-% (\placerawheaddata [chapter])
-% (\placerawheadnumber[chapter])
-% (\placerawheadtext [chapter])
-
-% pagebreaks
-
-\letvalue{\??headmarknop\v!page }\donothing
-\setvalue{\??headmarknop\v!reset }{\resetcurrentstructuremarks}
-\letvalue{\??headmarknop\s!unknown}\donothing
-
-\letvalue{\??headmarkyes\v!page }\donothing % to be checked: {\resetcurrentstructuremarks}
-\setvalue{\??headmarkyes\v!reset }{\resetcurrentstructuremarks}
-\letvalue{\??headmarkyes\s!unknown}\donothing
-
-\def\strc_sectioning_check_layout
- {\edef\p_page{\headparameter\c!page}%
- \ifempty\p_page
- \strc_sectioning_check_layout_nop
- \else
- \strc_sectioning_check_layout_yes
- \fi}
-
-\def\strc_sectioning_check_layout_nop
- {\expandnamespaceparameter\??headmarknop\headparameter\c!marking\s!unknown}
-
-\def\strc_sectioning_check_layout_yes
- {\page[\p_page]%
- \expandnamespaceparameter\??headmarkyes\headparameter\c!marking\s!unknown
- \edef\p_header{\headparameter\c!header}%
- \ifempty\p_header \else
- \doifelselayouttextline\v!header{\normalexpanded{\setuplayouttext[\v!header][\c!state=\p_header]}}\donothing
- \fi
- \edef\p_text{\headparameter\c!text}%
- \ifempty\p_text \else
- \doifelselayouttextline\v!text {\normalexpanded{\setuplayouttext[\v!text ][\c!state=\p_text ]}}\donothing
- \fi
- \edef\p_footer{\headparameter\c!footer}%
- \ifempty\p_footer \else
- \doifelselayouttextline\v!footer{\normalexpanded{\setuplayouttext[\v!footer][\c!state=\p_footer]}}\donothing
- \fi}
-
-\newcount \c_strc_sectioning_preceding_level \c_strc_sectioning_preceding_level\plusone
-\newconditional\c_strc_sectioning_auto_break \settrue\c_strc_sectioning_auto_break
-\newconditional\c_strc_sectioning_ignore_page
-\newsignal \d_strc_sectioning_continuous_signal
-
-\protected\def\strc_sectioning_inject_continuous_signal
- {\ifhmode
- \hskip\d_strc_sectioning_continuous_signal\relax
- \fi}
-
-% \let\dotagsectionlevel\relax
-
-\def\strc_sectioning_before_yes
- {\strc_sectioning_check_before\strc_sectioning_handle_page_yes
- \headparameter\c!inbetween
- \dostarttaggedchained\t!section\currenthead\??head
-% \dotagsectionlevel
- }
-
-\def\strc_sectioning_before_nop
- {\strc_sectioning_check_before\strc_sectioning_handle_page_nop
- \headparameter\c!inbetween
- \dostarttagged\currenthead\empty} % this is a weird one .. needs checking
-
-\def\strc_sectioning_empty_correction
- {\ifconditional\c_strc_sectioning_empty
- % this needs checking
- \penalty\plustenthousand
- \vskip-\lineheight
- \kern\zeropoint
- \prevdepth\strutdepth
- \fi}
-
-\def\strc_sectioning_after_nop
- {}
-
-\def\strc_sectioning_check_before#1%
- {\ifhmode
- \scratchcounter\lastpenalty
- \unpenalty % no beauty in this
- \ifdim\lastskip=\d_strc_sectioning_continuous_signal
- % no page break
- \ifconditional\c_strc_sectioning_ignore_page
- \setfalse\c_strc_sectioning_ignore_page
- \else
- \global\c_strc_sectioning_preceding_level\currentheadlevel
- \nobreak
- \fi
- % \global\settrue\c_strc_rendering_continuous
- \else
- \penalty\scratchcounter
- % \global\setfalse\c_strc_rendering_continuous
- #1%
- \fi
- \else
- % \global\setfalse\c_strc_rendering_continuous
- #1%
- \fi}
-
-%permanent\def\currentsectioncountervalue {\clf_depthnumber\numexpr\thenamedheadlevel\currenthead\relax}
-%permanent\def\previoussectioncountervalue{\clf_depthnumber\numexpr\thenamedheadlevel\currenthead+\minusone\relax}
-
-\permanent\def\currentsectioncountervalue {\clf_depthnumber\numexpr\thenamedheadlevel\currenthead\relax}
-%permanent\def\previoussectioncountervalue{\clf_depthnumber\numexpr\thenamedheadlevel\currenthead+\minusone\relax}
-\permanent\def\previoussectioncountervalue{\clf_depthnumber\numexpr\thenamedheadlevel\previoushead\relax}
-
-\let\previoushead\empty
-
-\def\strc_sectioning_handle_page_nop
- {\edef\p_continue{\headparameter\c!continue}%
- \ifx\p_continue\v!yes
- \ifx\currenthead\previoushead % not really needed
- \strc_sectioning_check_layout
- \orelse\ifnum\previoussectioncountervalue=\zerocount
- \strc_sectioning_check_layout
- \orelse\ifnum\currentsectioncountervalue>\zerocount
- \strc_sectioning_check_layout
- \fi
- \else
- \strc_sectioning_check_layout
- \fi
- \glet\previoushead\currenthead}
-
-
-\def\strc_sectioning_handle_page_yes
- {\ifconditional\c_strc_sectioning_ignore_page
- \setfalse\c_strc_sectioning_ignore_page
- \else
- % beware, these numbers are not yet know here
- \strc_sectioning_handle_page_nop
- \edef\p_aligntitle{\headparameter\c!aligntitle}%
- \ifx\p_aligntitle\v!float
- \ifconditional\c_strc_sectioning_auto_break
- \spac_vspacing_same_page\currentheadlevel\zerocount
- \fi
- \headparameter\c!before\relax
- \indent
- \else
- \page_otr_command_flush_side_floats
- \ifconditional\c_strc_sectioning_auto_break
- \spac_vspacing_same_page\currentheadlevel\zerocount
- \fi
- \headparameter\c!before\relax
- \fi
- \global\c_strc_sectioning_preceding_level\currentheadlevel
- \fi
- \glet\previoushead\currenthead}
-
-\def\strc_sectioning_depth_correction
- {\ifvmode
- \edef\p_depthcorrection{\headparameter\c!depthcorrection}%
- \ifx\p_depthcorrection\v!strut
- \prevdepth\strutdepth
- \fi
- \fi}
-
-\def\strc_sectioning_after_yes
- {\ifconditional\headisdisplay
- \ifconditional\c_strc_sectioning_auto_break
- \spac_vspacing_same_page\currentheadlevel\plusone
- \fi
- \strc_sectioning_empty_correction
- \headparameter\c!after
- \strc_sectioning_depth_correction
- \fi}
-
-\protected\def\strc_sectioning_prevent_page_break % see strc-con
- {\ifconditional\c_strc_sectioning_auto_break
- \spac_vspacing_same_page\currentheadlevel\plustwo
- \fi}
-
-
-% We do support negative numbers but it can have side effects that we won't catch:
-%
-% \chapter{some} \setupheadnumber[chapter][3] \chapter{more}
-% \setupheadnumber[section][8] \section{b} \section{c} \setupheadnumber[section][-1] \section{d}
-
-\permanent\def\thenamedheadlevel#1%
- {\sectionlevel{\sectionheadsection{\sectionheadcoupling{#1}}}}
-
-\permanent\tolerant\protected\def\setupheadnumber[#1]#*[#2]% todo: reset if at other level
- {\setstructurenumber{\thenamedheadlevel{#1}}{\number#2}}
-
-\def\currentheadnumber{0} % ==> \currentheadnumber
-
-\permanent\protected\def\determineheadnumber[#1]%
- {\xdef\currentheadnumber{\getstructurenumber{\thenamedheadlevel{#1}}}}
-
-% The previous macro is been replaced by the expandable:
-
-\permanent\def\namedheadnumber #1{\getstructurenumber {\thenamedheadlevel{#1}}}
-\permanent\def\somenamedheadnumber#1#2{\getsomestructurenumber{\thenamedheadlevel{#1}}{#2}}
-
-\permanent\tolerant\protected\def\headnumber[#1]#*[#2]% simple case is just a number
- {\getsomefullstructurenumber{\ifparameter#1\or\thenamedheadlevel{#1}\fi}{#2}}
-
-\permanent\tolerant\protected\def\someheadnumber[#1]#*[#2]%
- {\dontleavehmode
- \begingroup
- \edef\currenthead{#1}%
- \getsomefullstructurenumber{\thenamedheadlevel{#1}}{#2}%
- \endgroup}
-
-\aliased\let\sectioncountervalue\structurevalue
-
-\def\currentheadtext{obsolete,\space use marks}
-
-% list references, will be redone in lua when we need it
-
-\let\startlistreferences\relax
-\let\stoplistreferences \relax
-
-% experimental
-
-\newconditional\c_strc_sectioning_auto_levels
-
-\appendtoks
- \settrue\c_strc_sectioning_auto_levels
-\to \everyenableelements
-
-\protected\def\strc_sectioning_initialize_autolevel
- {\ifconditional\c_strc_sectioning_auto_levels
- \clf_autonextstructurelevel\currentheadlevel\relax
- \global\setfalse\c_strc_sectioning_auto_levels
- \fi}
-
-\permanent\protected\def\triggerautostructurelevel
- {\global\settrue\c_strc_sectioning_auto_levels}
-
-\permanent\protected\def\finalizeautostructurelevels
- {\clf_autofinishstructurelevels}
-
-\permanent\protected\def\finalizeautostructurelevel
- {\dostoptagged
- \dostoptagged}
-
-\appendtoks
- \finalizeautostructurelevels
-\to \everystoptext
-
-\stopcontextdefinitioncode
-
-\protect \endinput