summaryrefslogtreecommitdiff
path: root/tex/context/base/strc-not.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/strc-not.mkiv')
-rw-r--r--tex/context/base/strc-not.mkiv63
1 files changed, 36 insertions, 27 deletions
diff --git a/tex/context/base/strc-not.mkiv b/tex/context/base/strc-not.mkiv
index a9fbd670b..f309fdc29 100644
--- a/tex/context/base/strc-not.mkiv
+++ b/tex/context/base/strc-not.mkiv
@@ -338,33 +338,46 @@
\fi
\dochecknote}
-\appendtoks
- \setvalue{\??vn\c!rule:c:\currentnote}{\normalnoterule}% hm
- \letvalue{\??vn\c!rule:a:\currentnote}\v!left
-\to \everysetupnote
+\def\currentnoterulecommand{\csname\??vn\c!rule:c:\currentnote\endcsname}
+\def\currentnoterulealign {\csname\??vn\c!rule:a:\currentnote\endcsname}
+
+\def\currentnoterulecommandnormal {\normalnoterule} % no let as it can be changed afterwards
+\def\currentnoterulecommandunknown{\noteparameter\c!rule}
+
+\def\letcurrentnoterulecommand{\expandafter\let\csname\??vn\c!rule:c:\currentnote\endcsname}
\appendtoks
- \expanded{\processallactionsinset
- [\noteparameter\c!rule]}
- [ \v!on=>\setvalue{\??vn\c!rule:c:\currentnote}{\normalnoterule}, % no let as it can be changed afterwards
- \v!normal=>\setvalue{\??vn\c!rule:c:\currentnote}{\normalnoterule},
- \v!left=>\setvalue{\??vn\c!rule:a:\currentnote}{l2r},
- \v!right=>\setvalue{\??vn\c!rule:a:\currentnote}{r2l},
- \v!off=>\letvalue{\??vn\c!rule:c:\currentnote}\relax,
- \s!default=>\letvalue{\??vn\c!rule:c:\currentnote}\relax,
- \s!unknown=>\setvalue{\??vn\c!rule:c:\currentnote}{\noteparameter\c!rule}]%
+ \letvalue{\??vn\c!rule:c:\currentnote}\currentnoterulecommandnormal
+ \letvalue{\??vn\c!rule:a:\currentnote}\lefttoright
\to \everysetupnote
\appendtoks
- \processaction % todo (why doesnt it work for a global setting)
- [\noteparameter\c!split]
- [ \v!tolerant=>\notepenalty\zeropoint,
- \v!strict=>\notepenalty9999,
- \v!verystrict=>\notepenalty\maxdimen,
- \s!default=>\notepenalty\zeropoint,
- \s!unknown=>\notepenalty\commalistelement]%
+ \processallactionsinset[\noteparameter\c!rule]
+ [ \v!on=>\letcurrentnoterulecommand\currentnoterulecommandnormal,
+ \v!normal=>\letcurrentnoterulecommand\currentnoterulecommandnormal,
+ \v!left=>\letcurrentnoterulecommand\lefttoright,
+ \v!right=>\letcurrentnoterulecommand\righttoleft,
+ \v!off=>\letcurrentnoterulecommand\relax,
+ \s!default=>\letcurrentnoterulecommand\relax,
+ \s!unknown=>\letcurrentnoterulecommand\currentnoterulecommandunknown]%
\to \everysetupnote
+\def\currentnotepenalty
+ {\ifcsname\??vn\c!split:p:\noteparameter\c!split\endcsname
+ \csname\??vn\c!split:p:\noteparameter\c!split\endcsname
+ \else
+ \numexpr\noteparameter\c!split\relax
+ \fi}
+
+\setnewconstant\notepenaltytolerant \zerocount
+\setnewconstant\notepenaltystrict 9999
+\setnewconstant\notepenaltyverystrict\maxdimen
+
+\letvalue{\??vn\c!split:p:\v!tolerant }\notepenaltytolerant
+\letvalue{\??vn\c!split:p:\v!strict }\notepenaltystrict
+\letvalue{\??vn\c!split:p:\v!verystrict}\notepenaltyverystrict
+\letvalue{\??vn\c!split:p:\empty }\notepenaltytolerant
+
\appendtoks
\edef\currentnotewidth{\noteparameter\c!width}%
\ifx\currentnotewidth\empty
@@ -531,9 +544,8 @@
\unexpanded\def\placenoterule
{\bgroup
- \setupalign[\getvalue{\??vn\c!rule:a:\currentnote}]%
- \righttoleft
- \getvalue{\??vn\c!rule:c:\currentnote}%
+ \currentnoterulealign
+ \currentnoterulecommand
\par
\egroup}
@@ -855,9 +867,6 @@
\let\stoppushnote \relax
\newsignal\notesignal
-\newcount \notepenalty
-
-\notepenalty=0 % needed in order to split in otrset
\newconditional\processingnote
\newconditional\postponednote
@@ -875,7 +884,7 @@
\appendtoks
\doif{\noteparameter\c!scope}\v!page{\floatingpenalty\maxdimen}% experiment
- \penalty\notepenalty
+ \penalty\currentnotepenalty
\forgetall
\setnotebodyfont
\redoconvertfont % to undo \undo calls in in headings etc