summaryrefslogtreecommitdiff
path: root/tex/context/base/core-ref.mkiv
blob: 56ef77b37c7061152758e81104856e524f9f9b55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
%D \module
%D   [       file=core-ref,
%D        version=2008.10.14,
%D          title=\CONTEXT\ Core Macros,
%D       subtitle=Cross Referencing,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

\let\mainreference\gobblefivearguments % catch mkii tuo stuff

\registerctxluafile{core-ref}{1.001}

\unprotect

% later we will use the lua tables directly (first a hack)
%
% \the\everyreference % we're grouped anyway

\newcount\crossreferencenumber \crossreferencenumber\plusone

\def\dowithjobreference#1%
  {\global\advance\crossreferencenumber\plusone
   \doiffirstreferenceoccurance{#1}{\thisisdestination{\referenceprefix#1}}%
   \referenceinfo>{#1}}

% \def\dowithjobreference#1{}

\def\dosetjobreference#1#2#3#4#5%
  {\ifcsname\r!cross\fileprefix#1#2\endcsname
     \ifcase0#4\else
       \showmessage\m!references2{[#1][#2],#4 (\currentutilityfilename)}%
     \fi
   \else
     \ifcase\autocrossfilereferences
       \setglobalcrossreference{#1#2}{#3}{#4}{#5}%
     \or
       \setglobalcrossreference{#1#2}{#3}{#4}{#5}%
       \ifcsname\r!cross#1#2\endcsname
         \showmessage\m!references2{[#1][#2],#4 (auto \currentutilityfilename)}%
       \else
         \expanded{\definereference[#1#2][\fileprefix#1#2]}%
       \fi
     \or
       \ifcsname\r!cross#1#2\endcsname
         \showmessage\m!references2{[#1][#2],#4 (auto \currentutilityfilename)}%
       \else
         \expanded{\definereference[#1#2][\noexpand\v!page(\fileprefix#4)]}%
       \fi
     \fi
   \fi}

\def\rawreference#1#2#3%
  {\ifreferencing
     \doifsomething{#2}
       {\bgroup
        \the\everyreference
        \makesectionformat
        \expanded{\ctxlua{jobreferences.with("#2")}}%
        \expanded{\ctxlatelua{jobreferences.set(
          "\referenceprefix",
          "#2",
          "\sectionformat\sectionseparator\sectionseparator\noexpand\pagenumber",
          "\noexpand\the\realpageno",
          \!!bs#3\!!es
        )}}%
        \egroup}%
   \fi}

\def\rawpagereference#1#2%
  {\ifreferencing
     \doifsomething{#2}
       {\bgroup
        \the\everyreference
        \makesectionformat
        \expanded{\ctxlua{jobreferences.with("#2")}}%
        \expanded{\ctxlatelua{jobreferences.set(
          "\referenceprefix",
          "#2",
          "\sectionformat\sectionseparator\sectionseparator\noexpand\pagenumber",
          "\noexpand\the\realpageno",
          ""
        )}}%
        \egroup}%
   \fi}

\def\rawtextreference#1#2#3%
  {\ifreferencing
     \doifsomething{#2}
       {\bgroup
        \the\everyreference
        \expanded{\ctxlua{jobreferences.with("#2")}}%
        \expanded{\ctxlatelua{jobreferences.set(
          "\referenceprefix",
          "#2",
          "",
          "\noexpand\the\realpageno",
          \!!bs#3\!!es
        )}}%
        \egroup}%
   \fi}

\protect