summaryrefslogtreecommitdiff
path: root/tex/context/base/page-lin.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/page-lin.mkiv')
-rw-r--r--tex/context/base/page-lin.mkiv60
1 files changed, 32 insertions, 28 deletions
diff --git a/tex/context/base/page-lin.mkiv b/tex/context/base/page-lin.mkiv
index 51f027639..e9df56aa6 100644
--- a/tex/context/base/page-lin.mkiv
+++ b/tex/context/base/page-lin.mkiv
@@ -42,11 +42,7 @@
% id nr shift width leftskip dir
-% \def\mkskiplinenumber #1#2#3#4#6#5{}
-% \def\mkleftlinenumber #1#2#3#4#5#6{\hbox{\llap{#2\quad\hskip#3\scaledpoint}}}
-% \def\mkrightlinenumber#1#2#3#4#5#6{\hbox{\rlap{\hskip#4\scaledpoint\hskip#3\scaledpoint\quad#2}}}
-
-\let\makenumber\gobblesixarguments
+\let\makelinenumber\gobblesevenarguments
\newconditional\boxcontentneedsprocessing
@@ -235,8 +231,6 @@
% number placement
-\let\mkskiplinenumber \gobblesixarguments
-
\def\mkdoinnerlinenumber{\doifoddpageelse\mkdoleftlinenumber\mkdorightlinenumber}
\def\mkdoouterlinenumber{\doifoddpageelse\mkdorightlinenumber\mkdoleftlinenumber}
@@ -278,47 +272,53 @@
\expandafter\mkdobeginlinenumber
\fi}
+\newconditional\faketextlinenumber
+
\def\mkaddtextlinenumbers#1#2#3% box col max
{\bgroup
\chardef\linenumberbox #1\relax
\chardef\linenumbercolumn #2\relax
\chardef\linenumberlastcolumn#3\relax
\fullrestoreglobalbodyfont
- \def\skipnumber{\hbox{}}%
- \let\makenumber\maketextlinenumber
+ \let\makelinenumber\maketextlinenumber
\mkprocesstextlinenumbers\linenumberbox
\egroup}
-\def\maketextlinenumber#1%
+\def\maketextlinenumber#1#2%
{\edef\currentlinenumbering{#1}%
+ \ifcase#2\relax
+ \settrue \faketextlinenumber
+ \else
+ \setfalse\faketextlinenumber
+ \fi
\chardef\linenumberlocation \executeifdefined{\??rn:l:\linenumberparameter\c!location}\plusone % left
\chardef\linenumberalignment\executeifdefined{\??rn:a:\linenumberparameter\c!align }\plusfive % auto
\ifcase\linenumberlastcolumn\relax
- \let\domakenumber\mkskiplinenumber
+ \settrue \faketextlinenumber
\or
% one column
\ifcase\linenumberlocation
- \let\domakenumber\mkskiplinenumber
+ \settrue \faketextlinenumber
% hm
\or
- \let\domakenumber\mkleftlinenumber
+ \let\domakelinenumber\mkleftlinenumber
\or
- \let\domakenumber\mkrightlinenumber
+ \let\domakelinenumber\mkrightlinenumber
\or % inner
- \let\domakenumber\mkdoinnerlinenumber
+ \let\domakelinenumber\mkdoinnerlinenumber
\or % outer
- \let\domakenumber\mkdoouterlinenumber
+ \let\domakelinenumber\mkdoouterlinenumber
\or % text
- \let\domakenumber\mkdotextlinenumber
+ \let\domakelinenumber\mkdotextlinenumber
\or
- \let\domakenumber\mkdobeginlinenumber
+ \let\domakelinenumber\mkdobeginlinenumber
\or
- \let\domakenumber\mkdoendlinenumber
+ \let\domakelinenumber\mkdoendlinenumber
\fi
\else\ifcase\linenumbercolumn\relax
- \let\domakenumber\mkskiplinenumber
+ \settrue \faketextlinenumber
\or
- \let\domakenumber\mkleftlinenumber
+ \let\domakelinenumber\mkleftlinenumber
\ifcase\linenumberlocation\or
\chardef\linenumberlocation\plusone
\or
@@ -335,7 +335,7 @@
\chardef\linenumberlocation\plusone % todo
\fi
\else
- \let\domakenumber\mkrightlinenumber
+ \let\domakelinenumber\mkrightlinenumber
\ifcase\linenumberlocation\or
\chardef\linenumberlocation\plustwo
\or
@@ -350,7 +350,7 @@
\chardef\linenumberlocation\plustwo % todo
\fi
\fi\fi
- \domakenumber{#1}}
+ \domakelinenumber{#1}}
\def\mkdotextlinenumber #1#2#3#4#5#6% beware, one needs so compensate for this in the width !
{\hbox{\dosomelinenumber{#1}{2}{#2}{#5}\hskip#3\scaledpoint}}
@@ -420,11 +420,15 @@
\or
\doifoddpageelse\hss\relax % outer
\fi
- \linenumberattributes\c!style\c!color
- {\linenumberparameter\c!command
- {\linenumberparameter\c!left
- \convertnumber{\linenumberparameter\c!conversion}{#3}%
- \linenumberparameter\c!right}}%
+ \ifconditional\faketextlinenumber
+ % we need to reserve space
+ \else
+ \linenumberattributes\c!style\c!color
+ {\linenumberparameter\c!command
+ {\linenumberparameter\c!left
+ \convertnumber{\linenumberparameter\c!conversion}{#3}%
+ \linenumberparameter\c!right}}%
+ \fi
\ifcase\linenumberlocation
\hss % middle
\or