catc-def.mkxl /size: 13 Kb    last modification: 2023-12-21 09:44
1%D \module
2%D   [       file=catc-def,
3%D        version=2006.09.18,
4%D          title=\CONTEXT\ Catcode Macros,
5%D       subtitle=Default Tables,
6%D         author=Hans Hagen,
7%D           date=\currentdate,
8%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
9%C
10%C This module is part of the \CONTEXT\ macro||package and is
11%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
12%C details.
13
14%D Contrary to \MKIV\ we define the catcode tables in one file. The original split
15%D was a prelude to a split approach where context would run on top of a basic layer
16%D (so that we could make smaller alternative formats) but that idea (from the early
17%D days of \LUATEX) was dropped when I realized that there is not common ground to
18%D cover between formats. It is simply not worth the trouble.
19
20%D Maybe we also need a copy of \type {\ctxcatcodes} so that we can always go back
21%D to the unpatched regime.
22
23\ifdefined\nilcatcodes \else \newcatcodetable \nilcatcodes \fi
24\ifdefined\texcatcodes \else \newcatcodetable \texcatcodes \fi
25\ifdefined\luacatcodes \else \newcatcodetable \luacatcodes \fi
26\ifdefined\notcatcodes \else \newcatcodetable \notcatcodes \fi
27\ifdefined\rlncatcodes \else \newcatcodetable \rlncatcodes \fi % readline, not for context
28\ifdefined\vrbcatcodes \else \newcatcodetable \vrbcatcodes \fi
29\ifdefined\prtcatcodes \else \newcatcodetable \prtcatcodes \fi
30\ifdefined\ctxcatcodes \else \newcatcodetable \ctxcatcodes \fi
31\ifdefined\txtcatcodes \else \newcatcodetable \txtcatcodes \fi
32\ifdefined\tpacatcodes \else \newcatcodetable \tpacatcodes \fi % verbatim: { }
33\ifdefined\tpbcatcodes \else \newcatcodetable \tpbcatcodes \fi % verbatim: < >
34\ifdefined\ctdcatcodes \else \newcatcodetable \ctdcatcodes \fi % context definitions
35\ifdefined\hshcatcodes \else \newcatcodetable \hshcatcodes \fi
36
37\startcatcodetable \hshcatcodes
38    \catcode\tabasciicode         \othercatcode
39    \catcode\endoflineasciicode   \othercatcode
40    \catcode\formfeedasciicode    \othercatcode
41    \catcode\spaceasciicode       \othercatcode
42    \catcode\endoffileasciicode   \ignorecatcode
43    \catcode\circumflexasciicode  \othercatcode
44    \catcode\underscoreasciicode  \othercatcode
45    \catcode\ampersandasciicode   \othercatcode
46    \catcode\tildeasciicode       \othercatcode
47    \catcode\hashasciicode        \parametercatcode
48    \catcode\dollarasciicode      \othercatcode
49    \catcode\commentasciicode     \othercatcode
50    \catcode\lessthanasciicode    \othercatcode
51    \catcode\morethanasciicode    \othercatcode
52    \catcode\leftbraceasciicode   \othercatcode
53    \catcode\rightbraceasciicode  \othercatcode
54    \catcode\doublequoteasciicode \othercatcode
55    \catcode\singlequoteasciicode \othercatcode
56    \catcode\forwardslashasciicode\othercatcode
57    \catcode\backslashasciicode   \othercatcode
58    \catcode\barasciicode         \othercatcode
59\stopcatcodetable
60
61\startcatcodetable \nilcatcodes
62    \catcode\tabasciicode       \spacecatcode
63    \catcode\endoflineasciicode \endoflinecatcode
64    \catcode\formfeedasciicode  \endoflinecatcode
65    \catcode\spaceasciicode     \spacecatcode
66    \catcode\endoffileasciicode \ignorecatcode
67\stopcatcodetable
68
69\startcatcodetable \texcatcodes
70    \catcode\tabasciicode       \spacecatcode
71    \catcode\endoflineasciicode \endoflinecatcode
72    \catcode\formfeedasciicode  \endoflinecatcode
73    \catcode\spaceasciicode     \spacecatcode
74    \catcode\endoffileasciicode \ignorecatcode
75    \catcode\circumflexasciicode\superscriptcatcode
76    \catcode\underscoreasciicode\subscriptcatcode
77    \catcode\ampersandasciicode \alignmentcatcode
78    \catcode\backslashasciicode \escapecatcode
79    \catcode\leftbraceasciicode \begingroupcatcode
80    \catcode\rightbraceasciicode\endgroupcatcode
81    \catcode\dollarasciicode    \mathshiftcatcode
82    \catcode\hashasciicode      \parametercatcode
83    \catcode\commentasciicode   \commentcatcode
84\stopcatcodetable
85
86\startcatcodetable \luacatcodes
87    \catcode\tabasciicode       \othercatcode
88    \catcode\endoflineasciicode \othercatcode
89    \catcode\formfeedasciicode  \othercatcode
90    \catcode\spaceasciicode     \othercatcode
91    \catcode\endoffileasciicode \ignorecatcode
92    \catcode\circumflexasciicode\othercatcode
93    \catcode\underscoreasciicode\othercatcode
94    \catcode\ampersandasciicode \othercatcode
95    \catcode\backslashasciicode \escapecatcode
96    \catcode\commentasciicode   \othercatcode
97    \catcode\hashasciicode      \othercatcode
98    \catcode\barasciicode       \othercatcode
99    \catcode\leftbraceasciicode \othercatcode
100    \catcode\rightbraceasciicode\othercatcode
101    \catcode\tildeasciicode     \othercatcode
102    \catcode\dollarasciicode    \othercatcode
103\stopcatcodetable
104
105\startcatcodetable \notcatcodes % probably less needed
106    \catcode\tabasciicode         \spacecatcode
107    \catcode\endoflineasciicode   \endoflinecatcode
108    \catcode\formfeedasciicode    \endoflinecatcode
109    \catcode\spaceasciicode       \spacecatcode
110    \catcode\endoffileasciicode   \ignorecatcode
111    \catcode\circumflexasciicode  \othercatcode
112    \catcode\underscoreasciicode  \othercatcode
113    \catcode\ampersandasciicode   \othercatcode
114    \catcode\tildeasciicode       \othercatcode
115    \catcode\hashasciicode        \othercatcode
116    \catcode\dollarasciicode      \othercatcode
117    \catcode\commentasciicode     \othercatcode
118    \catcode\lessthanasciicode    \othercatcode
119    \catcode\morethanasciicode    \othercatcode
120    \catcode\leftbraceasciicode   \othercatcode
121    \catcode\rightbraceasciicode  \othercatcode
122    \catcode\doublequoteasciicode \othercatcode
123    \catcode\singlequoteasciicode \othercatcode
124    \catcode\forwardslashasciicode\othercatcode
125    \catcode\backslashasciicode   \othercatcode
126    \catcode\barasciicode         \othercatcode
127\stopcatcodetable
128
129\startcatcodetable \rlncatcodes
130    \catcode\tabasciicode         \othercatcode
131    \catcode\endoflineasciicode   \othercatcode
132    \catcode\formfeedasciicode    \othercatcode
133    \catcode\spaceasciicode       \spacecatcode % maybe we also need a vector with space being other
134    \catcode\endoffileasciicode   \othercatcode
135    \catcode\circumflexasciicode  \othercatcode
136    \catcode\underscoreasciicode  \othercatcode
137    \catcode\ampersandasciicode   \othercatcode
138    \catcode\tildeasciicode       \othercatcode
139    \catcode\hashasciicode        \othercatcode
140    \catcode\dollarasciicode      \othercatcode
141    \catcode\commentasciicode     \othercatcode
142    \catcode\lessthanasciicode    \othercatcode
143    \catcode\morethanasciicode    \othercatcode
144    \catcode\leftbraceasciicode   \othercatcode
145    \catcode\rightbraceasciicode  \othercatcode
146    \catcode\doublequoteasciicode \othercatcode
147    \catcode\singlequoteasciicode \othercatcode
148    \catcode\forwardslashasciicode\othercatcode
149    \catcode\backslashasciicode   \othercatcode
150    \catcode\barasciicode         \othercatcode
151\stopcatcodetable
152
153\startcatcodetable \vrbcatcodes % probably less needed
154    \catcode\tabasciicode      \othercatcode
155    \catcode\endoflineasciicode\othercatcode
156    \catcode\formfeedasciicode \othercatcode
157    \catcode\spaceasciicode    \othercatcode
158    \catcode\endoffileasciicode\othercatcode
159\stopcatcodetable
160
161\startcatcodetable \prtcatcodes
162    \catcode\tabasciicode            \spacecatcode
163    \catcode\endoflineasciicode      \endoflinecatcode
164    \catcode\formfeedasciicode       \endoflinecatcode
165    \catcode\spaceasciicode          \spacecatcode
166    \catcode\endoffileasciicode      \ignorecatcode
167    \catcode\circumflexasciicode     \superscriptcatcode
168    %catcode\underscoreasciicode     \subscriptcatcode
169    \catcode\underscoreasciicode     \lettercatcode
170    \catcode\ampersandasciicode      \alignmentcatcode
171    \catcode\backslashasciicode      \escapecatcode
172    \catcode\leftbraceasciicode      \begingroupcatcode
173    \catcode\rightbraceasciicode     \endgroupcatcode
174    \catcode\dollarasciicode         \mathshiftcatcode
175    \catcode\hashasciicode           \parametercatcode
176    \catcode\commentasciicode        \commentcatcode
177    \catcode\atsignasciicode         \lettercatcode
178    \catcode\exclamationmarkasciicode\lettercatcode
179    \catcode\questionmarkasciicode   \lettercatcode
180    \catcode\tildeasciicode          \activecatcode
181    \catcode\barasciicode            \activecatcode
182\stopcatcodetable
183
184\startcatcodetable \ctxcatcodes
185    \catcode\tabasciicode       \spacecatcode
186    \catcode\endoflineasciicode \endoflinecatcode
187    \catcode\formfeedasciicode  \endoflinecatcode
188    \catcode\spaceasciicode     \spacecatcode
189    \catcode\endoffileasciicode \ignorecatcode
190  % \catcode\circumflexasciicode\superscriptcatcode
191  % \catcode\underscoreasciicode\subscriptcatcode
192  % \catcode\ampersandasciicode \alignmentcatcode
193    \catcode\underscoreasciicode\othercatcode
194    \catcode\circumflexasciicode\othercatcode
195    \catcode\ampersandasciicode \othercatcode
196    \catcode\backslashasciicode \escapecatcode
197    \catcode\leftbraceasciicode \begingroupcatcode
198    \catcode\rightbraceasciicode\endgroupcatcode
199    \catcode\dollarasciicode    \mathshiftcatcode
200    \catcode\hashasciicode      \parametercatcode
201    \catcode\commentasciicode   \commentcatcode
202    \catcode\tildeasciicode     \activecatcode
203    \catcode\barasciicode       \activecatcode
204\stopcatcodetable
205
206\startcatcodetable \tpacatcodes
207    \catcode\tabasciicode       \othercatcode
208    \catcode\endoflineasciicode \othercatcode
209    \catcode\formfeedasciicode  \othercatcode
210    \catcode\spaceasciicode     \othercatcode
211    \catcode\endoffileasciicode \othercatcode
212    \catcode\leftbraceasciicode \begingroupcatcode
213    \catcode\rightbraceasciicode\endgroupcatcode
214\stopcatcodetable
215
216\startcatcodetable \tpbcatcodes
217    \catcode\tabasciicode       \othercatcode
218    \catcode\endoflineasciicode \othercatcode
219    \catcode\formfeedasciicode  \othercatcode
220    \catcode\spaceasciicode     \othercatcode
221    \catcode\endoffileasciicode \othercatcode
222    \catcode\lessthanasciicode  \begingroupcatcode
223    \catcode\morethanasciicode  \endgroupcatcode
224\stopcatcodetable
225
226\setnewconstant \doublecommentsignal "10FF25 %% < 110000 (last valid range)
227
228\startcatcodetable \txtcatcodes
229    \catcode\tabasciicode       \spacecatcode
230    \catcode\endoflineasciicode \endoflinecatcode
231    \catcode\formfeedasciicode  \endoflinecatcode
232    \catcode\spaceasciicode     \spacecatcode
233    \catcode\endoffileasciicode \ignorecatcode
234    \catcode\backslashasciicode \escapecatcode
235    \catcode\leftbraceasciicode \begingroupcatcode
236    \catcode\rightbraceasciicode\endgroupcatcode
237    \catcode\doublecommentsignal\commentcatcode
238\stopcatcodetable
239
240\startcatcodetable \ctdcatcodes
241    \catcode\tabasciicode            \ignorecatcode
242    \catcode\endoflineasciicode      \ignorecatcode
243    \catcode\formfeedasciicode       \ignorecatcode
244    \catcode\spaceasciicode          \ignorecatcode
245    \catcode\endoffileasciicode      \ignorecatcode
246    \catcode\circumflexasciicode     \superscriptcatcode % candidate
247    \catcode\underscoreasciicode     \lettercatcode
248    \catcode\ampersandasciicode      \alignmentcatcode
249  % \catcode\colonasciicode          \lettercatcode      % candidate
250    \catcode\backslashasciicode      \escapecatcode
251    \catcode\leftbraceasciicode      \begingroupcatcode
252    \catcode\rightbraceasciicode     \endgroupcatcode
253    \catcode\dollarasciicode         \mathshiftcatcode
254    \catcode\hashasciicode           \parametercatcode
255    \catcode\commentasciicode        \commentcatcode
256    \catcode\atsignasciicode         \lettercatcode
257    \catcode\exclamationmarkasciicode\lettercatcode
258    \catcode\questionmarkasciicode   \lettercatcode
259    \catcode\tildeasciicode          \activecatcode
260    \catcode\barasciicode            \activecatcode
261\stopcatcodetable
262
263%D From now on we can use the protection mechanisms.
264
265\permanent\protected\def\unprotect                  {\pushcatcodetable\catcodetable\prtcatcodes}
266\permanent\protected\def\protect                    {\popcatcodetable}
267
268\permanent\protected\def\starttexcode               {\pushcatcodetable\catcodetable\prtcatcodes}
269\permanent\protected\def\stoptexcode                {\popcatcodetable}
270
271\permanent\protected\def\startcontextcode           {\pushcatcodetable\catcodetable\ctxcatcodes}
272\permanent\protected\def\stopcontextcode            {\popcatcodetable}
273
274\permanent\protected\def\startcontextdefinitioncode {\pushcatcodetable\catcodetable\ctdcatcodes}
275\permanent\protected\def\stopcontextdefinitioncode  {\popcatcodetable}
276
277%D We have a few active characters (left):
278
279\letcatcodecommand \ctxcatcodes \barasciicode   \relax
280\letcatcodecommand \ctxcatcodes \tildeasciicode \relax
281
282% \letcatcodecommand \prtcatcodes \barasciicode   \relax
283% \letcatcodecommand \prtcatcodes \tildeasciicode \relax
284
285%D Because some characters have a special meaning, we provide shortcuts to their
286%D character representation. Some will be overloaded (which might change).
287
288\permanent\chardef \^ = \circumflexasciicode
289\permanent\chardef \_ = \underscoreasciicode
290\permanent\chardef \& = \ampersandasciicode
291\permanent\chardef \% = \commentasciicode
292\permanent\chardef \# = \hashasciicode
293\permanent\chardef \$ = \dollarasciicode
294\permanent\chardef \{ = \leftbraceasciicode
295\permanent\chardef \} = \rightbraceasciicode
296\permanent\chardef \\ = \backslashasciicode
297\permanent\chardef \| = \barasciicode
298
299\pushoverloadmode
300                \catcodetable       \ctxcatcodes
301    \aliased\let\defaultcatcodetable\ctxcatcodes
302\popoverloadmode
303
304\amcode \circumflexasciicode \superscriptcatcode
305\amcode \underscoreasciicode \subscriptcatcode
306\amcode \barasciicode        \othercatcode
307\amcode \tildeasciicode      \othercatcode
308
309% \amcode "002C \activecatcode % comma
310% \amcode "002E \activecatcode % period
311% \amcode "003A \activecatcode % colon
312% \amcode "003B \activecatcode % semicolon
313
314\endinput
315