summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdown.tex12
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdown.sty188
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown.lua131
3 files changed, 199 insertions, 132 deletions
diff --git a/Master/texmf-dist/tex/generic/markdown/markdown.tex b/Master/texmf-dist/tex/generic/markdown/markdown.tex
index 35028f1f0c4..04fcef57675 100644
--- a/Master/texmf-dist/tex/generic/markdown/markdown.tex
+++ b/Master/texmf-dist/tex/generic/markdown/markdown.tex
@@ -262,7 +262,7 @@
{
\tl_set:Nn
\l_tmpa_tl
- { \str_upper_case:n { #1 } }
+ { \str_uppercase:n { #1 } }
\tl_set:Nx
#2
{
@@ -424,8 +424,8 @@
{ boolean }
{ true }
\ExplSyntaxOff
-\def\markdownLastModified{2022/06/27}%
-\def\markdownVersion{2.15.3-0-g7c8e03d}%
+\def\markdownLastModified{2022/07/29}%
+\def\markdownVersion{2.15.4-0-g4cbe4e3}%
\let\markdownBegin\relax
\let\markdownEnd\relax
\let\markdownInput\relax
@@ -1539,7 +1539,7 @@
{
\tl_set:Nn
\l_tmpa_tl
- { \str_upper_case:n { #1 } }
+ { \str_uppercase:n { #1 } }
\tl_set:Nx
#2
{
@@ -2102,9 +2102,7 @@
local input = assert(file:read("*a"))
assert(file:close())
print(convert(input:gsub("\r\n?", "\n") .. "\n"))}%
- |markdownIfOption{finalizeCache}{%
- |global|advance|markdownOptionFrozenCacheCounter by 1|relax
- }%
+ |global|advance|markdownOptionFrozenCacheCounter by 1|relax
}%
|endgroup
}%
diff --git a/Master/texmf-dist/tex/latex/markdown/markdown.sty b/Master/texmf-dist/tex/latex/markdown/markdown.sty
index 49ec9ee9e6f..bd67f3ff59d 100644
--- a/Master/texmf-dist/tex/latex/markdown/markdown.sty
+++ b/Master/texmf-dist/tex/latex/markdown/markdown.sty
@@ -42,8 +42,6 @@
%%
%% The names of the source files used are shown above.
%%
-\RequirePackage{keyval}
-\RequirePackage{xstring}
\RequirePackage{expl3}
\newcommand\markdownInfo[1]{\PackageInfo{markdown}{#1}}%
\newcommand\markdownWarning[1]{\PackageWarning{markdown}{#1}}%
@@ -51,8 +49,16 @@
\input markdown/markdown
\newenvironment{markdown}\relax\relax
\newenvironment{markdown*}[1]\relax\relax
-\newcommand\markdownSetup[1]{%
- \setkeys{markdownOptions}{#1}}%
+\ExplSyntaxOn
+\cs_new:Nn
+ \__markdown_setup:n
+ {
+ \keys_set:nn
+ { markdown/latex-options }
+ { #1 }
+ }
+\let\markdownSetup=\__markdown_setup:n
+\ExplSyntaxOff
\newcommand\markdownSetupSnippet[2]{%
\markdownIfSnippetExists{#1}%
{%
@@ -93,29 +99,57 @@
\newif\ifmarkdownLaTeXLoaded
\markdownLaTeXLoadedfalse
\AtEndOfPackage{\markdownLaTeXLoadedtrue}
-\define@key{markdownOptions}{theme}{%
- \IfSubStr{#1}{/}{}{%
- \markdownError
- {Won't load theme with unqualified name #1}%
- {Theme names must contain at least one forward slash}}%
- \StrSubstitute{#1}{/}{_}[\markdownLaTeXThemePackageName]%
- \edef\markdownLaTeXThemePackageName{%
- markdowntheme\markdownLaTeXThemePackageName}%
- \expandafter\markdownLaTeXThemeLoad\expandafter{%
- \markdownLaTeXThemePackageName}{#1/}}%
-\@onlypreamble\KV@markdownOptions@theme
-\define@key{markdownOptions}{snippet}{%
- \markdownIfSnippetExists{#1}%
- {%
- \expandafter\markdownSetup\expandafter{%
- \the\csname markdownLaTeXSetupSnippet%
- \markdownLaTeXThemeName#1\endcsname}%
- }{%
- \markdownError
- {Can't invoke setup snippet #1}%
- {The setup snippet is undefined}%
- }%
- }%
+\ExplSyntaxOn
+\tl_new:N \markdownLaTeXThemePackageName
+\cs_new:Nn
+ \__markdown_set_latex_theme:n
+ {
+ \str_if_in:NnF
+ { #1 }
+ { / }
+ {
+ \markdownError
+ { Won't load theme with unqualified name #1 }
+ { Theme names must contain at least one forward slash }
+ }
+ \tl_set:Nn \markdownLaTeXThemePackageName { #1 }
+ \str_replace_all:Nnn
+ \markdownLaTeXThemePackageName
+ { / }
+ { _ }
+ \edef\markdownLaTeXThemePackageName{
+ markdowntheme\markdownLaTeXThemePackageName}
+ \expandafter\markdownLaTeXThemeLoad\expandafter{
+ \markdownLaTeXThemePackageName}{#1/}
+ }
+\keys_define:nn
+ { markdown/latex-options }
+ {
+ theme .code:n = { \__markdown_set_latex_theme:n { #1 } },
+ }
+\ExplSyntaxOff
+\ExplSyntaxOn
+\@onlypreamble
+ \__markdown_set_latex_theme:n
+\ExplSyntaxOff
+\ExplSyntaxOn
+\keys_define:nn
+ { markdown/latex-options }
+ {
+ snippet .code:n = {
+ \markdownIfSnippetExists{#1}
+ {
+ \expandafter\markdownSetup\expandafter{
+ \the\csname markdownLaTeXSetupSnippet
+ \markdownLaTeXThemeName#1\endcsname}
+ }{
+ \markdownError
+ {Can't~invoke~setup~snippet~#1}
+ {The~setup~snippet~is~undefined}
+ }
+ }
+ }
+\ExplSyntaxOff
\ExplSyntaxOn
\cs_new:Nn \__markdown_latex_define_option_commands_and_keyvals:
{
@@ -143,28 +177,23 @@
{ g__markdown_ #1 _option_types_prop }
{ #2 }
\l_tmpa_tl
- \str_if_eq:VVTF
- \l_tmpa_tl
- \c__markdown_option_type_boolean_tl
+ \keys_define:nn
+ { markdown/latex-options }
{
- \define@key
- { markdownOptions }
- { #2 }
- [ true ]
- {
- \__markdown_set_option_value:nn
- { #2 }
- { ##1 }
- }
+ #2 .code:n = {
+ \__markdown_set_option_value:nn
+ { #2 }
+ { ##1 }
+ },
}
+ \str_if_eq:VVT
+ \l_tmpa_tl
+ \c__markdown_option_type_boolean_tl
{
- \define@key
- { markdownOptions }
- { #2 }
+ \keys_define:nn
+ { markdown/latex-options }
{
- \__markdown_set_option_value:nn
- { #2 }
- { ##1 }
+ #2 .default:n = { true },
}
}
}
@@ -197,7 +226,7 @@
{
\tl_set:Nn
\l_tmpa_tl
- { \str_upper_case:n { #1 } }
+ { \str_uppercase:n { #1 } }
\tl_set:Nx
#2
{
@@ -208,15 +237,16 @@
}
\cs_new:Nn \__markdown_latex_define_renderer:nNn
{
- \define@key
- { markdownRenderers }
- { #1 }
+ \keys_define:nn
+ { markdown/latex-options/renderers }
{
- \cs_generate_from_arg_count:NNnn
- #2
- \cs_set:Npn
- { #3 }
- { ##1 }
+ #1 .code:n = {
+ \cs_generate_from_arg_count:NNnn
+ #2
+ \cs_set:Npn
+ { #3 }
+ { ##1 }
+ },
}
}
\cs_generate_variant:Nn
@@ -246,15 +276,16 @@
}
\cs_new:Nn \__markdown_latex_define_renderer_prototype:nNn
{
- \define@key
- { markdownRendererPrototypes }
- { #1 }
+ \keys_define:nn
+ { markdown/latex-options/renderer-prototypes }
{
- \cs_generate_from_arg_count:NNnn
- #2
- \cs_set:Npn
- { #3 }
- { ##1 }
+ #1 .code:n = {
+ \cs_generate_from_arg_count:NNnn
+ #2
+ \cs_set:Npn
+ { #3 }
+ { ##1 }
+ },
}
}
\cs_generate_variant:Nn
@@ -322,13 +353,23 @@
\DeclareOption*{%
\expandafter\markdownSetup\expandafter{\CurrentOption}}%
\ProcessOptions\relax
-\define@key{markdownOptions}{renderers}{%
- \setkeys{markdownRenderers}{#1}%
- \def\KV@prefix{KV@markdownOptions@}}%
-\define@key{markdownOptions}{rendererPrototypes}{%
- \setkeys{markdownRendererPrototypes}{#1}%
- \def\KV@prefix{KV@markdownOptions@}}%
-\define@key{markdownOptions}{code}{#1}%
+\ExplSyntaxOn
+\keys_define:nn
+ { markdown/latex-options }
+ {
+ renderers .code:n = {
+ \keys_set:nn
+ { markdown/latex-options/renderers }
+ { #1 }
+ },
+ rendererPrototypes .code:n = {
+ \keys_set:nn
+ { markdown/latex-options/renderer-prototypes }
+ { #1 }
+ },
+ code .code:n = { #1 },
+ }
+\ExplSyntaxOff
\markdownIfOption{plain}{\iffalse}{\iftrue}
\markdownIfOption{tightLists}{
\@ifclassloaded{beamer}{}{\RequirePackage{paralist}}%
@@ -462,8 +503,15 @@
\fi},
horizontalRule = {\noindent\rule[0.5ex]{\linewidth}{1pt}},
footnote = {\footnote{#1}}}}
+\ExplSyntaxOn
\def\markdownLATEXStrongEmphasis#1{%
- \IfSubStr\f@series{b}{\textnormal{#1}}{\textbf{#1}}}
+ \str_if_in:NnTF
+ \f@series
+ { b }
+ { \textnormal{#1} }
+ { \textbf{#1} }
+}
+\ExplSyntaxOff
\markdownSetup{rendererPrototypes={strongEmphasis={%
\protect\markdownLATEXStrongEmphasis{#1}}}}
\@ifundefined{chapter}{%
diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown.lua b/Master/texmf-dist/tex/luatex/markdown/markdown.lua
index 2913503f2ce..8e5d29f0133 100644
--- a/Master/texmf-dist/tex/luatex/markdown/markdown.lua
+++ b/Master/texmf-dist/tex/luatex/markdown/markdown.lua
@@ -1,6 +1,6 @@
---
+--
-- Copyright (C) 2009-2016 John MacFarlane, Hans Hagen
---
+--
-- Permission is hereby granted, free of charge, to any person obtaining
-- a copy of this software and associated documentation files (the
-- "Software"), to deal in the Software without restriction, including
@@ -8,10 +8,10 @@
-- distribute, sublicense, and/or sell copies of the Software, and to
-- permit persons to whom the Software is furnished to do so, subject to
-- the following conditions:
---
+--
-- The above copyright notice and this permission notice shall be included
-- in all copies or substantial portions of the Software.
---
+--
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -19,31 +19,31 @@
-- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
---
+--
-- Copyright (C) 2016-2022 Vít Novotný
---
+--
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
-- of this license or (at your option) any later version.
-- The latest version of this license is in
---
+--
-- http://www.latex-project.org/lppl.txt
---
+--
-- and version 1.3 or later is part of all distributions of LaTeX
-- version 2005/12/01 or later.
---
+--
-- This work has the LPPL maintenance status `maintained'.
-- The Current Maintainer of this work is Vít Novotný.
---
+--
-- Send bug reports, requests for additions and questions
-- either to the GitHub issue tracker at
---
+--
-- https://github.com/witiko/markdown/issues
---
+--
-- or to the e-mail address <witiko@mail.muni.cz>.
---
+--
-- MODIFICATION ADVICE:
---
+--
-- If you want to customize this file, it is best to make a copy of
-- the source file(s) from which it was produced. Use a different
-- name for your copy(ies) and modify the copy(ies); this will ensure
@@ -51,14 +51,14 @@
-- new release of the standard system. You should also ensure that
-- your modified source file does not generate any modified file with
-- the same name as a standard file.
---
+--
-- You will also need to produce your own, suitably named, .ins file to
-- control the generation of files from your source file; this file
-- should contain your own preambles for the files it generates, not
-- those in the standard .ins files.
---
+--
local metadata = {
- version = "2.15.3-0-g7c8e03d",
+ version = "2.15.4-0-g4cbe4e3",
comment = "A module for the conversion from markdown to plain TeX",
author = "John MacFarlane, Hans Hagen, Vít Novotný",
copyright = {"2009-2016 John MacFarlane, Hans Hagen",
@@ -69,10 +69,14 @@ local metadata = {
if not modules then modules = { } end
modules['markdown'] = metadata
local lpeg = require("lpeg")
-local ran_ok, unicode = pcall(require, "unicode")
-if not ran_ok then
- unicode = {["utf8"]={char=utf8.char}}
-end
+local unicode
+(function()
+ local ran_ok
+ ran_ok, unicode = pcall(require, "unicode")
+ if not ran_ok then
+ unicode = {["utf8"]={char=utf8.char}}
+ end
+end)()
local md5 = require("md5")
local M = {metadata = metadata}
local defaultOptions = {}
@@ -116,7 +120,6 @@ defaultOptions.tightLists = true
defaultOptions.underscores = true
local upper, gsub, format, length =
string.upper, string.gsub, string.format, string.len
-local concat = table.concat
local P, R, S, V, C, Cg, Cb, Cmt, Cc, Ct, B, Cs, any =
lpeg.P, lpeg.R, lpeg.S, lpeg.V, lpeg.C, lpeg.Cg, lpeg.Cb,
lpeg.Cmt, lpeg.Cc, lpeg.Ct, lpeg.B, lpeg.Cs, lpeg.P(1)
@@ -130,7 +133,7 @@ function util.cache(dir, string, salt, transform, suffix)
local name = util.pathname(dir, digest .. suffix)
local file = io.open(name, "r")
if file == nil then -- If no cache entry exists, then create a new one.
- local file = assert(io.open(name, "w"),
+ file = assert(io.open(name, "w"),
[[could not open file "]] .. name .. [[" for writing]])
local result = string
if transform ~= nil then
@@ -2713,9 +2716,7 @@ parsers.spacing = S(" \n\r\t")
parsers.nonspacechar = parsers.any - parsers.spacing
parsers.optionalspace = parsers.spacechar^0
-parsers.specialchar = S("*_`&[]<!\\.@-^")
-
-parsers.normalchar = parsers.any - (parsers.specialchar
+parsers.normalchar = parsers.any - (V("SpecialChar")
+ parsers.spacing
+ parsers.tightblocksep)
parsers.eof = -parsers.any
@@ -2829,7 +2830,7 @@ parsers.unticked_box = tickbox(parsers.spacechar^1) * Cc(0.0)
parsers.openticks = Cg(parsers.backtick^1, "ticks")
-local function captures_equal_length(s,i,a,b)
+local function captures_equal_length(_,i,a,b)
return #a == #b and i
end
@@ -2844,7 +2845,7 @@ parsers.intickschar = (parsers.any - S(" \n\r`"))
parsers.inticks = parsers.openticks * parsers.space^-1
* C(parsers.intickschar^0) * parsers.closeticks
-local function captures_geq_length(s,i,a,b)
+local function captures_geq_length(_,i,a,b)
return #a >= #b and i
end
@@ -2869,10 +2870,10 @@ end
parsers.fencedline = function(char)
return C(parsers.line - parsers.fencetail(char))
/ function(s)
- i = 1
- remaining = fenceindent
+ local i = 1
+ local remaining = fenceindent
while true do
- c = s:sub(i, i)
+ local c = s:sub(i, i)
if c == " " and remaining > 0 then
remaining = remaining - 1
i = i + 1
@@ -3113,7 +3114,7 @@ function M.reader.new(writer, options, extensions)
gsub(util.rope_to_string(tag), "[ \n\r\t]+", " "))
end
local function iterlines(s, f)
- rope = lpeg.match(Ct((parsers.line / f)^1), s)
+ local rope = lpeg.match(Ct((parsers.line / f)^1), s)
return util.rope_to_string(rope)
end
if options.preserveTabs then
@@ -3137,7 +3138,7 @@ function M.reader.new(writer, options, extensions)
return line
end
line = util.expand_tabs_in_line(line)
- prefix = lpeg.match(C(parsers.optionalspace), line)
+ local prefix = lpeg.match(C(parsers.optionalspace), line)
local prefix_length = #prefix
local is_shorter = min_prefix_length == nil
is_shorter = is_shorter or prefix_length < min_prefix_length
@@ -3291,7 +3292,7 @@ function M.reader.new(writer, options, extensions)
parsers.Str = (parsers.normalchar * (parsers.normalchar + parsers.at)^0)
/ writer.string
- parsers.Symbol = (parsers.specialchar - parsers.tightblocksep)
+ parsers.Symbol = (V("SpecialChar") - parsers.tightblocksep)
/ writer.string
parsers.Ellipsis = P("...") / writer.ellipsis
@@ -3682,13 +3683,23 @@ function M.reader.new(writer, options, extensions)
EscapedChar = parsers.EscapedChar,
Smart = parsers.Smart,
Symbol = parsers.Symbol,
+ SpecialChar = parsers.fail,
}
-
+ local special_characters = {"*", "`", "[", "]", "<", "!", "\\"}
+ self.add_special_character = function(c)
+ table.insert(special_characters, c)
+ self.syntax.SpecialChar = S(table.concat(special_characters, ""))
+ end
+ self.syntax.SpecialChar = S(table.concat(special_characters, ""))
for _, extension in ipairs(extensions) do
extension.extend_writer(writer)
extension.extend_reader(self)
end
+ if options.underscores then
+ self.add_special_character("_")
+ end
+
if not options.codeSpans then
self.syntax.Code = parsers.fail
end
@@ -3697,6 +3708,8 @@ function M.reader.new(writer, options, extensions)
self.syntax.DisplayHtml = parsers.fail
self.syntax.InlineHtml = parsers.fail
self.syntax.HtmlEntity = parsers.fail
+ else
+ self.add_special_character("&")
end
if options.preserveTabs then
@@ -3705,6 +3718,8 @@ function M.reader.new(writer, options, extensions)
if not options.smartEllipses then
self.syntax.Smart = parsers.fail
+ else
+ self.add_special_character(".")
end
if not options.relativeReferences then
@@ -3920,6 +3935,9 @@ M.extensions.citations = function(citation_nbsps)
local Citations = TextCitations + ParenthesizedCitations
syntax.Citations = Citations
+
+ self.add_special_character("@")
+ self.add_special_character("-")
end
}
end
@@ -3929,15 +3947,15 @@ M.extensions.content_blocks = function(language_map)
if ran_ok then
kpse.set_program_name("luatex")
else
- kpse = {lookup=function(filename, options) return filename end}
+ kpse = {lookup=function(filename, _) return filename end}
end
local base, prev, curr
for _, filename in ipairs{kpse.lookup(language_map, { all=true })} do
local file = io.open(filename, "r")
if not file then goto continue end
- json = file:read("*all"):gsub('("[^\n]-"):','[%1]=')
+ local json = file:read("*all"):gsub('("[^\n]-"):','[%1]=')
curr = (function()
- local _ENV={ json=json, load=load } -- run in sandbox
+ local _ENV={ json=json, load=load } -- luacheck: ignore _ENV
return load("return "..json)()
end)()
if type(curr) == "table" then
@@ -4104,7 +4122,7 @@ M.extensions.definition_lists = function(tight_lists)
local dlchunk = Cs(parsers.line * (parsers.indentedline - parsers.blankline)^0)
- local function definition_list_item(term, defs, tight)
+ local function definition_list_item(term, defs, _)
return { term = self.parser_functions.parse_inlines(term),
definitions = defs }
end
@@ -4147,7 +4165,7 @@ M.extensions.fenced_code = function(blank_before_code_fence)
local syntax = self.syntax
local writer = self.writer
- local function captures_geq_length(s,i,a,b)
+ local function captures_geq_length(_,i,a,b)
return #a >= #b and i
end
@@ -4172,10 +4190,10 @@ M.extensions.fenced_code = function(blank_before_code_fence)
local fencedline = function(char)
return C(parsers.line - fencetail(char))
/ function(s)
- i = 1
- remaining = fenceindent
+ local i = 1
+ local remaining = fenceindent
while true do
- c = s:sub(i, i)
+ local c = s:sub(i, i)
if c == " " and remaining > 0 then
remaining = remaining - 1
i = i + 1
@@ -4209,6 +4227,7 @@ M.extensions.fenced_code = function(blank_before_code_fence)
syntax.FencedCode = FencedCode
+ local fencestart
if blank_before_code_fence then
fencestart = parsers.fail
else
@@ -4282,12 +4301,14 @@ M.extensions.footnotes = function(footnotes, inline_footnotes)
/ writer.note
syntax.InlineNote = InlineNote
end
+
+ self.add_special_character("^")
end
}
end
M.extensions.header_attributes = function()
return {
- extend_writer = function(self)
+ extend_writer = function()
end, extend_reader = function(self)
local parsers = self.parsers
local syntax = self.syntax
@@ -4432,9 +4453,9 @@ M.extensions.jekyll_data = function(expect_jekyll_data)
local JekyllData
= Cmt( C((parsers.line - P("---") - P("..."))^0)
- , function(s, i, text)
+ , function(s, i, text) -- luacheck: ignore s i
local data
- local ran_ok, error = pcall(function()
+ local ran_ok, _ = pcall(function()
local tinyyaml = require("markdown-tinyyaml")
data = tinyyaml.parse(text, {timestamps=false})
end)
@@ -4614,50 +4635,50 @@ function M.new(options)
options = options or {}
setmetatable(options, { __index = function (_, key)
return defaultOptions[key] end })
- extensions = {}
+ local extensions = {}
if options.citations then
- citations_extension = M.extensions.citations(options.citationNbsps)
+ local citations_extension = M.extensions.citations(options.citationNbsps)
table.insert(extensions, citations_extension)
end
if options.contentBlocks then
- content_blocks_extension = M.extensions.content_blocks(
+ local content_blocks_extension = M.extensions.content_blocks(
options.contentBlocksLanguageMap)
table.insert(extensions, content_blocks_extension)
end
if options.definitionLists then
- definition_lists_extension = M.extensions.definition_lists(
+ local definition_lists_extension = M.extensions.definition_lists(
options.tightLists)
table.insert(extensions, definition_lists_extension)
end
if options.fencedCode then
- fenced_code_extension = M.extensions.fenced_code(
+ local fenced_code_extension = M.extensions.fenced_code(
options.blankBeforeCodeFence)
table.insert(extensions, fenced_code_extension)
end
if options.footnotes or options.inlineFootnotes then
- footnotes_extension = M.extensions.footnotes(
+ local footnotes_extension = M.extensions.footnotes(
options.footnotes, options.inlineFootnotes)
table.insert(extensions, footnotes_extension)
end
if options.headerAttributes then
- header_attributes_extension = M.extensions.header_attributes()
+ local header_attributes_extension = M.extensions.header_attributes()
table.insert(extensions, header_attributes_extension)
end
if options.jekyllData then
- jekyll_data_extension = M.extensions.jekyll_data(
+ local jekyll_data_extension = M.extensions.jekyll_data(
options.expectJekyllData)
table.insert(extensions, jekyll_data_extension)
end
if options.pipeTables then
- pipe_tables_extension = M.extensions.pipe_tables(
+ local pipe_tables_extension = M.extensions.pipe_tables(
options.tableCaptions)
table.insert(extensions, pipe_tables_extension)
end