diff options
author | Karl Berry <karl@freefriends.org> | 2024-03-24 22:32:26 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-03-24 22:32:26 +0000 |
commit | 3ca9ef1101cf85561ee22ce2c7162e526ecd181f (patch) | |
tree | 34f3d08926ebc16325126a97f48dc34181d80781 | |
parent | c03a438931521b91dad525209647d62c14e24eed (diff) |
2024 branch: \aftergroup \output routine fix from DRF
git-svn-id: svn://tug.org/texlive/branches/branch2024@70751 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Build/source/texk/web2c/ChangeLog | 7 | ||||
-rw-r--r-- | Build/source/texk/web2c/unbalanced-braces.ch | 19 |
2 files changed, 24 insertions, 2 deletions
diff --git a/Build/source/texk/web2c/ChangeLog b/Build/source/texk/web2c/ChangeLog index b596f6db3ab..f2b53abdf84 100644 --- a/Build/source/texk/web2c/ChangeLog +++ b/Build/source/texk/web2c/ChangeLog @@ -1,3 +1,10 @@ +2024-03-24 Karl Berry <karl@freefriends.org> + + * unbalanced-braces.ch: fix from DRF in order to make + \aftergroup work again with the output routine. Report + from David Carlisle and Frank Mittelbach, thread starts at: + https://tug.org/pipermail/tex-live/2024-March/050290.html + 2024-03-10 Karl Berry <karl@tug.org> * TL'24 release. diff --git a/Build/source/texk/web2c/unbalanced-braces.ch b/Build/source/texk/web2c/unbalanced-braces.ch index fab92f736a0..9cecdd465ef 100644 --- a/Build/source/texk/web2c/unbalanced-braces.ch +++ b/Build/source/texk/web2c/unbalanced-braces.ch @@ -47,7 +47,7 @@ begin decr(param_ptr); flush_list(param_stack[param_ptr]); end - else if (token_type=output_text)and(output_active) then + else if (token_type=output_text)and(not output_can_end) then fatal_error("Unbalanced output routine"); @.Unbalanced output routine@> @z @@ -103,6 +103,19 @@ while (loc=null)and(token_type<>v_template) % that we were just finished with it, so it's where the brace % came from. +@x [45.989] l.19364 p.B417 +@!output_active:boolean; {are we in the midst of an output routine?} +@y +@!output_active:boolean; {are we in the midst of an output routine?} +@!output_can_end:boolean; {is this an auspicious time for it to end?} +@z + +@x [45.989] l.19367 p.B417 +output_active:=false; insert_penalties:=0; +@y +output_active:=false; output_can_end:=false; insert_penalties:=0; +@z + % In <Resume the page builder after an output routine has come to an end>: @x [45.1026] l.19938 p.B432 begin if (loc<>null) or @@ -121,8 +134,10 @@ begin end_token_list; {conserve stack space in case more outputs are triggered} end_graf; unsave; output_active:=false; insert_penalties:=0;@/ @y -end_graf; unsave; output_active:=false; insert_penalties:=0;@/ +output_can_end:=true; end_token_list; {conserve stack space in case more outputs are triggered} +output_can_end:=false; +end_graf; unsave; output_active:=false; insert_penalties:=0;@/ @z % <Expand macros in the token list and...> had set mode:=0 while |