Skip to content

Two columns for the classes that ask for them, by default - #200

Merged
tannevaled merged 1 commit into
mainfrom
twocolumn-measure
Sep 3, 2026
Merged

tannevaled merged 1 commit into
mainfrom
twocolumn-measure

Conversation

@tannevaled

Copy link
Copy Markdown
Contributor

GOTEX_TWOCOLUMN gated the two-column output routine for every class whose
\twocolumn is not LaTeX's own — revtex reprint, acmart sigconf, IEEEtran
conference — on the strength of one paper whose page count overshot. Measured
over the 157 arXiv papers with a tectonic reference, it is better on every count
that matters:

Σ page error median exact within 1 page within 2 pages
one column (today) 632 3 20 59 77
two columns 616 2 21 58 83

21 papers closer, 11 further, 125 unchanged. beamer untouched at 40 pages of
error over 79 decks. GOTEX_TWOCOLUMN=0 turns it back off.

Two things the flag was hiding

\onecolumn records a region as soon as the column machinery is live, and both
the float placer and the page builder read "there are regions" as "the page is in
two columns":

  • doFloatBegin sent every float of an ordinary article back to the inline path;
  • Pages() handed the material to the region pager, which knows nothing about
    floatNodes and dropped them from the output entirely.

Both now ask whether a region actually HAS two columns. The second one gets a
regression test (a \onecolumn document with a captured float must still show
it) that fails on main.

Why this is on the critical path

Setting a two-column paper in one column is what makes its figures twice too
wide: \linewidth is a COLUMN there, and 26 of the 57 papers that inflate under
the faithful figure widths of #195 are two-column classes (issue #146). This is
the piece that has to land before those widths can be judged at all.

GOTEX_TWOCOLUMN gated the two-column output routine for every class whose
\twocolumn is not LaTeX's own — revtex reprint, acmart sigconf, IEEEtran
conference — on the strength of one paper whose page count overshot. Measured
over the 157 arXiv papers with a tectonic reference, it is better on every count
that matters:

    Σ page error   632 → 616      median error   3 → 2 pages
    within 2 pages  77 → 83       exact         20 → 21

21 papers closer, 11 further, 125 unchanged; beamer untouched at 40 over 79
decks. GOTEX_TWOCOLUMN=0 turns it back off.

Two things had to be right first, both of which the flag had been hiding:

\onecolumn records a region as soon as the column machinery is live, and both a
float placed and a page built read "there are regions" as "the page is in two
columns". The single-column float placer sent every float of an ordinary article
back to the inline path, and Pages() handed the material to the region pager,
which knows nothing about floatNodes and dropped them. Both now ask whether a
region actually HAS two columns.

Setting a two-column paper in one column is also what makes its figures twice too
wide — \linewidth is a COLUMN there — and half the papers that inflate under
faithful figure widths (issue #146) are two-column classes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@tannevaled
tannevaled merged commit e443e30 into main Sep 3, 2026
18 checks passed
@tannevaled
tannevaled deleted the twocolumn-measure branch September 3, 2026 17:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant