summaryrefslogtreecommitdiff
path: root/tex/context/base/core-not.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/core-not.tex')
-rw-r--r--tex/context/base/core-not.tex251
1 files changed, 194 insertions, 57 deletions
diff --git a/tex/context/base/core-not.tex b/tex/context/base/core-not.tex
index 69e62dc5b..e86f8352a 100644
--- a/tex/context/base/core-not.tex
+++ b/tex/context/base/core-not.tex
@@ -202,7 +202,22 @@
\setfootnotehsize
\setrigidcolumnhsize\hsize\@@vnkolomafstand\@@vnn
\setbox0=\vbox\bgroup}
- \def\stoppopfootnotes {\egroup\rigidcolumnbalance0\egroup}}
+ \def\stoppopfootnotes {\egroup
+ \setbox0=\vbox
+ {\unvbox0\setbox0\lastbox
+ \ifvbox0\unvbox\else\box\fi0}%
+ \rigidcolumnbalance0\egroup}}
+
+% \def\settextfootnotes%
+% {\def\startpushfootnote {\startvboxtohbox
+% \dostartattributes\??vn\c!letter\c!kleur{}}%
+% \def\stoppushfootnote {\hskip\@@vnkolomafstand % plus.5em minus.5em
+% \dostopattributes
+% \stopvboxtohbox}%
+% \def\startpopfootnotes {\vbox\bgroup % \doifdimenelse
+% \doifnotinset{\@@vnbreedte}{\v!passend,\v!ruim}
+% {\setfootnotehsize}}%
+% \def\stoppopfootnotes {\convertvboxtohbox\egroup}}
\def\settextfootnotes%
{\def\startpushfootnote {\startvboxtohbox
@@ -210,10 +225,32 @@
\def\stoppushfootnote {\hskip\@@vnkolomafstand % plus.5em minus.5em
\dostopattributes
\stopvboxtohbox}%
- \def\startpopfootnotes {\vbox\bgroup % \doifdimenelse
+ \def\startpopfootnotes {\vbox\bgroup
\doifnotinset{\@@vnbreedte}{\v!passend,\v!ruim}
- {\setfootnotehsize}}%
- \def\stoppopfootnotes {\convertvboxtohbox\egroup}}
+ {\setfootnotehsize}%
+ \beginofshapebox}%
+ \def\stoppopfootnotes {\endofshapebox
+ \reshapebox
+ {\ifhbox\shapebox\unhbox\else\box\fi\shapebox
+ \endgraf}%
+ \flushshapebox
+ \egroup}}
+
+%D The formatting depends on the width of the table, so we
+%D have to set \type {n} to zero.
+%D
+%D \starttypen
+%D \startbuffer
+%D \bTABLE
+%D \bTR \bTD one \footnote{\dorecurse{10}{abcd }} \eTD \bTD two \eTD \eTR
+%D \bTR \bTD three fout five six seven eight nine \eTD \bTD ten \eTD \eTR
+%D \eTABLE
+%D \stopbuffer
+%D
+%D \startlocalfootnotes[n=0,location={text,none}]
+%D \placelegend[n=2]{\getbuffer}{\placelocalfootnotes}
+%D \stoplocalfootnotes
+%D \stoptypen
%D The numbers that accompany a footnote are generated using
%D the standard \CONTEXT\ numbering mechanism, and thereby can
@@ -281,6 +318,24 @@
\unexpanded\def\footnote {\dodoubleempty\dofootnote[1]}
\unexpanded\def\footnotetext{\dodoubleempty\dofootnote[0]}
+%\def\dofootnote[#1][#2]%
+% {\unskip
+% \ifcase#1\relax
+% \global\footnotesymbolfalse
+% \else
+% \global\footnotesymboltrue
+% \fi
+% \ifvisible
+% \ifreshapingbox
+% \let\next\gobbletwoarguments
+% \else
+% \let\next\dodofootnote
+% \fi
+% \else
+% \let\next\gobbletwoarguments
+% \fi
+% \next{#2}}
+
\def\dofootnote[#1][#2]%
{\unskip
\ifcase#1\relax
@@ -290,14 +345,13 @@
\fi
\ifvisible
\ifreshapingbox
- \let\next=\gobbletwoarguments
+ \@EAEAEA\gobbletwoarguments
\else
- \let\next=\dodofootnote
+ \@EAEAEA\dodofootnote
\fi
\else
- \let\next=\gobbletwoarguments
- \fi
- \next{#2}}
+ \@EA\gobbletwoarguments
+ \fi{#2}}
%D \macros
%D {footnotesenabled}
@@ -332,31 +386,67 @@
{}
\fi}
-\def\dodofootnote#1%
+% \def\dodofootnote#1%
+% {\iffootnotesenabled
+% \doglobal\increment\internalfootreference
+% \doifelse{\@@vnwijze}{\v!per\v!pagina}
+% {\settrue\pagewisefootnotes}
+% {\setfalse\pagewisefootnotes}%
+% \doifelse{#1}{-}
+% {\let\footnotenumber\empty}
+% {\ifconditional\pagewisefootnotes
+% \doifreferencefoundelse{\s!fnt:t:\internalfootreference}
+% {\ifnum\currentrealreference>\lastfootnotepage\relax
+% \global\let\lastfootnotepage\currentrealreference
+% \resetnummer[\v!voetnoot]%
+% \fi}
+% {}%
+% \fi
+% \verhoognummer[\v!voetnoot]%
+% \maakhetnummer[\v!voetnoot]%
+% \rawreference{\s!fnt}{#1}{\hetnummer}%
+% \let\footnotenumber\hetnummer}%
+% \expandafter\dostartfootnote
+% \else
+% \expandafter\gobbleoneargument
+% \fi}
+
+\def\dodofootnote%
{\iffootnotesenabled
- \doglobal\increment\internalfootreference
- \doifelse{\@@vnwijze}{\v!per\v!pagina}
- {\settrue\pagewisefootnotes}
- {\setfalse\pagewisefootnotes}%
- \doifelse{#1}{-}
- {\let\footnotenumber=\empty}
- {\ifconditional\pagewisefootnotes
- \doifreferencefoundelse{\s!fnt:t:\internalfootreference}
- {\ifnum\currentrealreference>\lastfootnotepage\relax
- \global\let\lastfootnotepage\currentrealreference
- \resetnummer[\v!voetnoot]%
- \fi}
- {}%
- \fi
- \verhoognummer[\v!voetnoot]%
- \maakhetnummer[\v!voetnoot]%
- \rawreference{\s!fnt}{#1}{\hetnummer}%
- \let\footnotenumber=\hetnummer}%
- \expandafter\dostartfootnote
+ \iftrialtypesetting
+ \@EAEAEA\nododofootnote
+ \else
+ \@EAEAEA\dododofootnote
+ \fi
\else
- \expandafter\gobbleoneargument
+ \@EA\gobbletwoarguments
\fi}
+\def\nododofootnote#1%
+ {\doifnot{#1}{-}{\kern.5em}% quick hack, approximation
+ \gobbleoneargument}
+
+\def\dododofootnote#1%
+ {\doglobal\increment\internalfootreference
+ \doifelse{\@@vnwijze}{\v!per\v!pagina}
+ {\settrue\pagewisefootnotes}
+ {\setfalse\pagewisefootnotes}%
+ \doifelse{#1}{-}
+ {\let\footnotenumber\empty}
+ {\ifconditional\pagewisefootnotes
+ \doifreferencefoundelse{\s!fnt:t:\internalfootreference}
+ {\ifnum\currentrealreference>\lastfootnotepage\relax
+ \global\let\lastfootnotepage\currentrealreference
+ \resetnummer[\v!voetnoot]%
+ \fi}
+ {}%
+ \fi
+ \verhoognummer[\v!voetnoot]%
+ \maakhetnummer[\v!voetnoot]%
+ \rawreference{\s!fnt}{#1}{\hetnummer}%
+ \let\footnotenumber\hetnummer}%
+ \dostartfootnote}
+
%D The main typesetting routine is more or less the same as the
%D \PLAIN\ \TEX\ one, except that we only handle one type while
%D \PLAIN\ also has something \type{\v...}. In most cases
@@ -417,13 +507,16 @@
\fi
\startpushfootnote
{\ifx\footnotenumber\empty \else
+\preparethenumber\??vn\footnotenumber\preparednumber
\iflocation
\naarbox{\@@vnnummercommando
- {\footnotenumber\domovednote\v!volgendepagina\v!vorigepagina}}%
+% {\footnotenumber\domovednote\v!volgendepagina\v!vorigepagina}}%
+{\preparednumber\domovednote\v!volgendepagina\v!vorigepagina}}%
[\s!fnt:f:\internalfootreference]%
\else
\@@vnnummercommando
- {\footnotenumber\domovednote\v!volgendepagina\v!vorigepagina}%
+% {\footnotenumber\domovednote\v!volgendepagina\v!vorigepagina}%
+{\preparednumber\domovednote\v!volgendepagina\v!vorigepagina}%
\fi
\fi
\iflocation
@@ -510,12 +603,16 @@
\dofootnoterule % alleen in ..mode
\bgroup
\setfootnotebodyfont
- \setbox0=\hbox
+ \setbox0=\hbox
{\startpopfootnotes
\setfootnotebodyfont
- % this should be checked, smells like a mix-up
- % does not split: \ifcase\@@vnn\unvbox\else\box\fi\footins
- \ifcase\@@vnn\box\else\unvbox\fi\footins
+% % this should be checked, smells like a mix-up
+% % does not split: \ifcase\@@vnn\unvbox\else\box\fi\footins
+% \ifcase\@@vnn
+ \box\footins
+% \else
+% \unvbox\footins
+% \fi
% this is too ugly actually
\stoppopfootnotes}%
\localframed
@@ -524,7 +621,7 @@
\c!hoogte=\v!passend,
\c!strut=\v!nee,
\c!offset=\v!overlay]
- {\ifdim\dp0=\!!zeropoint % this hack is needed because \vadjust
+ {\ifdim\dp0=\zeropoint % this hack is needed because \vadjust
\hbox{\lower\dp\strutbox\box0}% % in margin number placement
\else % hides the (always) present depth
\box0
@@ -570,7 +667,9 @@
{\ifinner
%\message{[postponed footnote]}%
\global\setbox\postponedfootnotes=\vbox\bgroup
- \unvbox\postponedfootnotes
+ \ifvoid\postponedfootnotes\else
+ \unvbox\postponedfootnotes
+ \fi
\let\next=\gobbletwoarguments
\else
%\message{[inserted footnote]}%
@@ -609,14 +708,33 @@
\fi
\fi}
+% \def\flushfootnotes%
+% {\ifinpagebody \else
+% \ifinner \else
+% \ifendnotes \else
+% \ifvoid\postponedfootnotes \else
+% %\ifvmode % less interference, but also less secure
+% \doflushfootnotes
+% %\fi
+% \fi
+% \fi
+% \fi
+% \fi}
+%
+% more efficient
+
\def\flushfootnotes%
- {\ifinpagebody \else \ifinner \else
- \ifendnotes \else \ifvoid\postponedfootnotes \else
- %\ifvmode % less interference, but also less secure
- \doflushfootnotes
- %\fi
- \fi\fi
- \fi\fi}
+ {\ifvoid\postponedfootnotes \else
+ \ifinner \else
+ \ifendnotes \else
+ \ifinpagebody \else
+ %\ifvmode % less interference, but also less secure
+ \doflushfootnotes
+ %\fi
+ \fi
+ \fi
+ \fi
+ \fi}
%D This is a nasty and new secondary footnote flusher. It
%D can be hooked into \type {\everypar} like:
@@ -625,8 +743,11 @@
%D \appendtoks \synchronizefootnotes \to \everypar
%D \stoptypen
-\def\synchronizefootnotes%
- {\ifvoid\footins\else\insert\footins{\unvbox\footins}\fi}
+\def\dosynchronizefootnotes%
+ {\insert\footins{\unvbox\footins}}
+
+\def\synchronizefootnotes% indirect because of everypar
+ {\ifvoid\footins\else\dosynchronizefootnotes\fi}
\def\placefootnotesintext#1%
{\ifdim\ht#1>\zeropoint
@@ -670,10 +791,21 @@
%D \setupfootnotes[location={text,none}]
%D \stoptypen
+%\def\placefootnotesasnone#1% is grouped already
+% {\ifdim\ht#1>\zeropoint
+% \@@vnvoor
+% \setfootnotebodyfont \unvbox#1\endgraf
+% \@@vnna
+% \fi}
+
\def\placefootnotesasnone#1% is grouped already
{\ifdim\ht#1>\zeropoint
\@@vnvoor
- \setfootnotebodyfont \unvbox#1\endgraf
+ \setfootnotebodyfont
+ \startpopfootnotes % make sure that fake height is killed
+ \unvbox#1\endgraf
+ \stoppopfootnotes
+ \setbox0=\lastbox \ifvbox0 \unvbox0\else\box0\fi % enable columns
\@@vnna
\fi}
@@ -694,12 +826,14 @@
{\def\localfootinsert##1% was \gdef, but never reset!
{%\message{[local footnote]}%
\global\setbox\localpostponedfootnotes=\vbox\bgroup
- \unvbox\localpostponedfootnotes
+ \ifvoid\localpostponedfootnotes \else
+ \unvbox\localpostponedfootnotes
+ \fi
\let\next}}
\def\dostartlocalfootnotes[#1]%
- {\let\autopostponefootnotes=\postponefootnotes
- \let\postponefootnotes=\collectlocalfootnotes
+ {\let\autopostponefootnotes\postponefootnotes
+ \let\postponefootnotes\collectlocalfootnotes
\def\defaultfootnotewidth%
{\ifdim\hsize<\zetbreedte\hsize\else\zetbreedte\fi}%
\setupfootnotes[#1]%
@@ -713,13 +847,17 @@
\def\stoplocalfootnotes%
{\restorenumber[\v!voetnoot]%
- \egroup}
+ \egroup
+ \setupfootnotes\relax} % really needed, else wrong main settings
\def\doplacelocalfootnotes[#1]%
{\bgroup
\setupfootnotes[#1]%
- \placefootnotesintext\localpostponedfootnotes
- \egroup}
+ \ExpandBothAfter\doifinsetelse{\v!geen}{\@@vnplaats}
+ {\placefootnotesasnone\localpostponedfootnotes}%
+ {\placefootnotesintext\localpostponedfootnotes}%
+ \egroup
+ \setupfootnotes\relax}
\def\placelocalfootnotes%
{\dosingleempty\doplacelocalfootnotes}
@@ -846,8 +984,7 @@
\c!breedte=\defaultfootnotewidth,
\c!hoogte=\teksthoogte,
\c!nummercommando=\high,
+ \c!scheider=\@@koscheider,
\c!n=1]
-\protect
-
-\endinput
+\protect \endinput