summaryrefslogtreecommitdiff
path: root/tex/context/base/strc-ref.mkvi
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/strc-ref.mkvi')
-rw-r--r--tex/context/base/strc-ref.mkvi82
1 files changed, 29 insertions, 53 deletions
diff --git a/tex/context/base/strc-ref.mkvi b/tex/context/base/strc-ref.mkvi
index 715459172..3702531cf 100644
--- a/tex/context/base/strc-ref.mkvi
+++ b/tex/context/base/strc-ref.mkvi
@@ -118,6 +118,8 @@
\unexpanded\def\reference {\dosingleargument\strc_references_full_reference} % never forgotten
\unexpanded\def\setreference {\dodoubleargument\strc_references_set_reference } %
+% maybe: \let\reference\textreference
+
%D These are implemented in a low level form as:
\unexpanded\def\strc_references_text_reference [#labels]{\strc_references_set_named_reference\s!text{#labels}{}}
@@ -1080,12 +1082,6 @@
\fi
\endgroup}
-% \def\strc_references_by_reference_page_state#unknown#before#current#after% obsolete
-% {\ifcase\referencepagestate#unknown\or#current\or#before\or#after\or#before\or#after\else#unknown\fi}
-%
-% \def\strc_references_by_reference_page_state#unknown#same#previous#next#above#below% not needed
-% {\ifcase\referencepagestate#unknown\or#same\or#previous\or#next\or#above\or#below\else#unknown\fi}
-
\unexpanded\def\doifcheckedpagestate#label% #preceding#backward#current#foreward#following#otherwise%
{\doifreferencefoundelse{#label}\strc_references_handle_page_state_yes\strc_references_handle_page_state_nop}
@@ -1111,74 +1107,54 @@
\symbol[\ifcase\referencepagedetail\v!somewhere\or\v!nowhere\or\v!previous\or\v!next\or\v!previous\or\v!next\else\v!somewhere\fi]}%
\egroup}
-% \unexpanded\def\somewhere#backward#foreward#dummy[#label]% #dummy gobbles space around #foreward
-% {\doifreferencefoundelse{#label}%
-% {\markreferencepage
-% \ifcase\referencepagedetail
-% #label\or % unknown
-% \or % same
-% \goto{#backward}[#label]\or % previous
-% \goto{#foreward}[#label]\or % next
-% \goto{#backward}[#label]\or % above
-% \goto{#foreward}[#label]\else % below
-% #label\fi}%
-% {[#label]}}
+%D Hereafter the \type {\ignorespaces} binds the state node to next character (more likely
+%D than a preceding one) and one can always add an explicit space.
\unexpanded\def\somewhere#backward#foreward#dummy[#label]% #dummy gobbles space around #foreward
{\doifcheckedpagestate{#label}%
{\goto{#backward}[#label]}%
{\goto{#backward}[#label]}%
- {}%
+ {\ignorespaces}%
{\goto{#foreward}[#label]}%
{\goto{#foreward}[#label]}%
{#label}}%
-% \unexpanded\def\someplace#preceding#backward#current#foreward#following#dummy[#label]% #dummy gobbles space around #foreward
-% {\doifreferencefoundelse{#label}%
-% {\markreferencepage
-% \ifcase\referencepagedetail
-% #label\or % unknown
-% \doifsomething {#current}{\goto {#current}[#label]}\or % same
-% \doifsomething{#preceding}{\goto{#preceding}[#label]}\or % previous
-% \doifsomething{#following}{\goto{#following}[#label]}\or % next
-% \doifsomething {#backward}{\goto {#backward}[#label]}\or % above
-% \doifsomething {#foreward}{\goto {#foreward}[#label]}\else % below
-% #label\fi}%
-% {[#label]}}
-
\unexpanded\def\someplace#preceding#backward#current#foreward#following#dummy[#label]% #dummy gobbles space around #foreward
{\doifcheckedpagestate{#label}%
- {\doifsomething{#preceding}{\goto{#preceding}[#label]}}%
- {\doifsomething {#backward}{\goto {#backward}[#label]}}%
- {\doifsomething {#current}{\goto {#current}[#label]}}%
- {\doifsomething {#foreward}{\goto {#foreward}[#label]}}%
- {\doifsomething{#following}{\goto{#following}[#label]}}%
+ {\doifelsenothing{#preceding}{\goto{#preceding}[#label]}\ignorespaces}%
+ {\doifelsenothing {#backward}{\goto {#backward}[#label]}\ignorespaces}%
+ {\doifelsenothing {#current}{\goto {#current}[#label]}\ignorespaces}%
+ {\doifelsenothing {#foreward}{\goto {#foreward}[#label]}\ignorespaces}%
+ {\doifelsenothing{#following}{\goto{#following}[#label]}\ignorespaces}%
{#label}}
-% \unexpanded\def\atpage[#label]% todo
-% {\doifreferencefoundelse{#label}% kind of inefficient as \goto also analyzes
-% {\markreferencepage
-% \ifcase\referencepagedetail
-% \goto{\labeltexts\v!page\dummyreference}[#label]\or % unknown
-% \or % same
-% \goto{\labeltext \v!precedingpage }[#label]\or % previous
-% \goto{\labeltext \v!followingpage }[#label]\or % next
-% \goto{\labeltext \v!hencefore }[#label]\or % above
-% \goto{\labeltext \v!hereafter }[#label]\else % below
-% \goto{\labeltexts\v!page\dummyreference}[#label]\fi}%
-% {[#label]}}
-
\unexpanded\def\atpage[#label]% todo
{\doifcheckedpagestate{#label}%
{\goto{\labeltext \v!precedingpage }[#label]}%
{\goto{\labeltext \v!hencefore }[#label]}%
- {}%
+ {\ignorespaces}%
{\goto{\labeltext \v!hereafter }[#label]}%
{\goto{\labeltext \v!followingpage }[#label]}%
{\goto{\labeltexts\v!page\dummyreference}[#label]}}
-%D The other alternatives just conform their names: only the
-%D label, only the text, or the label and the text.
+% Someone requested this but in retrospect didn't need it so we keep it as example.
+% Beware: a node is injected which is why we add ignorespaces!
+%
+% \unexpanded\def\strc_references_conditional#action#text[#condition]#dummy[#label]%
+% {\doifcheckedpagestate{#label}%
+% {\doifelse{#condition}\v!precedingpage{#action{#text}[#label]}\ignorespaces}%
+% {\doifelse{#condition}\v!hencefore {#action{#text}[#label]}\ignorespaces}%
+% {\doifelse{#condition}\v!current {#action{#text}[#label]}\ignorespaces}%
+% {\doifelse{#condition}\v!hereafter {#action{#text}[#label]}\ignorespaces}%
+% {\doifelse{#condition}\v!followingpage{#action{#text}[#label]}\ignorespaces}%
+% {#label}}
+%
+% \unexpanded\def\conditionalat {\strc_references_conditional\at}
+% \unexpanded\def\conditionalin {\strc_references_conditional\in}
+% \unexpanded\def\conditionalabout{\strc_references_conditional\about}
+
+%D The other alternatives just conform their names: only the label, only the text, or the
+%D label and the text.
% \dounknownreference -> \dummyreference