14

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?

  • 3
    The latest release of the LaTeX2e kernel should make the use of the etex package a historical thing. That said, it's a package so can't be 'bundled up' with your choice of binary, unless you want to make a custom version of the LaTeX2e format which has it built in (but as I say, that really should not be needed). – Joseph Wright Oct 26 '15 at 16:23
  • @JosephWright: That's one of the reasons I'm a little confused. Why does \usepackage{etex} make a difference anyway when I'm installing TeX Live using install-tl and therefore (presumably) the latest version? Perhaps I'm missing something. tex --version says "TeX 3.14159265 (TeX Live 2015)". – Lightness Races in Orbit Oct 26 '15 at 16:26
  • 1
    note that the extended etex engine is used always with latex in texlive, whether or not \usepackage{etex} is used. A package can not change the underlying engine, it just defined some macros that used the features of etex. It is almost never needed in 2015/01/01 latex but could be used to avoid some problems with \newinsert in special cases. In 2015/10/01 latex it should never be needed. – David Carlisle Oct 26 '15 at 16:49
  • 2
    With MiKTeX I get no error. Just a remark: hyperref should be the last called package and package titlesec is not recommended to be used with KOMA-Script (see resulting warning in the log file!) – Kurt Oct 26 '15 at 17:27
  • 4
    @LightnessRacesinOrbit thanks for the test file. That made it much easier to track down and check that it's not my fault which is of course the important thing:-) – David Carlisle Oct 26 '15 at 17:41
13

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.

  • Interesting. Sounds like in my case the only solution is to downgrade everything (presumably my older package versions fit within original allocator limits by chance), or to wait? – Lightness Races in Orbit Oct 26 '15 at 17:19
  • I don't mind patching bytefield on my system; can I just plonk \let\locdimen\newdimen at the start of it? I might give that a go... – Lightness Races in Orbit Oct 26 '15 at 17:32
  • @LightnessRacesinOrbit we've mailed the author of the package, referencing your test file at this page, so hopefully this will get fixed soon. – David Carlisle Oct 26 '15 at 17:35
  • Am I right in thinking that this preamble should be using \locbox? The original uses \newbox which requires etex.sty with current TL, whereas my version works just loading ealloc.sty. Er... I think. Not at all sure, really. But I know the other workarounds I have there are not correct (though they might be the only way to compile the document without alteration, which the OP needs). – cfr Oct 27 '15 at 3:51
  • Is there a way to determine whether this fixed the problem? I'm not seeing any changelogs. – Lightness Races in Orbit Nov 4 '16 at 16:08
1

Because the error does not occur with the current MiKTeX (updated today) I add this as answer here.

I reduced the given MWE and added command \listfiles:

\listfiles
\documentclass{scrartcl}

\usepackage{bytefield}

\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}

Then TeXnicCenter shows me in the log area:

TeXnicCenter log area

and the .log file (only parts, with list of used packages and versions):

This is pdfTeX, Version 3.14159265-2.6-1.40.16 (MiKTeX 2.9 64-bit) (preloaded format=pdflatex 2015.7.19)  26 OCT 2015 21:05
entering extended mode
**275042.tex
(275042.tex
LaTeX2e <2015/01/01> patch level 2 <=====================================

seems that MiKTeX does still use version 2015/01/01. And the list of used packages:

 *File List*
scrartcl.cls    2015/10/03 v3.19a KOMA-Script document class (article)
scrkbase.sty    2015/10/03 v3.19a KOMA-Script package (KOMA-Script-dependent basics and keyval usage)
 scrbase.sty    2015/10/03 v3.19a KOMA-Script package (KOMA-Script-independent basics and keyval usage)
  keyval.sty    2014/10/28 v1.15 key=value parser (DPC)
scrlfile.sty    2015/10/03 v3.19a KOMA-Script package (loading files)
tocbasic.sty    2015/10/03 v3.19a KOMA-Script package (handling toc-files)
scrsize11pt.clo    2015/10/03 v3.19a KOMA-Script font size class option (11pt)
typearea.sty    2015/10/03 v3.19a KOMA-Script package (type area)
bytefield.sty    2014/06/03 v2.2 Network protocol diagrams
    calc.sty    2014/10/28 v4.3 Infix arithmetic (KKT,FJ)
 ***********

Edit:

If I use the complete given MVE, I get only 7 warnings, resulting from the usage of titlesec with KOMA-Script and one warning to better use \pgfplotsset{compat=1.12}. No other error or warnings!

If needed I can add the complete .log file, here only the relevant parts with the warnings:

Class scrartcl Warning: Usage of package `titlesec' together
(scrartcl)              with a KOMA-Script class is not recommended.
(scrartcl)              I'd suggest to use the package only
(scrartcl)              if you really need it, because it breaks several
(scrartcl)              KOMA-Script features, i.e., option `headings' and
(scrartcl)              the extended optional argument of the section
(scrartcl)              commands.
(scrartcl)              Nevertheless, using requested
(scrartcl)              package `titlesec' on input line 19.

("C:\Program Files\MiKTeX 2.9\tex\latex\titlesec\titlesec.sty"
Package: titlesec 2011/12/15 v2.10.0 Sectioning titles
\ttl@box=\box53
\beforetitleunit=\skip82
\aftertitleunit=\skip83
\ttl@plus=\dimen190
\ttl@minus=\dimen191
\ttl@toksa=\toks39
\titlewidth=\dimen192
\titlewidthlast=\dimen193
\titlewidthfirst=\dimen194


Package titlesec Warning: Non standard sectioning command detected
(titlesec)                Using default spacing and no format.


Package titlesec Warning: Non standard sectioning command detected
(titlesec)                Using default spacing and no format.


Package titlesec Warning: Non standard sectioning command detected
(titlesec)                Using default spacing and no format.


Package titlesec Warning: Non standard sectioning command detected
(titlesec)                Using default spacing and no format.


Package titlesec Warning: Non standard sectioning command detected
(titlesec)                Using default spacing and no format.

)

Package scrartcl Warning: Activating an ugly workaround for a missing
(scrartcl)                feature of package `titlesec` on input line 19.

and

ABD: EveryShipout initializing macros

Package pgfplots Warning: running in backwards compatibility mode (unsuitable tick labels; missing features). Consider w
riting \pgfplotsset{compat=1.12} into your preamble.
 on input line 20.

\height=\dimen197 (locally)
\depth=\dimen198 (locally)
\totalheight=\dimen199 (locally)
\width=\dimen200 (locally)

Used packages and versions:

 *File List*
scrartcl.cls    2015/10/03 v3.19a KOMA-Script document class (article)
scrkbase.sty    2015/10/03 v3.19a KOMA-Script package (KOMA-Script-dependent basics and keyval usage)
 scrbase.sty    2015/10/03 v3.19a KOMA-Script package (KOMA-Script-independent basics and keyval usage)
  keyval.sty    2014/10/28 v1.15 key=value parser (DPC)
scrlfile.sty    2015/10/03 v3.19a KOMA-Script package (loading files)
tocbasic.sty    2015/10/03 v3.19a KOMA-Script package (handling toc-files)
scrsize11pt.clo    2015/10/03 v3.19a KOMA-Script font size class option (11pt)
typearea.sty    2015/10/03 v3.19a KOMA-Script package (type area)
listings.sty    2015/06/04 1.6 (Carsten Heinz)
 lstmisc.sty    2015/06/04 1.6 (Carsten Heinz)
listings.cfg    2015/06/04 1.6 listings configuration
graphicx.sty    2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
graphics.sty    2014/10/28 v1.0p Standard LaTeX Graphics (DPC,SPQR)
    trig.sty    1999/03/16 v1.09 sin cos tan (DPC)
graphics.cfg    2007/01/18 v1.5 graphics configuration of teTeX/TeXLive
  pdftex.def    2011/05/27 v0.06d Graphics/color for pdfTeX
infwarerr.sty    2010/04/08 v1.3 Providing info/warning/error messages (HO)
 ltxcmds.sty    2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
  framed.sty    2011/10/22 v 0.96: framed or shaded text with page breaks
hyperref.sty    2012/11/06 v6.83m Hypertext links for LaTeX
hobsub-hyperref.sty    2012/04/25 v1.12 Bundle oberdiek, subset hyperref (HO)
hobsub-generic.sty    2012/04/25 v1.12 Bundle oberdiek, subset generic (HO)
  hobsub.sty    2012/04/25 v1.12 Construct package bundles (HO)
ifluatex.sty    2010/03/01 v1.3 Provides the ifluatex switch (HO)
  ifvtex.sty    2010/03/01 v1.5 Detect VTeX and its facilities (HO)
 intcalc.sty    2007/09/27 v1.1 Expandable calculations with integers (HO)
   ifpdf.sty    2011/01/30 v2.3 Provides the ifpdf switch (HO)
etexcmds.sty    2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO)
kvsetkeys.sty    2012/04/25 v1.16 Key value parser (HO)
kvdefinekeys.sty    2011/04/07 v1.3 Define keys (HO)
pdftexcmds.sty    2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO)
pdfescape.sty    2011/11/25 v1.13 Implements pdfTeX's escape features (HO)
bigintcalc.sty    2012/04/08 v1.3 Expandable calculations on big integers (HO)
  bitset.sty    2011/01/30 v1.1 Handle bit-vector datatype (HO)
uniquecounter.sty    2011/01/30 v1.2 Provide unlimited unique counter (HO)
letltxmacro.sty    2010/09/02 v1.4 Let assignment for LaTeX macros (HO)
 hopatch.sty    2011/06/24 v1.1 Wrapper for package hooks (HO)
xcolor-patch.sty    2011/01/30 xcolor patch
atveryend.sty    2011/06/30 v1.8 Hooks at the very end of document (HO)
atbegshi.sty    2011/10/05 v1.16 At begin shipout hook (HO)
refcount.sty    2011/10/16 v3.4 Data extraction from label references (HO)
 hycolor.sty    2011/01/30 v1.7 Color options for hyperref/bookmark (HO)
 ifxetex.sty    2010/09/12 v0.6 Provides ifxetex conditional
 auxhook.sty    2011/03/04 v1.3 Hooks for auxiliary files (HO)
kvoptions.sty    2011/06/30 v3.11 Key value format for package options (HO)
  pd1enc.def    2012/11/06 v6.83m Hyperref: PDFDocEncoding definition (HO)
hyperref.cfg    2002/06/06 v1.2 hyperref configuration of TeXLive
     url.sty    2013/09/16  ver 3.4  Verb mode for urls, etc.
 hpdftex.def    2012/11/06 v6.83m Hyperref driver for pdfTeX
rerunfilecheck.sty    2011/04/15 v1.7 Rerun checks for auxiliary files (HO)
multirow.sty    
pgfplots.sty    2015/05/02 v1.12.1 Data Visualization (1.12.1)
    tikz.sty    2015/08/07 v3.0.1a (rcs-revision 1.151)
     pgf.sty    2015/08/07 v3.0.1a (rcs-revision 1.15)
  pgfrcs.sty    2015/08/07 v3.0.1a (rcs-revision 1.31)
everyshi.sty    2001/05/15 v3.00 EveryShipout Package (MS)
  pgfrcs.code.tex
 pgfcore.sty    2010/04/11 v3.0.1a (rcs-revision 1.7)
  pgfsys.sty    2014/07/09 v3.0.1a (rcs-revision 1.48)
  pgfsys.code.tex
pgfsyssoftpath.code.tex    2013/09/09  (rcs-revision 1.9)
pgfsysprotocol.code.tex    2006/10/16  (rcs-revision 1.4)
  xcolor.sty    2007/01/21 v2.11 LaTeX color extensions (UK)
   color.cfg    2007/01/18 v1.5 color configuration of teTeX/TeXLive
colortbl.sty    2012/02/13 v1.0a Color table columns (DPC)
   array.sty    2014/10/28 v2.4c Tabular extension package (FMi)
 pgfcore.code.tex
pgfcomp-version-0-65.sty    2007/07/03 v3.0.1a (rcs-revision 1.7)
pgfcomp-version-1-18.sty    2007/07/23 v3.0.1a (rcs-revision 1.1)
  pgffor.sty    2013/12/13 v3.0.1a (rcs-revision 1.25)
 pgfkeys.sty    
 pgfkeys.code.tex
 pgfmath.sty    
 pgfmath.code.tex
  pgffor.code.tex
    tikz.code.tex
algorithm.sty    2009/08/24 v0.1 Document Style `algorithm' - floating environment
   float.sty    2001/11/08 v1.3d Float enhancements (AL)
  ifthen.sty    2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)
bytefield.sty    2014/06/03 v2.2 Network protocol diagrams
    calc.sty    2014/10/28 v4.3 Infix arithmetic (KKT,FJ)
longtable.sty    2014/10/28 v4.11 Multi-page Table package (DPC)
    ulem.sty    2012/05/18
  syntax.sty    1996/05/17 1.07 Syntax typesetting (MDW)
titlesec.sty    2011/12/15 v2.10.0 Sectioning titles
supp-pdf.mkii
 nameref.sty    2012/10/27 v2.43 Cross-referencing by name of section
gettitlestring.sty    2010/12/03 v1.4 Cleanup title references (HO)
275042-1.out
275042-1.out
 ***********
  • 1
    You'll need to try the full MWE to see the issue: you need to use up the 'standard pool' of dimens. – Joseph Wright Oct 26 '15 at 20:26
  • Force a format update :-) – Joseph Wright Oct 26 '15 at 21:34
0

For automating setup of the build environment, such that recent TeX Live package versions do not conflict with these documents, I've added the following to my Dockerfile:

RUN sed -i '1s/^/\\let\\locdimen\\newdimen\n/' \
    /usr/local/texlive/2015/texmf-dist/tex/latex/bytefield/bytefield.sty

with explanatory comments, and a note to remove this terrible hack the next time the Docker image is rebuilt, if the bytefield package has been "fixed" by then.

This does effectively tell LaTeX that the extended allocators are always to be used. :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.