[latex3-commits] [git/LaTeX3-latex3-latex2e] firstaid-591: First aid for #591 (79dcdae2)

Marcel Fabian Krüger tex at 2krueger.de
Mon Jun 21 21:56:39 CEST 2021


Repository : https://github.com/latex3/latex2e
On branch  : firstaid-591
Link       : https://github.com/latex3/latex2e/commit/79dcdae2145823e0105c6d4667e557568ea75f4a

>---------------------------------------------------------------

commit 79dcdae2145823e0105c6d4667e557568ea75f4a
Author: Marcel Fabian Krüger <tex at 2krueger.de>
Date:   Mon Jun 21 21:03:06 2021 +0200

    First aid for #591


>---------------------------------------------------------------

79dcdae2145823e0105c6d4667e557568ea75f4a
 .../latex2e-first-aid-for-external-files.dtx       | 52 ++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/required/firstaid/latex2e-first-aid-for-external-files.dtx b/required/firstaid/latex2e-first-aid-for-external-files.dtx
index 84ddacb2..b158e48c 100644
--- a/required/firstaid/latex2e-first-aid-for-external-files.dtx
+++ b/required/firstaid/latex2e-first-aid-for-external-files.dtx
@@ -618,6 +618,58 @@
 %    {Temporary fixes for the kernel \\
 %     (until the next patch-level release)}
 %
+% This fixes GitHub issue 591. It is only needed in Lua\TeX\ and replaces just one
+% instance of \cs{tex\_par:D} with the following version which removes
+% other nodes in the current list first.
+%    \begin{macrocode}
+\ExplSyntaxOn
+\sys_if_engine_luatex:T
+  {
+    \newluafunction \g__para_end_empty_par_id_int
+    \exp_args:Nx \everyjob {
+      \exp_not:V \everyjob
+      \exp_not:N \lua_now:n {
+        local~texnest, flush_list, par_token = tex.nest, node.flush_list, token.create'tex_par:D'~
+        lua.get_functions_table()[\int_use:N \g__para_end_empty_par_id_int] = function()
+          local~nest_level = texnest.top~
+          local~cur_head = nest_level.head~
+          flush_list(cur_head.next)
+          nest_level.tail, cur_head.next = cur_head, nil~
+          token.put_next(par_token)
+        end
+      }
+    }
+    \protected \luadef \__para_end_empty_par: \g__para_end_empty_par_id_int
+    \group_begin:
+    \cs_set:Npn \__para_extract_everypar:w #1 \the \toks #2 \s_stop
+      {
+        \tl_gset:Nn \g__para_standard_everypar_tl {
+          \box_gset_to_last:N \g_para_indent_box
+          \group_begin:
+            \__para_end_empty_par:
+          \group_end:
+          \tex_everypar:D { \msg_error:nnnn { hooks }{ para-mode }{before}{vertical} }
+          \@kernel at before@para at before
+          \hook_use:n {para/before}
+          \group_begin:
+            \tex_everypar:D {}
+            \skip_zero:N \tex_parskip:D
+            \tex_noindent:D
+          \group_end:
+          \tex_everypar:D{\g__para_standard_everypar_tl}
+          \@kernel at before@para at begin
+          \hook_use:n {para/begin}
+          \if_mode_horizontal: \else:
+            \msg_error:nnnn { hooks }{ para-mode }{begin}{vertical} \fi:
+          \__para_handle_indent:
+          \the \toks #2
+        }
+      }
+    \exp_last_unbraced:No \__para_extract_everypar:w \g__para_standard_everypar_tl \s_stop
+    \group_end:
+  }
+\ExplSyntaxOff
+%    \end{macrocode}
 %
 %    \begin{macrocode}
 %</kernel>





More information about the latex3-commits mailing list.