summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/optex/catcodes.opm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/luatex/optex/catcodes.opm')
-rw-r--r--Master/texmf-dist/tex/luatex/optex/catcodes.opm137
1 files changed, 0 insertions, 137 deletions
diff --git a/Master/texmf-dist/tex/luatex/optex/catcodes.opm b/Master/texmf-dist/tex/luatex/optex/catcodes.opm
deleted file mode 100644
index d675e482bed..00000000000
--- a/Master/texmf-dist/tex/luatex/optex/catcodes.opm
+++ /dev/null
@@ -1,137 +0,0 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \setcatcode {Initialization category codes <2020-01-23>}
-
-\_def \_optexcatcodes {%
- \_setcatcode `\\=0 % backlslash starts control sequences
- \_setcatcode `\{=1 % left brace is begin-group character
- \_setcatcode `\}=2 % right brace is end-group character
- \_setcatcode `\$=3 % dollar sign is math shift
- \_setcatcode `\&=4 % ampersand is alignment tab
- \_setcatcode `\^^M=5 % ascii return is end-line
- \_setcatcode `\#=6 % hash mark is macro parameter character
- \_setcatcode `\^=7
- \_setcatcode `\^^K=7 % circumflex and uparrow are for superscripts
- \_setcatcode `\^^A=8 % downarrow is for subscripts
- \_setcatcode `\ =10 % ascii space is blank space
- \_setcatcode `\^^I=10 % ascii tab is a blank space
- \_setcatcode `\_=11 % underline can be used in control sequences
- \_setcatcode `\~=13 % tilde is active
- \_setcatcode `\%=14 % percent sign is comment character
- \_setcatcode 127=12 % normal character
-}
-\_let \_setcatcode =\catcode \_optexcatcodes % catcode initialization
-
-\_def \_normalasciicatcodes {%
- \_setcatcodes 33-34: 12
- \_setcatcodes 39-64: 12
- \_setcatcodes 65-90: 11
- \_setcatcode `\[=12
- \_setcatcode `\]=12
- \_setcatcode `\`=12
- \_setcatcodes 97-122: 11
- \_setcatcode `\|=12
- \_optexcatcodes
-}
-\_def \_setcatcodes #1-#2: #3 {%
- \_tmpnum=#1
- \_loop
- \_setcatcode \_the\_tmpnum =#3
- \_advance \_tmpnum by1
- \_unless \_ifnum \_tmpnum >#2 \_repeat
-}
-\_def \_setcatcode #1=#2 {%
- \_ifx \_setcatcode \_empty \_errmessage {Use \_noexpand\savecatcode before \_noexpand\setcatcode}\_fi
- \_unless \_ifnum \_catcode #1=#2
- \_ea \_setcatcodeA \_catcodelist \_end {#1}%
- \_catcode #1=#2
- \_fi
-}
-\_def \_setcatcodeA #1#2\_end #3{\_edef \_catcodelist{{#1}\_catcode #3=\_the\_catcode #3 #2}}
-\_def \_savecatcodes {\_edef\_catcodelist {{\_catcodelist}}}
-\_def \_restorecatcodes {\_ea\_def \_ea\_catcodelist \_catcodelist}
-\_def \_catcodelist{{}}
-
-\_chardef\_active=13 \_catcode`\~=\_active % tilde is active
-%\catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is "\outer\par", obsolete
-
-\public
- \optexcatcodes \normalasciicatcodes \setcatcodes \setcatcode
- \savecatcodes \restorecatcodes \active ;
-
-\_endcode % ----------------------------------------
-
-Basic category codes inspired by plain \TeX/ are set here. The only
-difference is underline: it can be used in control sequences in \SpTeX/, so
-its category code is 11. But plain \TeX/ sets it to 8 for subscripts. We'll
-define `_` subscript only in math mode, see `math-basics.spm`.
-
-Second differnece from plain \TeX/ is `\catcode127`, which is set to invalid
-character in plain \TeX/ but we set it as normal character.
-
-`\normalasciicatodes` sets catcodes of all ascii visible characters to its
-"normal" values used in \SpTeX/.
-
-We implement catcodes stack by three macros: `\savecatcodes`, `\setcatcode`
-and `\restorecatcodes` which bahaves with catcode values like
-`\begingroup`, `\catcode` and `\endgroup` but it does not
-open/close any \TeX/ group. You can use it for eaxample
-
-\begtt
-\savecatcodes \normalasciicatcodes \input macrofile.tex \restorecatcodes
-\endtt
-%
-and you are sure that
-
-\begitems
-* `macrofile.tex` is read with normal catodes,
-* previous catcode setting is restored after the `macrofile.tex` is read.
-\enditems
-
-The catcodes stack cannot be crossed by \TeX/ groups. But it is not
-problem to re-implement it to global setting if you want.
-
-You can use `\setcatcodes <from>-<to>: <value>` to set a range of characters.
-This macro uses `\setcatcode` repeatedly.
-
-
-\sec Implemetation details:
-
-First, we define `\_plaintexcatcodes` and use it macro with
-`\_let\_setcatcode=\catcode`. This code sets the "normal" catcodes.
-
-The main idea of catcode stack implementation is that the macro
-`\_setcatcode` does nothing if previus catcode value is the same as desired
-value. Else it saves previous value into `\_catcodelist` and sets desired
-value. Finally `\_restorecatcodes` restores values from the `\_catcodelist`.
-
-We need to support stack behavior, it means that nested pairs
-`\_savecatcodes` and `\_restorecatcodes` work well. This is a reason why the
-current value of the `\_catcodelist` looks like this:
-
-\begtt
-{data actual before last \_savecatcodes} currently generated data
-\endtt
-%
-Then `\_restorecatcodes` does
-
-\begtt
-\_def \_catcodelist {data actual before savecatcodes} apply currently generated data
-\endtt
-
-We need to apply currently generated data in reverse order. This is done by
-the macro `\setcatcodeA` (invoked by the `\setcatcode`) which inserts new
-data HERE-NEW:
-
-\begtt
-{data actual before last savecatdodes} HERE-NEW currently generated data
-\endtt
-
-One record of data is in the form `\catode char-code=previous-value`, so we
-need simply to "run" the currently generated data in order to restore
-values.
-
-Notice: the `\_codedecl` and `\_endcode` macros are redefined and explained in basic.opm
-
-
-