From 2bc1ebfb616b2c0ab2c97f0af33fe47e61178168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= 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. % % @@ -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 % %<*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?= 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 % % \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} +%\input luatexbase-cctb.sty +%\RequirePackage{luatexbase-cctb} +%<*testplain,testlatex> +\newluatexcatcodetable\testcctb +\directlua{assert(luatextra.catcodetables.testcctb)} +\begingroup +\escapechar64 +\newluatexcatcodetable\anothercctb +\endgroup +% \directlua{assert(luatextra.catcodetables.anothercctb)} +% +%\bye +%\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?= 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?= 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)} % %\bye %\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?= 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?= 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} %\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 +%\documentclass{minimal} +\directlua{% + tex.sprint('\string\\hbox{') + tex.sprint(luatextra.catcodetables.string, "\string\\undef # _^&") + tex.sprint('}') + } +% \end{macrocode} +% +% \begin{macrocode} % %\bye %\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?= 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()} % % \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?= 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 %\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?= 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()} % @@ -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