From c3b8f80161e9d51698edb6a30646f73168e67e35 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Mon, 9 Jul 2012 22:35:00 +0200 Subject: beta 2012.07.09 22:35 --- tex/context/base/page-lin.mkiv | 110 ++++++++++++++++++++++++++++------------- 1 file changed, 77 insertions(+), 33 deletions(-) (limited to 'tex/context/base/page-lin.mkiv') diff --git a/tex/context/base/page-lin.mkiv b/tex/context/base/page-lin.mkiv index a26fc2c74..d8aaa2e7e 100644 --- a/tex/context/base/page-lin.mkiv +++ b/tex/context/base/page-lin.mkiv @@ -58,22 +58,22 @@ \let\makelinenumber\gobblesevenarguments % used at lua end -\newconditional\boxcontentneedsprocessing +\newconditional\page_postprocessors_needed_box -\def\mkdoprocesspagecontents #1{\page_lines_add_numbers_to_box{#1}\plusone \plusone \zerocount} -\def\mkdoprocessboxcontents #1{\page_lines_add_numbers_to_box{#1}\plusone \plusone \zerocount} -\def\mkdoprocessdeepboxcontents#1{\page_lines_add_numbers_to_box{#1}\plusone \plusone \plusone } -\def\mkdoprocesscolumncontents #1{\page_lines_add_numbers_to_box{#1}\currentcolumn\nofcolumns\zerocount} +\unexpanded\def\page_postprocessors_linenumbers_page #1{\page_lines_add_numbers_to_box{#1}\plusone \plusone \zerocount} +\unexpanded\def\page_postprocessors_linenumbers_box #1{\page_lines_add_numbers_to_box{#1}\plusone \plusone \zerocount} +\unexpanded\def\page_postprocessors_linenumbers_deepbox#1{\page_lines_add_numbers_to_box{#1}\plusone \plusone \plusone } +\unexpanded\def\page_postprocessors_linenumbers_column #1{\page_lines_add_numbers_to_box{#1}\currentcolumn\nofcolumns\zerocount} \def\page_lines_parameters_regular - {continue = "\linenumberingparameter\c!continue", + {continue = "\ifnum\c_page_lines_mode=\zerocount\v!yes\else\v!no\fi", start = \number\linenumberingparameter\c!start, step = \number\linenumberingparameter\c!step, method = "\linenumberingparameter\c!method", tag = "\currentlinenumbering"} \def\page_lines_parameters_update - {continue = "\linenumberingparameter\c!continue"} + {continue = "\ifnum\c_page_lines_mode=\zerocount\v!yes\else\v!no\fi"} \def\page_lines_start_define {\setxvalue{\??linenumberinginstance\currentlinenumbering}{\ctxcommand{registerlinenumbering({\page_lines_parameters_regular})}}} @@ -141,7 +141,7 @@ \c!location=\v!left, \c!style=, \c!color=, - \c!width=2em, + \c!width=2\emwidth, \c!left=, \c!right=, \c!command=, @@ -179,38 +179,82 @@ \expandafter\let\csname\??linennumberingalternative\v!flushright\endcsname \plustwo \expandafter\let\csname\??linennumberingalternative\v!auto \endcsname \plusfive +% \startlinenumbering[|continue|settings|name] +% \startlinenumbering[name][|continue|settings] + \unexpanded\def\startlinenumbering {\dodoubleempty\page_lines_start} -\def\page_lines_start[#1][#2]% todo: c!continue +\def\page_lines_start % we stay downward compatible {\begingroup - \c_page_lines_mode\plusone \ifsecondargument - \edef\currentlinenumbering{#1}% - \doifassignmentelse{#2} - {\setupcurrentlinenumbering[#2]} - {\doifnumberelse{#2}% downward compatible - {\setcurrentlinenumberingparameter\c!start{#2}}% - {\doif{#2}\v!continue - {\letcurrentlinenumberingparameter\c!continue\v!yes - \c_page_lines_mode\zerocount}}}% + \expandafter\page_lines_start_two \else\iffirstargument - \doifnumberelse{#1}% downward compatible - {\let\currentlinenumbering\empty - \setcurrentlinenumberingparameter\c!start{#1}}% - {\doifelse{#1}\v!continue - {\let\currentlinenumbering\empty - \letcurrentlinenumberingparameter\c!continue\v!yes - \c_page_lines_mode\zerocount} - {\edef\currentlinenumbering{#1}}}% - \fi\fi - \doif{\linenumberingparameter\c!continue}\v!yes - {\c_page_lines_mode\zerocount}% - \numberinglinestrue + \doubleexpandafter\page_lines_start_one + \else + \doubleexpandafter\page_lines_start_zero + \fi\fi} + +\def\page_lines_start_zero[#1][#2]% + {\edef\m_argument{\linenumberingparameter\c!continue}% + \ifx\m_argument\v!continue + \c_page_lines_mode\zerocount + \else + \c_page_lines_mode\plusone + \fi + \page_lines_start_followup} + +\def\page_lines_start_one[#1][#2]% [continue||settings] % historic + {\edef\m_argument{#1}% + \ifx\m_argument\v!continue + \c_page_lines_mode\zerocount + \let\currentlinenumbering\empty + \else + \c_page_lines_mode\plusone + \ifx\m_argument\v!empty + \let\currentlinenumbering\empty + \else + \doifassignmentelse{#1} + {\let\currentlinenumbering\empty + \setupcurrentlinenumbering[#1]} + {\doifnumberelse\m_argument + {\let\currentlinenumbering\empty + \letlinenumberingparameter\c!start\m_argument} + {\let\currentlinenumbering\m_argument}}% + \fi + \edef\m_argument{\linenumberingparameter\c!continue}% + \ifx\m_argument\v!continue + \c_page_lines_mode\zerocount + \fi + \fi + \page_lines_start_followup} + +\def\page_lines_start_two[#1][#2]% [tag][continue||settings] + {\edef\currentlinenumbering{#1}% + \edef\m_argument{#2}% + \ifx\m_argument\v!continue + \c_page_lines_mode\zerocount + \else + \c_page_lines_mode\plusone + \ifx\m_argument\v!empty \else + \doifassignmentelse{#2} + {\setupcurrentlinenumbering[#2]} + {\doifnumber\m_argument + {\letlinenumberingparameter\c!start\m_argument}}% + \fi + \edef\m_argument{\linenumberingparameter\c!continue}% + \ifx\m_argument\v!continue + \c_page_lines_mode\zerocount + \fi + \fi + \page_lines_start_followup} + +\def\page_lines_start_followup + {\numberinglinestrue \the\beforeeverylinenumbering - \globallet\mkprocesspagecontents \mkdoprocesspagecontents - \globallet\mkprocesscolumncontents\mkdoprocesscolumncontents - \global\settrue\boxcontentneedsprocessing % see core-rul.mkiv + \globallet\page_postprocessors_page \page_postprocessors_linenumbers_page + \globallet\page_postprocessors_column\page_postprocessors_linenumbers_column + \global\settrue\page_postprocessors_needed_box % see core-rul.mkiv \ifcase\c_page_lines_mode\relax \page_lines_start_update % continue \or -- cgit v1.2.3