-- simple HTML escaper for text nodes
local function html_escape(s)
s = tostring(s or "")
s = s:gsub("&", "&")
:gsub("<", "<")
:gsub(">", ">")
:gsub('"', """)
:gsub("'", "'")
return s
end
function pdf(args, kwargs)
local data = pandoc.utils.stringify(args[1]) or pandoc.utils.stringify(kwargs['file'])
local width = pandoc.utils.stringify(kwargs['width'])
local height = pandoc.utils.stringify(kwargs['height'])
local border = pandoc.utils.stringify(kwargs['border'])
local class = pandoc.utils.stringify(kwargs['class'])
local button = pandoc.utils.stringify(kwargs['button'])
local image = pandoc.utils.stringify(kwargs['image'])
local image_force = pandoc.utils.stringify(kwargs['image_force'])
local image_width = pandoc.utils.stringify(kwargs['image_width'])
local image_height = pandoc.utils.stringify(kwargs['image_height'])
local image_border = pandoc.utils.stringify(kwargs['image_border'])
local image_class = pandoc.utils.stringify(kwargs['image_class'])
if width ~= '' then
width = ' width="' .. width .. '"'
end
if height ~= '' then
height = ' height="' .. height .. '"'
end
if border ~= '' then
border = ' border="' .. border .. '"'
end
if class ~= '' then
class = ' class="' .. class .. '"'
end
if image_width ~= '' then
image_width = ' width="' .. image_width .. '"'
end
if image_height ~= '' then
image_height = ' height="' .. image_height .. '"'
end
if image_border ~= '' then
image_border = ' border="' .. image_border .. '"'
end
if image_class ~= '' then
image_class = ' class="' .. image_class .. '"'
end
local button_html = ""
if button ~= '' then
button_html =
"
" ..
html_escape(button) ..
""
end
if quarto.doc.isFormat("html:js") then
local html = ""
if image_force == 'TRUE' then
-- image only, linked to pdf
html = '' ..
'' ..
''
elseif image ~= '' then
-- pdf object with image fallback
html = ''
else
-- pdf object with text fallback
html = ''
end
-- wrap main content + optional button
if button_html ~= "" then
html = "