[latex3-commits] [git/LaTeX3-latex3-latex2e] gh524: Add \tracingstacklevels emulation for LuaTeX (40513114)

PhelypeOleinik phelype.oleinik at latex-project.org
Tue Apr 20 02:18:23 CEST 2021


Repository : https://github.com/latex3/latex2e
On branch  : gh524
Link       : https://github.com/latex3/latex2e/commit/40513114e041f3d9a87e3fc491f4db43e8afd5bf

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

commit 40513114e041f3d9a87e3fc491f4db43e8afd5bf
Author: PhelypeOleinik <phelype.oleinik at latex-project.org>
Date:   Mon Apr 19 21:18:23 2021 -0300

    Add \tracingstacklevels emulation for LuaTeX
    
    LuaTeX doesn't provide \tracingstacklevels directly, but a callback that
    can be used to implement that functionality.


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

40513114e041f3d9a87e3fc491f4db43e8afd5bf
 base/ltfinal.dtx  | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 base/ltluatex.dtx |  6 +++--
 base/ltplain.dtx  | 32 +++++++++++++++++++++++++-
 3 files changed, 100 insertions(+), 5 deletions(-)

diff --git a/base/ltfinal.dtx b/base/ltfinal.dtx
index 049d5e9c..b6829932 100644
--- a/base/ltfinal.dtx
+++ b/base/ltfinal.dtx
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltfinal.dtx}
-             [2021/04/13 v2.2n LaTeX Kernel (Final Settings)]
+             [2021/04/18 v2.2o LaTeX Kernel (Final Settings)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltfinal.dtx}
@@ -242,7 +242,70 @@
 % \end{macro}
 % \end{macro}
 %
-%
+% \begin{macro}{trace_stack_levels}
+%   Now define the Lua function to emulate \cs{tracingstacklevels} and
+%   install it in the \texttt{input_level_string} callback.
+% \changes{v2.0k}{2016/01/05}{Remove duplicated code}
+%    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2021/06/01}{trace_stack_levels}%
+%<latexrelease>                 {Lua trace_stack_levels function}%
+\ifx\directlua\@undefined
+\else
+%<*2ekernel>
+  \expanded{%
+    \everyjob{\the\everyjob
+    \noexpand%\directlua
+%</2ekernel>
+    \directlua{%
+      local function trace_stack_levels (input_ptr)
+        local tracingstacklevels = tex.count.tracingstacklevels
+        if tex.tracingmacros > 0 or input_ptr < tracingstacklevels then
+          if tracingstacklevels > 0 then
+            if input_ptr < tracingstacklevels then
+              return "\string\n\string~" .. string.rep(".",input_ptr)
+            else
+              return "\string~\string~"
+            end
+          else
+            return "\string\n"
+          end
+        else
+          return ""
+        end
+      end
+%<*latexrelease>
+      if luatexbase.callbacktypes['input_level_string'] and %
+         not in_callback('input_level_string','tracingstacklevels') then
+%</latexrelease>
+      luatexbase.add_to_callback('input_level_string',
+        trace_stack_levels,'tracingstacklevels')
+%<*latexrelease>
+      end
+%</latexrelease>
+    }%
+%<*2ekernel>
+  }}%
+%</2ekernel>
+\fi
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>
+%<latexrelease>\IncludeInRelease{0000/00/00}{trace_stack_levels}%
+%<latexrelease>                 {Lua trace_stack_levels function}%
+%<latexrelease>\ifx\directlua\@undefined
+%<latexrelease>\else
+%<latexrelease>  \directlua{%
+%<latexrelease>    if luatexbase.callbacktypes['input_level_string'] and %
+%<latexrelease>       in_callback('input_level_string','tracingstacklevels') then
+%<latexrelease>        remove_from_callback('input_level_string','tracingstacklevels')
+%<latexrelease>    end}%
+%<latexrelease>\fi
+%<latexrelease>\EndIncludeInRelease
+%</2ekernel|latexrelease>
+%<*2ekernel>
+%    \end{macrocode}
+% \end{macro}
 %
 % The default values of the picture and |\fbox| parameters:
 %    \begin{macrocode}
diff --git a/base/ltluatex.dtx b/base/ltluatex.dtx
index e3fa9f93..9e3d3f40 100644
--- a/base/ltluatex.dtx
+++ b/base/ltluatex.dtx
@@ -28,7 +28,7 @@
 \ProvidesFile{ltluatex.dtx}
 %</driver>
 %<*tex>
-[2021/01/15 v1.1s
+[2021/04/18 v1.1t
 %</tex>
 %<plain>  LuaTeX support for plain TeX (core)
 %<*tex>
@@ -1399,12 +1399,14 @@ local callbacktypes = callbacktypes or {
 % \changes{v1.1j}{2019/06/18}{process\_pdf\_image\_content added}
 % \changes{v1.1j}{2019/10/22}{page\_objnum\_provider and process\_pdf\_image\_content classified data}
 % \changes{v1.1l}{2020/02/02}{page\_order\_index added}
+% \changes{v1.1t}{2021/04/18}{input\_level\_string added}
 %    \begin{macrocode}
   finish_pdffile            = data,
   finish_pdfpage            = data,
   page_objnum_provider      = data,
   page_order_index          = data,
   process_pdf_image_content = data,
+  input_level_string        = data,
 %    \end{macrocode}
 % Section 8.7: font-related callbacks.
 % \changes{v1.1e}{2017/03/28}{glyph\_stream\_provider added}
@@ -1477,7 +1479,7 @@ end
 %     functions in inverse order.
 %   \item[exclusive] is for functions with more complex signatures; functions in
 %     this type of callback are \emph{not} combined: An error is raised if
-%     a second callback is registered..
+%     a second callback is registered.
 % \end{description}
 %
 % Handler for |data| callbacks.
diff --git a/base/ltplain.dtx b/base/ltplain.dtx
index b5805836..e0fbcecf 100644
--- a/base/ltplain.dtx
+++ b/base/ltplain.dtx
@@ -920,7 +920,37 @@
 %    \end{macrocode}
 % \tracingcommands=0
 % \tracingrestores=0
-% \tracingstacklevels=0 % added in 2021
+%    \end{macrocode}
+%
+% \begin{macro}{\tracingstacklevels}
+%   For Lua\TeX, the \cs{tracingstacklevels} functionality was
+%   implemented as a callback, so here we just define the count register
+%   to hold the value of the parameter.
+%    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2021/06/01}{\tracingstacklevels}%
+%<latexrelease>                 {tracingstacklevels}%
+\ifx\directlua\@undefined
+  % \tracingstacklevels=0 % added in 2021
+\else
+  \newcount\tracingstacklevels
+  % Code for \tracingstacklevels defined in ltfinal.dtx
+\fi
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>
+%<latexrelease>\IncludeInRelease{0000/00/00}{\tracingstacklevels}%
+%<latexrelease>                 {tracingstacklevels}%
+%<latexrelease>\ifx\directlua\@undefined
+%<latexrelease>\else
+%<latexrelease>  \let\tracingstacklevels\@undefined
+%<latexrelease>\fi
+%<latexrelease>\EndIncludeInRelease
+%</2ekernel|latexrelease>
+%<*2ekernel>
+%    \end{macrocode}
+% \end{macro}
+%
 % \language=0
 %    \begin{macrocode}
 \uchyph=1





More information about the latex3-commits mailing list.