[latex3-commits] [git/LaTeX3-latex3-latex2e] develop: adjust glue guard at end of paragraph (ba5c9c06)

Joseph Wright joseph.wright at morningstar2.co.uk
Mon Sep 20 12:30:42 CEST 2021


Repository : https://github.com/latex3/latex2e
On branch  : develop
Link       : https://github.com/latex3/latex2e/commit/ba5c9c061b2ed7ceb116d96cf790c572fe88c050

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

commit ba5c9c061b2ed7ceb116d96cf790c572fe88c050
Author: David Carlisle <d.p.carlisle at gmail.com>
Date:   Sat Sep 18 13:09:01 2021 +0100

    adjust glue guard at end of paragraph


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

ba5c9c061b2ed7ceb116d96cf790c572fe88c050
 base/changes.txt |  6 ++++++
 base/ltpara.dtx  | 23 +++++++++++++----------
 2 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/base/changes.txt b/base/changes.txt
index 700f7462..50f916b2 100644
--- a/base/changes.txt
+++ b/base/changes.txt
@@ -6,6 +6,12 @@ completeness or accuracy and it contains some references to files that
 are not part of the distribution.
 ================================================================================
 
+2021-09-18  David Carlisle  <David.Carlisle at latex-project.org>
+
+	* ltpara.dtx: use a \hskip rather than \kern as the guard to
+	prevent more than one glue item being removed when the primitive
+	par is called twice to process the end of paragraph hooks.
+
 2021-09-12  David Carlisle  <David.Carlisle at latex-project.org>
 
 	* ltfntcmd.dtx: guard definition in \text at command with \unexpanded (gh/665)
diff --git a/base/ltpara.dtx b/base/ltpara.dtx
index 22edac2f..0b646de0 100644
--- a/base/ltpara.dtx
+++ b/base/ltpara.dtx
@@ -14,8 +14,8 @@
 %%% From File: ltpara.dtx
 %
 %    \begin{macrocode}
-\def\ltparaversion{v1.0i}
-\def\ltparadate{2021/08/27}
+\def\ltparaversion{v1.0j}
+\def\ltparadate{2021/09/18}
 %    \end{macrocode}
 %<*driver>
 \documentclass{l3doc}
@@ -1032,12 +1032,13 @@
          \mode_if_horizontal:TF {
 %    \end{macrocode}
 %    The final action (before getting to the point where
-%    \cs{tex_par:D} is called) is to add a kern item so that the
+%    \cs{tex_par:D} is called) is to add a glue item so that the
 %    primitive is prevented from removing glue (if there was some). If
 %      we don't do this and the
 %    horizontal list ended in several glue items we would end up  with
 %    removing two instead of just the last one, which would be wrong.
-%    We use a kern as that is minimally faster.
+%    We use glue (rather than a kern) as that will be removed by the primitive
+%    par.
 %
 %    There is however one other \TeX{} optimization that hurts: in a
 %    sequence like this \verb=$$ ... $$ \par=  \TeX{} will be in
@@ -1047,17 +1048,19 @@
 %    away. The space between \verb=$$= and \cs{par} got already
 %    dropped during the display processing so the \cs{par} is not
 %    removing any space and appending \cs{parfillskip}, instead it
-%    simply goes silently to vmode. Now if we would had added something (to
+%    simply goes silently to vmode. Now if we would have added something (to
 %    prevent glue removal) that would look to \TeX{} like material
 %    after the display and so we would end up with an empty paragraph
 %    just containing \cs{parfillskip}.
 %
-%    We therefore check if the current hlist is empty
-%    (\cs{tex_lastnodetype:D} has the value \texttt{-1} and
-%    only if not we add our kern.
+%    We therefore check if the current hlist does end in glue
+%    (\cs{tex_lastnodetype:D} has the value \texttt{11} and
+%    only if not we add our skip, the guard skip will be removed by the
+%    following \cs{tex_par:D}.
+% \changes{v1.0i}{2021/09/18}{Use skip rather than kern as guard.}
 %    \begin{macrocode}
-           \if_int_compare:w 0 < \tex_lastnodetype:D
-             \tex_kern:D \c_zero_dim
+           \if_int_compare:w 11 = \tex_lastnodetype:D
+             \tex_hskip:D \c_zero_dim
            \fi:
 %    \end{macrocode}
 %    To run the \hook{para/after} hook we first end the





More information about the latex3-commits mailing list.