From 2bc1ebfb616b2c0ab2c97f0af33fe47e61178168 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= <mpg@elzevir.fr>
Date: Fri, 26 Mar 2010 22:40:15 +0100
Subject: Prepare cctb dtx.

---
 luatexbase-cctb.dtx | 136 ++++++++++++++++++++++++++++++----------------------
 1 file changed, 79 insertions(+), 57 deletions(-)

(limited to 'luatexbase-cctb.dtx')

diff --git a/luatexbase-cctb.dtx b/luatexbase-cctb.dtx
index abcd6da..14988bc 100644
--- a/luatexbase-cctb.dtx
+++ b/luatexbase-cctb.dtx
@@ -1,8 +1,5 @@
 % \iffalse meta-comment
 %
-% Template : look for cctb DATE DESC VERSION !!!
-% and 'derived files' !!!
-%
 % Written in 2009, 2010 by Manuel Pégourié-Gonnard and Élie Roux.
 %     <mpg@elzevir.fr>
 %     <elie.roux@telecom-bretagne.eu>
@@ -11,18 +8,14 @@
 %
 % This work consists of the main source file luatexbase-cctb.dtx
 % and the derived files
-%    luatexbase-cctb.sty cctb.lua ...
+%    luatexbase-cctb.sty luatexbase.cctb.lua
+%    test-cctb-plain.tex test-cctb-latex.tex
 %
 % Unpacking:
 %    tex luatexbase-cctb.dtx
 % Documentation:
 %    pdflatex luatexbase-cctb.dtx
 %
-%    The class ltxdoc loads the configuration file ltxdoc.cfg
-%    if available. Here you can specify further options, e.g.
-%    use A4 as paper format:
-%       \PassOptionsToClass{a4paper}{article}
-%
 %<*ignore>
 \begingroup
   \def\x{LaTeX2e}%
@@ -51,7 +44,8 @@ This work is under the CC0 license.
 
 This work consists of the main source file luatexbase-cctb.dtx
 and the derived files
-   luatexbase-cctb.sty cctb.lua ...
+   luatexbase-cctb.sty luatexbase.cctb.lua
+   test-cctb-plain.tex test-cctb-latex.tex
 
 \endpreamble
 
@@ -94,12 +88,8 @@ and the derived files
 \fi
 %</ignore>
 %<*driver>
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{luatexbase-cctb.drv}
-  [DATE DESC]
 \documentclass{ltxdoc}
-\EnableCrossrefs
-\CodelineIndex
+\input{lltxb-dtxstyle}
 \begin{document}
   \DocInput{luatexbase-cctb.dtx}%
 \end{document}
@@ -124,10 +114,8 @@ and the derived files
 %   Grave accent  \`     Left brace    \{     Vertical bar  \|
 %   Right brace   \}     Tilde         \~}
 %
-% \GetFileInfo{luatexbase-cctb.drv}
-%
-% \title{The \textsf{luatexbase-cctb} package}
-% \date{DATE}
+% \title{The \pk{luatexbase-cctb} package}
+% \date{v0.1 2010-03-26}
 % \author{%
 %  Manuel P\'egouri\'e-Gonnard \\ \texttt{mpg@elzevir.fr} \and
 %   \'Elie Roux \\ \texttt{elie.roux@telecom-bretagne.eu}}
@@ -141,53 +129,101 @@ and the derived files
 %
 %    \section{Implementation}
 %
-%    \subsection{\TeX\ package}
+%    \subsection{\tex package}
 %
 %    \begin{macrocode}
 %<*texpackage>
 %    \end{macrocode}
 %
-%    Here we allocate catcodetables the same way we handle attributes.
+%    \subsubsection{Preliminaries}
+%
+%    Reload protection, especially for \plaintex.
+%
+%    \begin{macrocode}
+                \csname lltxb@cctb@loaded\endcsname
+\expandafter\let\csname lltxb@cctb@loaded\endcsname\endinput
+%    \end{macrocode}
+%
+%    Package declaration.
+%
+%    \begin{macrocode}
+\begingroup
+  \expandafter\ifx\csname ProvidesPackage\endcsname\relax
+    \def\x#1[#2]{\immediate\write16{Package: #1 #2}}
+  \else
+    \let\x\ProvidesPackage
+  \fi
+\expandafter\endgroup
+\x{luatexbase-attr}[2010/03/26 v0.1  Catcodetable allocation for LuaTeX  (mpg)]
+%    \end{macrocode}
+%
+%    Make sure \luatex is used.
+%
+%    \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname RequirePackage\endcsname\relax
+  \input ifluatex.sty
+\else
+  \RequirePackage{ifluatex}
+\fi
+\ifluatex\else
+  \begingroup
+    \expandafter\ifx\csname PackageWarningNoLine\endcsname\relax
+      \def\x#1#2{\begingroup\newlinechar10
+        \immediate\write16{Package #1 warning: #2}\endgroup}
+    \else
+      \let\x\PackageWarningNoLine
+    \fi
+  \expandafter\endgroup
+  \x{luatexbase-cctb}{LuaTeX is required for this package.^^J
+    Aborting package loading.}
+  \expandafter\endinput
+\fi
+%    \end{macrocode}
+%
+%    Make sure the catcode of @ is correct, especially for \plaintex.
+%
+%    \begin{macrocode}
+\expandafter\edef\csname lltxb@cctb@AtEnd\endcsname{%
+  \catcode64 \the\catcode64\relax}
+\catcode64 11
+%    \end{macrocode}
+%
+%    \subsubsection{Main content}
+%
+%    Load the supporting Lua module.
+%
+%    \begin{macrocode}
+\directlua{dofile(kpse.find_file('luatexbase.cctb.lua', 'lua'))}
+%    \end{macrocode}
+%
+%    The allocation macro.
 %
 %    \begin{macrocode}
-
 \newcount\luatexcatcodetabledefcounter
-
 \luatexcatcodetabledefcounter = 1
-
 \def\newluatexcatcodetable#1{%
   \ifnum\luatexcatcodetabledefcounter<1114110\relax % 0x10FFFF is maximal \chardef
-    \global\advance\luatexcatcodetabledefcounter by 1\relax %
-    \allocationnumber=\luatexcatcodetabledefcounter %
-    \global\chardef#1=\allocationnumber %
+    \global\advance\luatexcatcodetabledefcounter by 1\relax
+    \allocationnumber=\luatexcatcodetabledefcounter
+    \global\chardef#1=\allocationnumber
     \luadirect{%
       luatextra.catcodetabledef_from_tex([[\noexpand#1]], '\number\allocationnumber')}%
     \wlog{\string#1=\string\catcodetable\the\allocationnumber}%
-  \else %
+  \else
     \errmessage{No room for a new \string\catcodetable}%
-  \fi %
-}
-
+  \fi}
 %    \end{macrocode}
 %
-%    A small patch to manage the catcode of \@ in Plain, and to get two new
-%    counters in Plain too.
+%    A small patch to get two new counters in Plain too.
 %
 %    \begin{macrocode}
-
-\expandafter\edef\csname ltxtra@AtEnd\endcsname{%
-  \catcode64 \the\catcode64\relax
-}
-
-\catcode 64=11\relax
-
 \expandafter\ifx\csname @tempcnta\endcsname\relax
   \csname newcount\endcsname\@tempcnta
 \fi
 \expandafter\ifx\csname @tempcntb\endcsname\relax
   \csname newcount\endcsname\@tempcntb
 \fi
-
 %    \end{macrocode}
 %
 %    A macro that sets the catcode of a range of characters. The first
@@ -196,7 +232,6 @@ and the derived files
 %    parameter is the catcode we want them to have.
 %
 %    \begin{macrocode}
-
 \def\luatexsetcatcoderange#1#2#3{%
   \edef\luaSCR@temp{%
     \noexpand\@tempcnta=\the\@tempcnta
@@ -211,9 +246,7 @@ and the derived files
     \catcode\@tempcnta=\count@
     \advance\@tempcnta by 1\relax
   \repeat
-  \luaSCR@temp
-}
-
+  \luaSCR@temp}
 %    \end{macrocode}
 %
 %    Finally we create several catcodetables that may be used by the user.
@@ -232,7 +265,6 @@ and the derived files
 %    \end{itemize}
 %
 %    \begin{macrocode}
-
 \newluatexcatcodetable\CatcodeTableIniTeX
 \newluatexcatcodetable\CatcodeTableString
 \newluatexcatcodetable\CatcodeTableOther
@@ -299,11 +331,7 @@ and the derived files
     \saveluatexcatcodetable\CatcodeTableOther
   \endgroup
 }
-
-\ltxtra@AtEnd
-
-\luadirect{luatextra.catcodetable_do_shortcuts()}
-
+\directlua{luatextra.catcodetable_do_shortcuts()}
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -321,16 +349,12 @@ and the derived files
 %    \texttt{\string\newluacatcodetable}.
 %
 %    \begin{macrocode}
-
 luatextra.catcodetables = {}
-
 tex.catcodetablenumber = luatextra.catcodetables
-
 function luatextra.catcodetabledef_from_tex(name, number)
     truename = name:gsub('[\\ ]', '')
     luatextra.catcodetables[truename] = tonumber(number)
 end
-
 %    \end{macrocode}
 %
 %    With this function we create some shortcuts for a
@@ -339,7 +363,6 @@ end
 %    |tex.catcodetablenumber['CatcodeTableLaTeX']|.
 %
 %    \begin{macrocode}
-
 function luatextra.catcodetable_do_shortcuts()
     local cat = tex.catcodetablenumber
     local val = cat['CatcodeTableLaTeX']
@@ -369,7 +392,6 @@ function luatextra.catcodetable_do_shortcuts()
       cat['other'] = val
     end
 end
-
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-- 
cgit v1.2.3


From 548cf785083785c27869a8b035156dbe2c127c29 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= <mpg@elzevir.fr>
Date: Fri, 26 Mar 2010 23:22:39 +0100
Subject: Minimal test files for cctb.

---
 luatexbase-cctb.dtx | 46 ++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 38 insertions(+), 8 deletions(-)

(limited to 'luatexbase-cctb.dtx')

diff --git a/luatexbase-cctb.dtx b/luatexbase-cctb.dtx
index 14988bc..7ac8a2e 100644
--- a/luatexbase-cctb.dtx
+++ b/luatexbase-cctb.dtx
@@ -56,6 +56,12 @@ and the derived files
   \file{luatexbase-cctb.sty}{\from{luatexbase-cctb.dtx}{texpackage}}%
 }
 
+\generate{%
+  \usedir{doc/luatex/luatexbase}%
+  \file{test-cctb-plain.tex}{\from{luatexbase-cctb.dtx}{testplain}}%
+  \file{test-cctb-latex.tex}{\from{luatexbase-cctb.dtx}{testlatex}}%
+}
+
 \def\MetaPrefix{-- }
 
 \def\luapostamble{%
@@ -67,7 +73,7 @@ and the derived files
 
 \generate{%
   \usedir{tex/luatex/luatexbase}%
-  \file{cctb.lua}{\from{luatexbase-cctb.dtx}{luamodule}}%
+  \file{luatexbase.cctb.lua}{\from{luatexbase-cctb.dtx}{luamodule}}%
 }
 
 \obeyspaces
@@ -207,7 +213,7 @@ and the derived files
     \global\advance\luatexcatcodetabledefcounter by 1\relax
     \allocationnumber=\luatexcatcodetabledefcounter
     \global\chardef#1=\allocationnumber
-    \luadirect{%
+    \directlua{%
       luatextra.catcodetabledef_from_tex([[\noexpand#1]], '\number\allocationnumber')}%
     \wlog{\string#1=\string\catcodetable\the\allocationnumber}%
   \else
@@ -271,7 +277,7 @@ and the derived files
 \newluatexcatcodetable\CatcodeTableLaTeX
 \newluatexcatcodetable\CatcodeTableLaTeXAtLetter
 \newluatexcatcodetable\CatcodeTableExpl
-\initluatexcatcodetable\CatcodeTableIniTeX
+\luatexinitcatcodetable\CatcodeTableIniTeX
 
 \expandafter\ifx\csname @firstofone\endcsname\relax
   \long\def\@firstofone#1{#1}%
@@ -296,9 +302,9 @@ and the derived files
       \catcode125=2 % brace right
       \catcode126=13 % tilde
       \catcode127=15 %
-      \saveluatexcatcodetable\CatcodeTableLaTeX
+      \luatexsavecatcodetable\CatcodeTableLaTeX
       \catcode64=11 %
-      \saveluatexcatcodetable\CatcodeTableLaTeXAtLetter
+      \luatexsavecatcodetable\CatcodeTableLaTeXAtLetter
     \endgroup
     \begingroup
       \luatexsetcatcoderange{0}{8}{15}%
@@ -317,7 +323,7 @@ and the derived files
       \catcode125=2 % right brace is end-group character
       \catcode126=10 % tilde is a space char.
       \catcode127=15 %
-      \saveluatexcatcodetable\CatcodeTableExpl
+      \luatexsavecatcodetable\CatcodeTableExpl
     \endgroup
     \@makeother{0}% nul
     \@makeother{13}% carriage return
@@ -326,9 +332,9 @@ and the derived files
     \@makeother{127}%
     \luatexsetcatcoderange{65}{90}{12}% A-Z
     \luatexsetcatcoderange{97}{122}{12}% a-z
-    \saveluatexcatcodetable\CatcodeTableString
+    \luatexsavecatcodetable\CatcodeTableString
     \@makeother{32}% space
-    \saveluatexcatcodetable\CatcodeTableOther
+    \luatexsavecatcodetable\CatcodeTableOther
   \endgroup
 }
 \directlua{luatextra.catcodetable_do_shortcuts()}
@@ -349,6 +355,7 @@ and the derived files
 %    \texttt{\string\newluacatcodetable}.
 %
 %    \begin{macrocode}
+luatextra = luatextra or {}
 luatextra.catcodetables = {}
 tex.catcodetablenumber = luatextra.catcodetables
 function luatextra.catcodetabledef_from_tex(name, number)
@@ -398,5 +405,28 @@ end
 %</luamodule>
 %    \end{macrocode}
 %
+%    \section{Test files}
+%
+%    The tests done are very basic: we just make sure that the package loads
+%    correctly and the macros don't generate any error, under both LaTeX en
+%    Plain TeX. We also check that the catcodetable's number is remembered well,
+%    independently of the current value of |\escapechar|.
+%
+%    \begin{macrocode}
+%<testplain>\input luatexbase-cctb.sty
+%<testlatex>\RequirePackage{luatexbase-cctb}
+%<*testplain,testlatex>
+\newluatexcatcodetable\testcctb
+\directlua{assert(luatextra.catcodetables.testcctb)}
+\begingroup
+\escapechar64
+\newluatexcatcodetable\anothercctb
+\endgroup
+% \directlua{assert(luatextra.catcodetables.anothercctb)}
+%</testplain,testlatex>
+%<testplain>\bye
+%<testlatex>\stop
+%    \end{macrocode}
+%
 % \Finale
 \endinput
-- 
cgit v1.2.3


From 23a17df502ce5f8b360c1e10bc0dedae87631788 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= <mpg@elzevir.fr>
Date: Fri, 26 Mar 2010 23:57:02 +0100
Subject: fix allocation range; initilase tables

---
 luatexbase-cctb.dtx | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

(limited to 'luatexbase-cctb.dtx')

diff --git a/luatexbase-cctb.dtx b/luatexbase-cctb.dtx
index 7ac8a2e..a73f483 100644
--- a/luatexbase-cctb.dtx
+++ b/luatexbase-cctb.dtx
@@ -203,21 +203,23 @@ and the derived files
 \directlua{dofile(kpse.find_file('luatexbase.cctb.lua', 'lua'))}
 %    \end{macrocode}
 %
-%    The allocation macro.
+%    The allocation macro. Allocate tables starting with 1, since table 0 is
+%    reserved for IniTeX catcodes by LuaTeX.
 %
 %    \begin{macrocode}
-\newcount\luatexcatcodetabledefcounter
-\luatexcatcodetabledefcounter = 1
+\newcount\lltxb@catcodetable@alloc
+\lltxb@catcodetable@alloc\z@
 \def\newluatexcatcodetable#1{%
-  \ifnum\luatexcatcodetabledefcounter<1114110\relax % 0x10FFFF is maximal \chardef
-    \global\advance\luatexcatcodetabledefcounter by 1\relax
-    \allocationnumber=\luatexcatcodetabledefcounter
-    \global\chardef#1=\allocationnumber
-    \directlua{%
-      luatextra.catcodetabledef_from_tex([[\noexpand#1]], '\number\allocationnumber')}%
-    \wlog{\string#1=\string\catcodetable\the\allocationnumber}%
+  \ifnum\lltxb@catcodetable@alloc<65535\relax
+    \global\advance\lltxb@catcodetable@alloc\@ne
+    \allocationnumber\lltxb@catcodetable@alloc
+    \global\chardef#1\allocationnumber
+    \luatexinitcatcodetable\allocationnumber
+    \directlua{luatextra.catcodetabledef_from_tex(
+      '\luatexluaescapestring{\string#1}', '\number\allocationnumber')}%
+    \wlog{\string#1=\string\luatexcatcodetable\the\allocationnumber}%
   \else
-    \errmessage{No room for a new \string\catcodetable}%
+    \errmessage{No room for a new \string\luatexcatcodetable}%
   \fi}
 %    \end{macrocode}
 %
@@ -277,7 +279,7 @@ and the derived files
 \newluatexcatcodetable\CatcodeTableLaTeX
 \newluatexcatcodetable\CatcodeTableLaTeXAtLetter
 \newluatexcatcodetable\CatcodeTableExpl
-\luatexinitcatcodetable\CatcodeTableIniTeX
+%% \luatexinitcatcodetable\CatcodeTableIniTeX
 
 \expandafter\ifx\csname @firstofone\endcsname\relax
   \long\def\@firstofone#1{#1}%
-- 
cgit v1.2.3


From 105f350223a842d5a72170f192a2a597cd12290b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= <mpg@elzevir.fr>
Date: Sat, 27 Mar 2010 00:01:17 +0100
Subject: fix sensitivity to \escapechar

---
 luatexbase-cctb.dtx | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

(limited to 'luatexbase-cctb.dtx')

diff --git a/luatexbase-cctb.dtx b/luatexbase-cctb.dtx
index a73f483..d7de151 100644
--- a/luatexbase-cctb.dtx
+++ b/luatexbase-cctb.dtx
@@ -215,6 +215,7 @@ and the derived files
     \allocationnumber\lltxb@catcodetable@alloc
     \global\chardef#1\allocationnumber
     \luatexinitcatcodetable\allocationnumber
+    \begingroup\escapechar\m@ne \expandafter\endgroup
     \directlua{luatextra.catcodetabledef_from_tex(
       '\luatexluaescapestring{\string#1}', '\number\allocationnumber')}%
     \wlog{\string#1=\string\luatexcatcodetable\the\allocationnumber}%
@@ -279,14 +280,10 @@ and the derived files
 \newluatexcatcodetable\CatcodeTableLaTeX
 \newluatexcatcodetable\CatcodeTableLaTeXAtLetter
 \newluatexcatcodetable\CatcodeTableExpl
-%% \luatexinitcatcodetable\CatcodeTableIniTeX
-
-\expandafter\ifx\csname @firstofone\endcsname\relax
-  \long\def\@firstofone#1{#1}%
-\fi
 
 \begingroup
   \def\@makeother#1{\catcode#1=12\relax}%
+  \long\def\@firstofone#1{#1}%
   \@firstofone{%
     \luatexcatcodetable\CatcodeTableIniTeX
     \begingroup
@@ -424,7 +421,7 @@ end
 \escapechar64
 \newluatexcatcodetable\anothercctb
 \endgroup
-% \directlua{assert(luatextra.catcodetables.anothercctb)}
+\directlua{assert(luatextra.catcodetables.anothercctb)}
 %</testplain,testlatex>
 %<testplain>\bye
 %<testlatex>\stop
-- 
cgit v1.2.3


From 36010a4dbaaa94195a62c09c68d57e53ca0196b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= <mpg@elzevir.fr>
Date: Sat, 27 Mar 2010 00:45:54 +0100
Subject: Fix package declaration.

---
 luatexbase-cctb.dtx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'luatexbase-cctb.dtx')

diff --git a/luatexbase-cctb.dtx b/luatexbase-cctb.dtx
index d7de151..310bb25 100644
--- a/luatexbase-cctb.dtx
+++ b/luatexbase-cctb.dtx
@@ -160,7 +160,7 @@ and the derived files
     \let\x\ProvidesPackage
   \fi
 \expandafter\endgroup
-\x{luatexbase-attr}[2010/03/26 v0.1  Catcodetable allocation for LuaTeX  (mpg)]
+\x{luatexbase-cctb}[2010/03/26 v0.1  Catcodetable allocation for LuaTeX  (mpg)]
 %    \end{macrocode}
 %
 %    Make sure \luatex is used.
-- 
cgit v1.2.3


From 98942ad29a1e59032eb5c75900d2a3df5402e2e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= <mpg@elzevir.fr>
Date: Sat, 27 Mar 2010 01:09:46 +0100
Subject: A bit more testing for cctb.

---
 luatexbase-cctb.dtx | 27 +++++++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

(limited to 'luatexbase-cctb.dtx')

diff --git a/luatexbase-cctb.dtx b/luatexbase-cctb.dtx
index 310bb25..35aa95f 100644
--- a/luatexbase-cctb.dtx
+++ b/luatexbase-cctb.dtx
@@ -408,8 +408,7 @@ end
 %
 %    The tests done are very basic: we just make sure that the package loads
 %    correctly and the macros don't generate any error, under both LaTeX en
-%    Plain TeX. We also check that the catcodetable's number is remembered well,
-%    independently of the current value of |\escapechar|.
+%    Plain TeX.
 %
 %    \begin{macrocode}
 %<testplain>\input luatexbase-cctb.sty
@@ -417,11 +416,35 @@ end
 %<*testplain,testlatex>
 \newluatexcatcodetable\testcctb
 \directlua{assert(luatextra.catcodetables.testcctb)}
+%    \end{macrocode}
+%
+%    Also check that the catcodetable's number is remembered well,
+%    independently of the current value of |\escapechar|.
+
+%    \begin{macrocode}
 \begingroup
 \escapechar64
 \newluatexcatcodetable\anothercctb
 \endgroup
 \directlua{assert(luatextra.catcodetables.anothercctb)}
+%    \end{macrocode}
+%
+%    Now, play a little bit with predefined tables.
+%
+%    \begin{macrocode}
+\luatexcatcodetable\CatcodeTableLaTeXAtLetter
+\ifnum\catcode64=11 \else \ERROR \fi
+\luatexcatcodetable\CatcodeTableLaTeX
+\ifnum\catcode64=12 \else \ERROR \fi
+%<testlatex>\documentclass{minimal}
+\directlua{%
+  tex.sprint('\string\\hbox{')
+  tex.sprint(luatextra.catcodetables.string, "\string\\undef # _^&")
+  tex.sprint('}')
+  }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 %</testplain,testlatex>
 %<testplain>\bye
 %<testlatex>\stop
-- 
cgit v1.2.3


From 20fd8b85db18bc062de1b51f5d4f2305f88ca27f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= <mpg@elzevir.fr>
Date: Sat, 27 Mar 2010 02:28:22 +0100
Subject: Minor code cleanup.

---
 luatexbase-cctb.dtx | 165 ++++++++++++++++++++++++----------------------------
 1 file changed, 75 insertions(+), 90 deletions(-)

(limited to 'luatexbase-cctb.dtx')

diff --git a/luatexbase-cctb.dtx b/luatexbase-cctb.dtx
index 35aa95f..b782759 100644
--- a/luatexbase-cctb.dtx
+++ b/luatexbase-cctb.dtx
@@ -274,72 +274,77 @@ and the derived files
 %    \end{itemize}
 %
 %    \begin{macrocode}
+\def\setluatexcatcodetable#1#2{%
+  \begingroup
+  #2%
+  \luatexsavecatcodetable#1%
+  \endgroup}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \newluatexcatcodetable\CatcodeTableIniTeX
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \newluatexcatcodetable\CatcodeTableString
+\setluatexcatcodetable\CatcodeTableString{%
+  \luatexcatcodetable\CatcodeTableIniTeX
+  \catcode0   12 % nul
+  \catcode13  12 % carriage return
+  \catcode37  12 % percent
+  \luatexsetcatcoderange{65}{90}{12}% A-Z
+  \luatexsetcatcoderange{97}{122}{12}% a-z
+  \catcode92  12 % backslash
+  \catcode127 12 }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \newluatexcatcodetable\CatcodeTableOther
+\setluatexcatcodetable\CatcodeTableOther{%
+  \luatexcatcodetable\CatcodeTableString
+  \catcode32 12 }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \newluatexcatcodetable\CatcodeTableLaTeX
+\setluatexcatcodetable\CatcodeTableLaTeX{%
+  \luatexcatcodetable\CatcodeTableIniTeX
+  \luatexsetcatcoderange{0}{31}{15}%
+  \catcode9   10 % tab
+  \catcode12  13 % form feed
+  \catcode13  5  % carriage return
+  \catcode35  6  % hash
+  \catcode36  3  % dollar
+  \catcode38  4  % ampersand
+  \catcode94  7  % circumflex
+  \catcode95  8  % underscore
+  \catcode123 1  % brace left
+  \catcode125 2  % brace right
+  \catcode126 13 % tilde
+  \catcode127 15 }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \newluatexcatcodetable\CatcodeTableLaTeXAtLetter
+\setluatexcatcodetable\CatcodeTableLaTeXAtLetter{%
+  \luatexcatcodetable\CatcodeTableLaTeX
+  \catcode64=11 }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \newluatexcatcodetable\CatcodeTableExpl
-
-\begingroup
-  \def\@makeother#1{\catcode#1=12\relax}%
-  \long\def\@firstofone#1{#1}%
-  \@firstofone{%
-    \luatexcatcodetable\CatcodeTableIniTeX
-    \begingroup
-      \luatexsetcatcoderange{0}{8}{15}%
-      \catcode9=10  % tab
-      \catcode11=15 %
-      \catcode12=13 % form feed
-      \luatexsetcatcoderange{14}{31}{15}%
-      \catcode35=6 % hash
-      \catcode36=3 % dollar
-      \catcode38=4 % ampersand
-      \catcode94=7 % circumflex
-      \catcode95=8 % underscore
-      \catcode123=1 % brace left
-      \catcode125=2 % brace right
-      \catcode126=13 % tilde
-      \catcode127=15 %
-      \luatexsavecatcodetable\CatcodeTableLaTeX
-      \catcode64=11 %
-      \luatexsavecatcodetable\CatcodeTableLaTeXAtLetter
-    \endgroup
-    \begingroup
-      \luatexsetcatcoderange{0}{8}{15}%
-      \catcode9=9 % tab ignored
-      \catcode11=15 %
-      \catcode12=13 % form feed
-      \luatexsetcatcoderange{14}{31}{15}%
-      \catcode32=9 % space is ignored
-      \catcode35=6 % hash mark is macro parameter character
-      \catcode36=3 % dollar (not so sure about the catcode...)
-      \catcode38=4 % ampersand
-      \catcode58=11 % colon letter
-      \catcode94=7 % circumflex is superscript character
-      \catcode95=11 % underscore letter
-      \catcode123=1 % left brace is begin-group character
-      \catcode125=2 % right brace is end-group character
-      \catcode126=10 % tilde is a space char.
-      \catcode127=15 %
-      \luatexsavecatcodetable\CatcodeTableExpl
-    \endgroup
-    \@makeother{0}% nul
-    \@makeother{13}% carriage return
-    \@makeother{37}% percent
-    \@makeother{92}% backslash
-    \@makeother{127}%
-    \luatexsetcatcoderange{65}{90}{12}% A-Z
-    \luatexsetcatcoderange{97}{122}{12}% a-z
-    \luatexsavecatcodetable\CatcodeTableString
-    \@makeother{32}% space
-    \luatexsavecatcodetable\CatcodeTableOther
-  \endgroup
-}
-\directlua{luatextra.catcodetable_do_shortcuts()}
+\setluatexcatcodetable\CatcodeTableExpl{%
+  \luatexcatcodetable\CatcodeTableLaTeX
+  \catcode126 10 % tilde is a space char
+  \catcode32  9  % space is ignored
+  \catcode9   9  % tab also ignored
+  \catcode95  11 % underscore letter
+  \catcode58  11 % colon letter
+  }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
+\directlua{luatextra.catcodetable_do_shortcuts()}
 %</texpackage>
 %    \end{macrocode}
 %
@@ -347,6 +352,7 @@ and the derived files
 %
 %    \begin{macrocode}
 %<*luamodule>
+module('luatextra', package.seeall)
 %    \end{macrocode}
 %
 %    In the same way, the table \texttt{tex.catcodetablenumber} contains the
@@ -354,49 +360,28 @@ and the derived files
 %    \texttt{\string\newluacatcodetable}.
 %
 %    \begin{macrocode}
-luatextra = luatextra or {}
 luatextra.catcodetables = {}
 tex.catcodetablenumber = luatextra.catcodetables
 function luatextra.catcodetabledef_from_tex(name, number)
-    truename = name:gsub('[\\ ]', '')
-    luatextra.catcodetables[truename] = tonumber(number)
+    luatextra.catcodetables[name] = tonumber(number)
 end
 %    \end{macrocode}
 %
-%    With this function we create some shortcuts for a
-%    better readability in lua code. This makes
-%    |tex.catcodetablenumber.latex| equivalent to 
+%    With this function we create some shortcuts for a better readability in
+%    lua code. This makes |tex.catcodetablenumber.latex| equivalent to
 %    |tex.catcodetablenumber['CatcodeTableLaTeX']|.
 %
 %    \begin{macrocode}
 function luatextra.catcodetable_do_shortcuts()
-    local cat = tex.catcodetablenumber
-    local val = cat['CatcodeTableLaTeX']
-    if val then
-      cat['latex'] = val
-    end
-    val = cat['CatcodeTableLaTeXAtLetter']
-    if val then
-      cat['latex-package'] = val
-      cat['latex-atletter'] = val
-    end
-    val = cat['CatcodeTableIniTeX']
-    if val then
-      cat['ini'] = val
-    end
-    val = cat['CatcodeTableExpl']
-    if val then
-      cat['expl3'] = val
-      cat['expl'] = val
-    end
-    val = cat['CatcodeTableString']
-    if val then
-      cat['string'] = val
-    end
-    val = cat['CatcodeTableOther']
-    if val then
-      cat['other'] = val
-    end
+    local cat = luatextra.catcodetables
+    cat['latex']                = cat.CatcodeTableLaTeX
+    cat['latex-package']        = cat.CatcodeTableLaTeXAtLetter
+    cat['latex-atletter']       = cat.CatcodeTableLaTeXAtLetter
+    cat['ini']                  = cat.CatcodeTableIniTeX
+    cat['expl3']                = cat.CatcodeTableExpl
+    cat['expl']                 = cat.CatcodeTableExpl
+    cat['string']               = cat.CatcodeTableString
+    cat['other']                = cat.CatcodeTableOther
 end
 %    \end{macrocode}
 %
-- 
cgit v1.2.3


From 695552b7e7619bb903bcfe61a3d4c16e156fb535 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= <mpg@elzevir.fr>
Date: Sat, 27 Mar 2010 02:30:41 +0100
Subject: Makefile fix and minor test improvement.

---
 luatexbase-cctb.dtx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'luatexbase-cctb.dtx')

diff --git a/luatexbase-cctb.dtx b/luatexbase-cctb.dtx
index b782759..42a124e 100644
--- a/luatexbase-cctb.dtx
+++ b/luatexbase-cctb.dtx
@@ -423,7 +423,7 @@ end
 \ifnum\catcode64=12 \else \ERROR \fi
 %<testlatex>\documentclass{minimal}
 \directlua{%
-  tex.sprint('\string\\hbox{')
+  tex.sprint('\string\\setbox0=\string\\hbox{')
   tex.sprint(luatextra.catcodetables.string, "\string\\undef # _^&")
   tex.sprint('}')
   }
-- 
cgit v1.2.3


From c14ea2489bbb1db61dd27b861015cdd269c888bc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= <mpg@elzevir.fr>
Date: Sat, 27 Mar 2010 14:10:02 +0100
Subject: Doc for cctb and additional code cleanup.

---
 luatexbase-cctb.dtx | 101 ++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 74 insertions(+), 27 deletions(-)

(limited to 'luatexbase-cctb.dtx')

diff --git a/luatexbase-cctb.dtx b/luatexbase-cctb.dtx
index 42a124e..5eeefc9 100644
--- a/luatexbase-cctb.dtx
+++ b/luatexbase-cctb.dtx
@@ -123,16 +123,70 @@ and the derived files
 % \title{The \pk{luatexbase-cctb} package}
 % \date{v0.1 2010-03-26}
 % \author{%
-%  Manuel P\'egouri\'e-Gonnard \\ \texttt{mpg@elzevir.fr} \and
+%   Manuel P\'egouri\'e-Gonnard \\ \texttt{mpg@elzevir.fr} \and
 %   \'Elie Roux \\ \texttt{elie.roux@telecom-bretagne.eu}}
 %
 % \maketitle
 %
 % \begin{abstract}
+% In addition to the registers existing in \tex and \etex, \luatex introduces
+% a new concept: catcode tables. This package takes care of catcode table
+% allocation just like Plain TeX and LaTeX do for other registers.
 % \end{abstract}
 %
 % \section{Documentation}
 %
+% The main macro defined here is |\newluatexcatcodetable|. It behaves the same
+% as |\newbox|. Additonally, the newly allocated catcode table is initialised
+% to the catcodes of Ini\tex.  In order to help you define the catcode tables
+% (once they are allocated), two helper macros are available.
+%
+% \begin{quote}
+% \cs{luatexsetcatcoderange}\marg{from}\marg{to}\marg{value}
+% \end{quote}
+% Set all characters code in the range \meta{from}--\meta{to} to the given
+% catcode \meta{value}.
+%
+% \begin{quote}
+% \cs{setluatexcatcodetable}\marg{table}\marg{catcode statements}
+% \end{quote}
+% Set a previously allocated \meta{table} to the catcodes given by executing
+% \meta{catcode statements}. Note that \meta{table} must not be the current
+% active catcode table. You may, however, load another catcode table in your
+% \meta{catcode statements}.
+%
+% For your convenience, a few catcode tables are prefined:
+% \begin{itemize}
+% \item |\CatcodeTableIniTeX|: Ini\tex catcodes.
+% \item |\CatcodeTableString|: the catcode regime used by |\string| and
+% |\meaning|: everything has catcode 12, except space (U+0020) that has
+% catcode 10.
+% \item |\CatcodeTableOther|: everything (included space) has catcode 12.
+% \item |\CatcodeTableLaTeX|: basic \LaTeXe\ catcodes.
+% \item |\CatcodeTableLaTeXAtLetter|: same as above, but |@| is a letter.
+% \item |\CatcodeTableExpl|: catcodes used by \latex{}3 with |\ExplSyntaxOn|.
+% Be aware that this does not provide the exact same environment as
+% |\ExplSyntaxOn|: most noticibly, some booleans are not set, and
+% |\endlinechar| is not adjusted (it should be 32).
+% \end{itemize}
+%
+% Various Lua function accept a catcode table number as argument. In order to
+% use them, the package writer needs to know the number of an allocated
+% catcode table. Since |\chardef| is used for the definition of the control
+% sequence, this is rather easy to do. However, for extra ease of use, the
+% numbers are also directly accessible from Lua as the value of the table
+% |luatextra.catcodetables|, whose keys is the name of the control sequence
+% (without any leading backslash). Moreover, nickames are available for the
+% predefined catcode tables:
+% \begin{itemize}
+% \item |CatcodeTableIniTeX| = |ini|,
+% \item |CatcodeTableString| = |string|,
+% \item |CatcodeTableOther| = |other|,
+% \item |CatcodeTableLaTeX| = |latex|,
+% \item |CatcodeTableLaTeXAtLetter| = |latex-atletter| = |latex-package|,
+% \item |CatcodeTableExpl| = |expl| = |expl3|,
+% \end{itemize}
+%
 %    \section{Implementation}
 %
 %    \subsection{\tex package}
@@ -235,10 +289,7 @@ and the derived files
 \fi
 %    \end{macrocode}
 %
-%    A macro that sets the catcode of a range of characters. The first
-%    parameter is the character number of the first character of the range,
-%    the second parameter is one for the last character, and the third
-%    parameter is the catcode we want them to have.
+%    Set the catcodes for a range of characters.
 %
 %    \begin{macrocode}
 \def\luatexsetcatcoderange#1#2#3{%
@@ -246,32 +297,18 @@ and the derived files
     \noexpand\@tempcnta=\the\@tempcnta
     \noexpand\@tempcntb=\the\@tempcntb
     \noexpand\count@=\the\count@
-    \relax
-  }%
+    \relax}%
   \@tempcnta=#1\relax
   \@tempcntb=#2\relax
   \count@=#3\relax
   \loop\unless\ifnum\@tempcnta>\@tempcntb
     \catcode\@tempcnta=\count@
-    \advance\@tempcnta by 1\relax
+    \advance\@tempcnta\@ne
   \repeat
   \luaSCR@temp}
 %    \end{macrocode}
 %
-%    Finally we create several catcodetables that may be used by the user.
-%    These are:
-%
-%    \begin{itemize}
-%    \item \texttt{\string\CatcodeTableIniTeX}: the base \TeX\ catcodes
-%    \item \texttt{\string\CatcodeTableString}: almost all characters have
-%    catcode 12
-%    \item \texttt{\string\CatcodeTableOther}: all characters have catcode 12
-%    (even space)
-%    \item \texttt{\string\CatcodeTableLaTeX}: the \LaTeX\ classical catcodes
-%    \item \texttt{\string\CatcodeTableLaTeXAtLetter}: the \LaTeX\ classical
-%    catcodes and |@| letter
-%    \item \texttt{\string\CatcodeTableExpl}: the expl3 catcodes
-%    \end{itemize}
+%    Set a catcode table.
 %
 %    \begin{macrocode}
 \def\setluatexcatcodetable#1#2{%
@@ -281,10 +318,14 @@ and the derived files
   \endgroup}
 %    \end{macrocode}
 %
+%    The |IniTeX| catcode table needs no extra initialisation.
+%
 %    \begin{macrocode}
 \newluatexcatcodetable\CatcodeTableIniTeX
 %    \end{macrocode}
 %
+%    The |String| and |Other| catcode tables.
+%
 %    \begin{macrocode}
 \newluatexcatcodetable\CatcodeTableString
 \setluatexcatcodetable\CatcodeTableString{%
@@ -305,6 +346,8 @@ and the derived files
   \catcode32 12 }
 %    \end{macrocode}
 %
+%    Tables for \LaTeXe.
+%
 %    \begin{macrocode}
 \newluatexcatcodetable\CatcodeTableLaTeX
 \setluatexcatcodetable\CatcodeTableLaTeX{%
@@ -331,6 +374,8 @@ and the derived files
   \catcode64=11 }
 %    \end{macrocode}
 %
+%    A table for \pk{expl3}.
+%
 %    \begin{macrocode}
 \newluatexcatcodetable\CatcodeTableExpl
 \setluatexcatcodetable\CatcodeTableExpl{%
@@ -343,6 +388,8 @@ and the derived files
   }
 %    \end{macrocode}
 %
+%    Finally do the shortcuts.
+%
 %    \begin{macrocode}
 \directlua{luatextra.catcodetable_do_shortcuts()}
 %</texpackage>
@@ -360,10 +407,10 @@ module('luatextra', package.seeall)
 %    \texttt{\string\newluacatcodetable}.
 %
 %    \begin{macrocode}
-luatextra.catcodetables = {}
-tex.catcodetablenumber = luatextra.catcodetables
-function luatextra.catcodetabledef_from_tex(name, number)
-    luatextra.catcodetables[name] = tonumber(number)
+catcodetables = {}
+tex.catcodetablenumber = catcodetables
+function catcodetabledef_from_tex(name, number)
+    catcodetables[name] = tonumber(number)
 end
 %    \end{macrocode}
 %
@@ -372,7 +419,7 @@ end
 %    |tex.catcodetablenumber['CatcodeTableLaTeX']|.
 %
 %    \begin{macrocode}
-function luatextra.catcodetable_do_shortcuts()
+function catcodetable_do_shortcuts()
     local cat = luatextra.catcodetables
     cat['latex']                = cat.CatcodeTableLaTeX
     cat['latex-package']        = cat.CatcodeTableLaTeXAtLetter
-- 
cgit v1.2.3

