diff options
-rw-r--r-- | TODO | 6 | ||||
-rw-r--r-- | luatexbase-regs.dtx | 76 |
2 files changed, 71 insertions, 11 deletions
@@ -11,12 +11,10 @@ general - fix Makefile: test files are source, not runfiles - make tests cleaner: \begingroup\expandafter\ETC. - handle catcodes for Plain +- import/write doc regs ---- -- reload check, declaration, luatex test -- issue a warning if etex not loaded -- handle catcodes for Plain - +- write doc diff --git a/luatexbase-regs.dtx b/luatexbase-regs.dtx index b5af110..e93d57f 100644 --- a/luatexbase-regs.dtx +++ b/luatexbase-regs.dtx @@ -135,12 +135,66 @@ and the derived files % % \section{Implementation} % -% \subsection{\TeX\ package} -% % \begin{macrocode} %<*texpackage> % \end{macrocode} % +% \subsection{Preliminaries} +% +% Reload protection, especially for Plain TeX. +% +% \begin{macrocode} + \csname lltxb@regs@loaded\endcsname +\expandafter\let\csname lltxb@regs@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-regs}[2010/01/14 Registers 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-regs}{LuaTeX is required for this package.^^J + Aborting package loading.} + \expandafter\endinput +\fi +% \end{macrocode} +% +% Make sure the catcode of @ is correct, especially for Plain~\TeX. +% +% \begin{macrocode} +\expandafter\edef\csname lltxb@AtEnd\endcsname{% + \catcode64 \the\catcode64\relax} +\catcode64 11 +% \end{macrocode} +% +% \subsection{Main content} +% % If running \LaTeX, load \texttt{etex.sty}. If not, either % \texttt{etex.src} was loaded at format generation time, or we cannot do % anything. @@ -154,13 +208,22 @@ and the derived files % % To the best of my (mpg) knowledge, all Plain-based formats built with % \eTeX-enabled engines in \TeX\,Live load \texttt{etex.src}. However, -% let's be careful and check that \texttt{etex.sty} or \texttt{src} is +% let's be careful and check that \texttt{etex.sty} or \texttt{etex.src} is % loaded. % % \begin{macrocode} \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname et@xins\endcsname\relax - %%TODO: issue a warning here + \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-regs}{etex macros not loaded!^^J + Registers allocation scheme will not be extended.} \else % \end{macrocode} % @@ -226,12 +289,13 @@ and the derived files \expandafter\let\csname newdimen\endcsname\globdimen \expandafter\let\csname newskip\endcsname\globskip \expandafter\let\csname newbox\endcsname\globbox +\fi % \end{macrocode} % % That's all folks! % % \begin{macrocode} -\fi +\lltxb@AtEnd %</texpackage> % \end{macrocode} % @@ -248,9 +312,7 @@ and the derived files % enough for testing purposes.) % % \begin{macrocode} -%<testplain>\catcode 64 11 %<testplain>\input luatexbase-regs.sty -%<testplain>\catcode 64 12 %<testlatex>\RequirePackage{luatexbase-regs} %<*testplain,testlatex> \def\checkregister#1{% |