cssyntax v0.1.0 – Initial Release Control Sequence Syntax Readable, self-documenting command names for LaTeX package authors Overview This is the initial public release of cssyntax, a standalone LaTeX2e package that provides a syntax layer for writing structured, self-describing internal command names. By temporarily activating _, : and / as letter-category characters, it lets package authors replace cryptic flat names with hierarchically organised ones that remain readable years later. The name cssyntax stands for Control Sequence Syntax: its sole purpose is to give package code a clear, maintainable naming discipline without changing how TeX actually works. Features 1. Extended catcode syntax (\csSyntaxOn / \csSyntaxOff) - Activates _, : and / as letters (catcode 11) for the current scope. - Structured names follow the pattern \container_module_type_sub-type/description. - \csSyntaxOff restores standard catcodes (_ → 8, : → 12, / → 12). - Synonyms \csSyntaxEnabled and \csSyntaxDisabled provided for semantic clarity. 2. Readable aliases for TeX primitives (\_fun_ namespace) All commands use the \_fun_ root prefix with / and : separators. Every / command also has a : synonym (e.g. \_fun_copy:cs), created safely with \NewCommandCopy. Definition / copying: \_fun_copy/cs \_fun_define/cs \_fun_define/exp \_fun_define/global \_fun_define/global_exp \_fun_define/protected_exp Expansion: \_fun_expand/after \_fun_expand/prevent Dynamic names: \_fun_build/cs \_fun_build/def \_fun_build/redef Introspection: \_fun_get/cs_string \_fun_get/cs_meaning Grouping: \_fun_enter/group \_fun_exit/group \_fun_enter/token_group \_fun_exit/token_group Save / use / reset / swap: \_fun_save/cs \_fun_use/cs \_fun_reset/cs \_fun_swap/cs Selection / gobbling: \_fun_pick/first \_fun_pick/second \_fun_gobble/one \_fun_gobble/two File loading: \_fun_load/ \_fun_load/if_exists \_fun_enter/source \_fun_exit/source 3. Low-level environment declaration \_fun_declare/env{}{}{} Creates \_fun_enter/, \_fun_exit/, and \_fun_use/{} (plus : synonyms). No automatic grouping – the author controls scoping explicitly. \_fun_declare/auto_group{}{}{} Same as above, but wraps enter/exit code in \begingroup...\endgroup automatically. 4. Boolean handling (via xifthen) \_fun_declare/bool{} Declares a new boolean (prefixed _user_bool/). \_fun_set_true/bool{} \_fun_set_false/bool{} Set the value. \_fun_enter/test_bool{} ... \_fun_exit/test_bool Retrieve the conditional token for use in \ifthenelse. 5. Safe bootstrap design The commands that define the extended syntax (\csSyntaxOn, \csSyntaxOff, and the internal \_fun_... primitives) never contain _, : or / in their own names. This guarantees they remain callable before the syntax is active – a deliberate separation between the mechanism and the layer it enables. 6. Standalone, domain-agnostic cssyntax knows nothing about linguistics, mathematics, or page layout. It has no opinion about what package authors do with structured names – it only provides the naming infrastructure. Originally the core of the lingwrit bundle, it is now a standalone package usable by any LaTeX package or class. Dependencies - xifthen - xparse - expl3 - l3keys2e All loaded before the extended syntax is activated. Changelog v0.1.0 – 2026-07-20 - Initial public release as a standalone package. - Extended catcode syntax with \csSyntaxOn / \csSyntaxOff. - Full \_fun_ alias set for common TeX primitives. - / and : naming convention with automatic synonym generation. - Low-level environment declaration (env, auto_group). - Boolean handling via xifthen with _user_bool/ prefix. - File loading commands (\_fun_load/, \_fun_load/if_exists). - Save/use/reset/swap toolkit for control sequence management. - Bootstrap-safe design: all mechanism commands are plain-letter names. Licence This package is released under the LaTeX Project Public License v1.3c or later. See http://www.latex-project.org/lppl.txt