summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/base/ltspace.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/base/ltspace.dtx')
-rw-r--r--Master/texmf-dist/source/latex/base/ltspace.dtx86
1 files changed, 75 insertions, 11 deletions
diff --git a/Master/texmf-dist/source/latex/base/ltspace.dtx b/Master/texmf-dist/source/latex/base/ltspace.dtx
index f74db0b929b..6f212bba159 100644
--- a/Master/texmf-dist/source/latex/base/ltspace.dtx
+++ b/Master/texmf-dist/source/latex/base/ltspace.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright 1993-2016
+% Copyright 1993-2018
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltspace.dtx}
- [2016/07/04 v1.3g LaTeX Kernel (spacing)]
+ [2018/10/10 v1.3i LaTeX Kernel (spacing)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltspace.dtx}
@@ -547,12 +547,20 @@
% \end{macro}
%
% \begin{macro}{\@esphack}
-% Companion to |\@bsphack|.
+% Companion to |\@bsphack|. If this command is not properly paired
+% with |\@bsphack| one might end up with a low-level \TeX{} error:
+% ``BAD spacefactor''. One possible cause is calling |\@bsphack| in
+% vertical mode, then doing something that gets you (sometimes) into
+% horizontal mode and finally calling |\@esphack|. Even if no error
+% is generated that is wrong, because |\@esphack| will then use the
+% saved values for |\@savsk| and |\@savsf| from some earlier
+% invocation of |\@bsphack| which will have nothing to do with the
+% current situation.
% \changes{v1.3d}{2015/01/11}{Allow hyphenation (Donald Arseneau pr/3498) (latexrelease)}
% \begin{macrocode}
%</2ekernel>
-%<latexrelease>\IncludeInRelease{2015/10/01}%
-%<latexrelease> {\@esphack}{hyphenation after space hack}%
+%<latexrelease>\IncludeInRelease{2018/10/10}%
+%<latexrelease> {\@esphack}{hyphenation and nobreak after space hack}%
%<*2ekernel|latexrelease>
\def\@esphack{%
\relax
@@ -568,11 +576,36 @@
\fi
\ignorespaces
\fi
+% \end{macrocode}
+% \changes{v1.3i}{2018/10/10}
+% {Don't introduce breakpoints if @nobreak is true and after sections}
+% \begin{macrocode}
+ \else
+ \ifvmode
+ \if@nobreak\nobreak\else\if@noskipsec\nobreak\fi\fi
+ \fi
+% \end{macrocode}
+%
+% \begin{macrocode}
\fi}%
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{2015/10/01}%
+%<latexrelease> {\@esphack}{hyphenation and nobreak after space hack}%
+%<latexrelease>\def\@esphack{%
+%<latexrelease> \relax
+%<latexrelease> \ifhmode
+%<latexrelease> \spacefactor\@savsf
+%<latexrelease> \ifdim\@savsk>\z@
+%<latexrelease> \ifdim\lastskip=\z@
+%<latexrelease> \nobreak \hskip\z@skip
+%<latexrelease> \fi
+%<latexrelease> \ignorespaces
+%<latexrelease> \fi
+%<latexrelease> \fi}%
+%<latexrelease>\EndIncludeInRelease
%<latexrelease>\IncludeInRelease{2015/01/01}%
-%<latexrelease> {\@esphack}{hyphenation after space hack}%
+%<latexrelease> {\@esphack}{hyphenation and nobreak after space hack}%
%<latexrelease>\def\@esphack{%
%<latexrelease> \relax
%<latexrelease> \ifhmode
@@ -584,7 +617,7 @@
%<latexrelease> \fi}%
%<latexrelease>\EndIncludeInRelease
%<latexrelease>\IncludeInRelease{0000/00/00}%
-%<latexrelease> {\@esphack}{hyphenation after space hack}%
+%<latexrelease> {\@esphack}{hyphenation and nobreak after space hack}%
%<latexrelease>\def\@esphack{%
%<latexrelease> \relax
%<latexrelease> \ifhmode
@@ -1093,21 +1126,52 @@
% \end{macrocode}
% \end{macro}
%
-%
+%
+% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2018/12/01}%
+%<latexrelease> {\thinspace}{Start LR-mode}%
+% \end{macrocode}
%
%
% \begin{macro}{\thinspace}
% \begin{macro}{\negthinspace}
% \begin{macro}{\enspace}
+% \changes{v1.3h}{2018/09/24}{Start LR-mode if necessary (git/49)}
% \begin{macrocode}
-\def\thinspace{\kern .16667em }
-\def\negthinspace{\kern-.16667em }
-\def\enspace{\kern.5em }
+\def\thinspace{\leavevmode@ifvmode\kern .16667em }
+\def\negthinspace{\leavevmode@ifvmode\kern-.16667em }
+\def\enspace{\leavevmode@ifvmode\kern.5em }
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\leavevmode@ifvmode}
+% Leave vmode but only if we are really in vmode, otherwise the
+% expansion is empty (which is not the case with the default definition).
+% \changes{v1.3h}{2018/09/24}{Macro added (git/49)}
+% \begin{macrocode}
+\protected\def\leavevmode@ifvmode{\ifvmode\expandafter\indent\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\thinspace}{Start LR-mode}%
+%<latexrelease>\def\thinspace{\kern .16667em }
+%<latexrelease>\def\negthinspace{\kern-.16667em }
+%<latexrelease>\def\enspace{\kern.5em }
+%<latexrelease>\let\leavevmode@ifvmode\@undefined
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+%
+%
+%
% \begin{macro}{\enskip}
% \begin{macro}{\quad}
% \begin{macro}{\qquad}