[tex-live] About \newXeTeXintercharclass and latexrelease package

Qing Lee sobenlee at gmail.com
Sat May 9 00:10:48 CEST 2015


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


More information about the tex-live mailing list