[Tex/LaTex] etex package still seems to be necessary in LaTeX2e 2015/10/01

bytefielde-texpdftextexlive

I've experienced this problem after upgrading to TeX Live 2015 and getting newer versions of all my packages. (Presumably some of those package updates are to blame.)

MVE:

\documentclass{scrartcl}

\PassOptionsToPackage{table}{xcolor}
\usepackage{listings}
\usepackage{graphicx}
\usepackage{framed}
\usepackage[bookmarksnumbered]{hyperref}
\usepackage{multirow}
\usepackage{pgfplots}
\usepackage{algorithm}
\usepackage{bytefield}
\usepackage{longtable}
\usepackage[normalem]{ulem}
\usepackage{syntax}
\usepackage{tikz}
\usepackage{titlesec}

\begin{document}

\begin{figure}
\begin{bytefield}{32}
    \bitheader{0,8,16,24,32} \\
    \bitbox{16}{Kind} & \bitbox{16}{} \\
    \wordbox{3}{Payload} \\
\end{bytefield}
\end{figure}

\end{document}

TeX Live 2015, "LaTeX2e <2015/10/01> patch level 1":

! No room for a new \dimen .
\ch@ck ...\else \errmessage {No room for a new #3}
                                                  \fi
l.24    \bitbox{16}{Kind}
                        & \bitbox{16}{} \\

Installed on Fedora 22 using install-tl. All packages confirmed up-to-date with tlmgr.

TeX Live 2007, "LaTeX2e <2005/12/01>":

  • Successful build

Installed using yum install texlive texlive-latex texlive-dvips texlive-contex texlive-utils texlive-texmf-latex on Fedora 11; some packages installed manually. Versions unknown (I could probably figure it out if needed.)


Adding \usepackage{etex} fixes it, which confuses me because I've heard LaTeX2e 2015/10/01 should have rendered that obsolete. Furthermore, I cannot simply add it to my LaTeX documents, because I cannot alter historical releases of my project and I wish for those to be buildable on my new system.

I could create an isolated build environment with my old package versions, to support these historical releases — indeed this is my plan B — but my old environment was clumsily configured (those manual package installs in particular) and I'd rather stick with the far more maintainable set up I have just created on my new server with shiny TeX Live 2015 (particularly as we cannot request that install-tl automatically install old versions of TeX Live).

How should I resolve this? Can I somehow indicate to TeX Live, within the surrounding Linux environment, that this package is always to be used? (Then I could build my old documentation without altering its .tex or build commands. A shell alias of, say, alias pdflatex=pdflatex -etex would be acceptable, though passing -etex to pdflatex does not appear to remedy the problem for me.)

Or could you tell me why it seems to be necessary at all, and help me remove that factor?

Best Answer

This issue is fixed in bytefield v2.3.

Original answer follows.


The issue arises as the bytefield package trees to set up 'local' allocation of dimen registers. If etex is loaded it uses the functionality from that package but if not uses an 'internal' version of the original allocator code which ignores e-TeX and the kernel improvements. That can all be bypassed with

\let\locdimen\newdimen

anywhere before

\usepackage{bytefield}

A long-term solution is to get the package altered: the team will try to get that to happen.