[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.