summaryrefslogtreecommitdiff
path: root/tex/context/base/page-lin.mkiv
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2012-07-09 22:35:00 +0200
committerHans Hagen <pragma@wxs.nl>2012-07-09 22:35:00 +0200
commitc3b8f80161e9d51698edb6a30646f73168e67e35 (patch)
tree13a0155241e76298f4b338418b896432d869998c /tex/context/base/page-lin.mkiv
parente718f750bd4902d4921a156691005844e4d63f03 (diff)
downloadcontext-c3b8f80161e9d51698edb6a30646f73168e67e35.tar.gz
beta 2012.07.09 22:35
Diffstat (limited to 'tex/context/base/page-lin.mkiv')
-rw-r--r--tex/context/base/page-lin.mkiv110
1 files changed, 77 insertions, 33 deletions
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[<startvalue>|continue|settings|name]
+% \startlinenumbering[name][<startvalue>|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|<number>|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|<number>|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