%% This is part of the OpTeX project, see http://petr.olsak.net/optex \_codedecl\_hisyntaxtex {Syntax highlighting for TeX sources <2020-04-03>} \_newtoks\_hisyntaxtex \_newtoks\_hicolorstex \_global\_hicolorstex={% colors in TeX codes \_hicolor S \Blue % control sequences \_hicolor B \Magenta % {, }, $ \_hicolor C \Green % comments } \_global\_hisyntaxtex={ \_the\_hicolorstex \_replthis{\_string\%}{\y{_createcs}{\_csstring\%}} \_replfromto{\_csstring\%}{^^J}{\x C{\_csstring\%#1}^^J} \_replthis{\_string\\}{\y{_createcs}{\_csstring\\}} \_replthis{\_string\{}{\y{_createcs}{\_csstring\{}} \_replthis{\_string\}}{\y{_createcs}{\_csstring\}}} \_replthis{\_string\$}{\y{_createcs}{\_csstring\$}} \_replthis{\_csstring\\}{\y{_createcs}} \_replthis{\_csstring\{}{\x B{\_csstring\{}} \_replthis{\_csstring\}}{\x B{\_csstring\}}} \_replthis{\_csstring\$}{\x B{\_csstring\$}} } \_gdef\_createcs#1{\_def\_csletters{#1}% \_ifcat a\_noexpand#1\_afterfi{\_futurelet\_next\_createcsA}% \_else \_ea\_createcsF \_fi } \_gdef\_createcsA{\_ifcat a\_noexpand\_next \_ea\_createcsB \_else \_ea\_createcsF \_fi} \_gdef\_createcsB#1{\_addto\_csletters{#1}\_futurelet\_next\_createcsA} \_gdef\_createcsF{\z S{\_csstring\\\_csletters}} \_gdef\_createbb{\_ea\_createcs\_csstring\\} \_endcode %------------------------------------------------ The `\_createcs` reads next tokens as the tokenizer does it until the name of a control sequence is read. It is saved to the `\_csletters` macro and the macro \_createcsF prints it.