[tex-live] About \newXeTeXintercharclass and latexrelease package

David Carlisle d.p.carlisle at gmail.com
Sat May 9 12:10:34 CEST 2015


On 8 May 2015 at 23:10, Qing Lee <sobenlee at gmail.com> wrote:
> Hello,
>
> After running the following example,
>
>     % !TeX program  = XeLaTeX
>     \RequirePackage[2014/01/01]{latexrelease}
>     \newXeTeXintercharclass\foo
>     \stop
>
> an error occurred:
>
>     ! Undefined control sequence.
>     \newXeTeXintercharclass ->\e at alloc
>                                        \XeTeXcharclass \chardef
> \xe at alloc@interc...
>     l.3 \newXeTeXintercharclass
>                                \foo
>     ?
>
> It seems that \newXeTeXintercharclass is always defined in LaTeX 2015/01/01,
> while \e at alloc is not defined correspondingly.
>
> I can copy some codes from xetex.ini to fix this issue,
>
>     \makeatletter
>
>     \IncludeInRelease{0000/00/00}{\newXeTeXintercharclass}{Extended Allocation}
>     %
>     % Allocator for \XeTeXcharclass values, from Enrico Gregorio
>     %
>     \newcount\xe at alloc@intercharclass % allocates intercharclass
>     \xe at alloc@intercharclass=\thr@@ % from 4 (1,2 and 3 are used by CJK, AFAIK)
>     \def\xe at alloc@#1#2#3#4#5{\global\advance#1\@ne
>      \xe at ch@ck#1#4#2% make sure there's still room
>      \allocationnumber#1%
>      \global#3#5\allocationnumber
>      \wlog{\string#5=\string#2\the\allocationnumber}}
>     \def\xe at ch@ck#1#2#3{%
>      \ifnum#1<#2\else
>       \errmessage{No room for a new #3}%
>      \fi}
>     \def\newXeTeXintercharclass{%
>      \xe at alloc@\xe at alloc@intercharclass\XeTeXcharclass\chardef\@cclv}
> %at most 254
>     \EndIncludeInRelease
>
>     \makeatother
>
> But I don't think this is a good workaround.
>
> Best,
> Qing Lee



actually I think that probably is a good workaround.
probably if   \RequirePackage[2014/01/01]{latexrelease} is specified
I should have undefined \newXeTeXintercharclass as well but that would just
have slightly changed the error message you got.

That's the consistent thing for the latex core to do as old releases
didn't define this
however of course in practice the format used did have the definition,
coming from the
ini file.

Currently the ini file is restructed to just making definitions
_before_ latex.ltx is loaded
so it might be best if we put this into latex.ltx, I'll discuss it
with the latex team.

as a matter of interest, did you need
\RequirePackage[2014/01/01]{latexrelease}
or did this come from a test file, didn't expect it to be used much
with extended tex formats
which by nature are subject to change anyway, so freezing th emacro
package is less useful
than with classic tex.

David


More information about the tex-live mailing list