diff options
| author | Manuel Pégourié-Gonnard <mpg@elzevir.fr> | 2010-03-27 14:12:45 +0100 | 
|---|---|---|
| committer | Manuel Pégourié-Gonnard <mpg@elzevir.fr> | 2010-03-27 14:12:45 +0100 | 
| commit | ef33b79773c88a941dcb96dc7799f7327073fccb (patch) | |
| tree | 0e9b052ef8a8e17bcbce9e32dac164c55f1ad449 | |
| parent | 8f6a797ab68d6aa3f79b1c360c8de126bf77b5bf (diff) | |
| parent | c14ea2489bbb1db61dd27b861015cdd269c888bc (diff) | |
| download | luatexbase-ef33b79773c88a941dcb96dc7799f7327073fccb.tar.gz | |
Merge branch 'master' into unstable
| -rw-r--r-- | Changes | 8 | ||||
| -rw-r--r-- | Makefile | 13 | ||||
| -rw-r--r-- | TODO | 15 | ||||
| -rw-r--r-- | lltxb-dtxstyle.tex | 3 | ||||
| -rw-r--r-- | luatexbase-attr.dtx | 8 | ||||
| -rw-r--r-- | luatexbase-cctb.dtx | 472 | 
6 files changed, 328 insertions, 191 deletions
@@ -5,6 +5,14 @@          - use luatexbase as the Lua module name          - don't creat tex.attributenumber +2010/03/26 +    luatexbase-cctb 0.1 +        - add minimal test files for luatex and lualatex +        - fix allocation range (1->65535) +        - make sure newly allocated tables are initialised +        - fix sensitivity to the current value of \escapechar +        - new macro \setluatexcatcodetable +  2010/03/11      luatexbase-attrs 0.1          - add minimal test files for luatex and lualatex @@ -11,7 +11,9 @@ UNPACKED_REGS = luatexbase-regs.sty \  				test-regs-plain.tex test-regs-latex.tex  UNPACKED_ATTR = luatexbase-attr.sty luatexbase.attr.lua \  				test-attr-plain.tex test-attr-latex.tex -UNPACKED = $(UNPACKED_MCB) $(UNPACKED_REGS) $(UNPACKED_ATTR) +UNPACKED_CCTB = luatexbase-cctb.sty luatexbase.cctb.lua \ +				test-cctb-plain.tex test-cctb-latex.tex +UNPACKED = $(UNPACKED_MCB) $(UNPACKED_REGS) $(UNPACKED_ATTR) $(UNPACKED_CCTB)  COMPILED = $(DOC)  GENERATED = $(COMPILED) $(UNPACKED)  SOURCE = $(DTX) $(DTXSTY) README TODO Changes Makefile @@ -42,7 +44,7 @@ DO_MAKEINDEX = makeindex -s gind.ist $(subst .dtx,,$<) >/dev/null 2>&1  # Main targets definition  all: $(GENERATED) -check: check-regs check-attr +check: check-regs check-attr check-cctb  doc: $(COMPILED)  unpack: $(UNPACKED)  ctan: check $(CTAN_ZIP) @@ -64,6 +66,9 @@ $(UNPACKED_REGS): luatexbase-regs.dtx  $(UNPACKED_ATTR): luatexbase-attr.dtx  	$(DO_TEX) +$(UNPACKED_CCTB): luatexbase-cctb.dtx +	$(DO_TEX) +  check-regs: $(UNPACKED_REGS)  	luatex --interaction=batchmode test-regs-plain.tex >/dev/null  	lualatex --interaction=batchmode test-regs-latex.tex >/dev/null @@ -72,6 +77,10 @@ check-attr: $(UNPACKED_ATTR)  	luatex --interaction=batchmode test-attr-plain.tex >/dev/null  	lualatex --interaction=batchmode test-attr-latex.tex >/dev/null +check-cctb: $(UNPACKED_CCTB) +	luatex --interaction=batchmode test-cctb-plain.tex >/dev/null +	lualatex --interaction=batchmode test-cctb-latex.tex >/dev/null +  $(CTAN_ZIP): $(SOURCE) $(COMPILED) $(TDS_ZIP)  	@echo "Making $@ for CTAN upload."  	@$(RM) -- $@ @@ -11,8 +11,23 @@ general  - date & changes entry  - redo module loading in packages once mods is done. +- adjust preamble to avoid duplicated list of files (refer to DTX instead)  Later  =====  - change lua module name(s) (luatexbase or luatexbase.regs etc) + +regs +---- + +- Should the various allocation macros set something in a Lua table, or should +  we just wait for it to be implemented in LuaTeX? (The \*blk macros would be +rather tricky in this respect, but are they really used?) Well, is there any +actual need for this? + +cctb +---- + +- don't write in the tex table! +- don't define macros starting with \luatex diff --git a/lltxb-dtxstyle.tex b/lltxb-dtxstyle.tex index fec762d..f3bafb4 100644 --- a/lltxb-dtxstyle.tex +++ b/lltxb-dtxstyle.tex @@ -5,7 +5,8 @@  \usepackage{geometry}  \usepackage{xspace}  \usepackage[english]{babel} -\usepackage[colorlinks, bookmarks]{hyperref} +\usepackage[colorlinks]{hyperref} +\usepackage{bookmark}  % logos  \makeatletter diff --git a/luatexbase-attr.dtx b/luatexbase-attr.dtx index 4db2122..7b192c6 100644 --- a/luatexbase-attr.dtx +++ b/luatexbase-attr.dtx @@ -122,7 +122,7 @@ and the derived files  % \title{The \pk{luatexbase-attr} package}  % \date{v0.1 2010-03-11}  % \author{% -%  Manuel P\'egouri\'e-Gonnard \\ \email{mpg@elzevir.fr} \and +%   Manuel P\'egouri\'e-Gonnard \\ \email{mpg@elzevir.fr} \and  %   \'Elie Roux \\ \email{elie.roux@telecom-bretagne.eu}}  %  % \maketitle @@ -242,9 +242,7 @@ and the derived files    \ifnum\lltxb@attribute@alloc<65535\relax      \global\advance\lltxb@attribute@alloc\@ne      \allocationnumber\lltxb@attribute@alloc -    \ifluatex -      \global\luatexattributedef#1=\allocationnumber -    \fi +    \global\luatexattributedef#1=\allocationnumber      \unsetluatexattribute#1%      \begingroup\escapechar\m@ne \expandafter\endgroup      \directlua{luatexbase.attributedef_from_tex( @@ -305,7 +303,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 attribute's number is remembered well, -%    independantly of the current value of |\escapechar|. +%    independently of the current value of |\escapechar|.  %  %    \begin{macrocode}  %<testplain>\input luatexbase-attr.sty diff --git a/luatexbase-cctb.dtx b/luatexbase-cctb.dtx index abcd6da..5eeefc9 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 @@ -62,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{% @@ -73,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 @@ -94,12 +94,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,189 +120,278 @@ 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 +%   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} +%    \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} - -\newcount\luatexcatcodetabledefcounter - -\luatexcatcodetabledefcounter = 1 - +                \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-cctb}[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. Allocate tables starting with 1, since table 0 is +%    reserved for IniTeX catcodes by LuaTeX. +% +%    \begin{macrocode} +\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 % -    \luadirect{% -      luatextra.catcodetabledef_from_tex([[\noexpand#1]], '\number\allocationnumber')}% -    \wlog{\string#1=\string\catcodetable\the\allocationnumber}% -  \else % -    \errmessage{No room for a new \string\catcodetable}% -  \fi % -} - +  \ifnum\lltxb@catcodetable@alloc<65535\relax +    \global\advance\lltxb@catcodetable@alloc\@ne +    \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}% +  \else +    \errmessage{No room for a new \string\luatexcatcodetable}% +  \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 -%    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{%    \edef\luaSCR@temp{%      \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 -} - +  \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{% +  \begingroup +  #2% +  \luatexsavecatcodetable#1% +  \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{% +  \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} +% +%    Tables for \LaTeXe. +% +%    \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} +% +%    A table for \pk{expl3}. +% +%    \begin{macrocode}  \newluatexcatcodetable\CatcodeTableExpl -\initluatexcatcodetable\CatcodeTableIniTeX - -\expandafter\ifx\csname @firstofone\endcsname\relax -  \long\def\@firstofone#1{#1}% -\fi - -\begingroup -  \def\@makeother#1{\catcode#1=12\relax}% -  \@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 % -      \saveluatexcatcodetable\CatcodeTableLaTeX -      \catcode64=11 % -      \saveluatexcatcodetable\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 % -      \saveluatexcatcodetable\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 -    \saveluatexcatcodetable\CatcodeTableString -    \@makeother{32}% space -    \saveluatexcatcodetable\CatcodeTableOther -  \endgroup -} - -\ltxtra@AtEnd - -\luadirect{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}  % +%    Finally do the shortcuts. +%  %    \begin{macrocode} +\directlua{luatextra.catcodetable_do_shortcuts()}  %</texpackage>  %    \end{macrocode}  % @@ -314,6 +399,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 @@ -321,60 +407,80 @@ 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) +catcodetables = {} +tex.catcodetablenumber = catcodetables +function catcodetabledef_from_tex(name, number) +    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 +function catcodetable_do_shortcuts() +    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}  %  %    \begin{macrocode}  %</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. +% +%    \begin{macrocode} +%<testplain>\input luatexbase-cctb.sty +%<testlatex>\RequirePackage{luatexbase-cctb} +%<*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\\setbox0=\string\\hbox{') +  tex.sprint(luatextra.catcodetables.string, "\string\\undef # _^&") +  tex.sprint('}') +  } +%    \end{macrocode} +% +%    \begin{macrocode} +%</testplain,testlatex> +%<testplain>\bye +%<testlatex>\stop +%    \end{macrocode} +%  % \Finale  \endinput  | 
