summaryrefslogtreecommitdiff
path: root/macros/luatex/generic/luaxml/luaxml-htmltemplates.lua
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/generic/luaxml/luaxml-htmltemplates.lua')
-rw-r--r--macros/luatex/generic/luaxml/luaxml-htmltemplates.lua144
1 files changed, 144 insertions, 0 deletions
diff --git a/macros/luatex/generic/luaxml/luaxml-htmltemplates.lua b/macros/luatex/generic/luaxml/luaxml-htmltemplates.lua
new file mode 100644
index 0000000000..171d16f1ae
--- /dev/null
+++ b/macros/luatex/generic/luaxml/luaxml-htmltemplates.lua
@@ -0,0 +1,144 @@
+
+local luaxml_sty = require "luaxml-sty"
+-- try
+local xmltransform = luaxml_sty.transformations.html
+if not xmltransform then
+ xmltransform = luaxml_sty.declare_transformer("html")
+end
+
+
+xmltransform:add_action("head", [[
+\tableofcontents
+]])
+
+xmltransform:add_action("img", [[\noindent\includegraphics[max width=\textwidth]{@{src}}]])
+
+xmltransform:add_action("h1", [[\addcontentsline{toc}{section}{%s}\section*{%s}
+]])
+xmltransform:add_action("h2", [[\addcontentsline{toc}{subsection}{%s}\subsection*{%s}
+]])
+-- don't add lower sectioning level than subsection
+xmltransform:add_action("h3", [[\addcontentsline{toc}{subsubsection}{%s}\subsubsection*{%s}
+]])
+xmltransform:add_action("h4", [[\addcontentsline{toc}{subsubsection}{%s}\subsubsection*{%s}
+]])
+xmltransform:add_action("h5", [[\addcontentsline{toc}{subsubsection}{%s}\subsubsection*{%s}
+]])
+xmltransform:add_action("h6", [[\addcontentsline{toc}{subsubsection}{%s}\subsubsection*{%s}
+]])
+
+xmltransform:add_action("i", [[\textit{%s}]])
+xmltransform:add_action("em", [[\emph{%s}]])
+xmltransform:add_action("b", [[\textbf{%s}]])
+xmltransform:add_action("strong", [[\textbf{%s}]])
+xmltransform:add_action("tt", [[\texttt{%s}]])
+xmltransform:add_action("samp", [[\texttt{%s}]])
+xmltransform:add_action("kbd", [[\texttt{%s}]])
+xmltransform:add_action("var", [[\textit{%s}]])
+xmltransform:add_action("dfn", [[\texttt{%s}]])
+xmltransform:add_action("code", [[\texttt{%s}]])
+xmltransform:add_action("a[href]", [[\textit{%s}\protect\footnote{\texttt{@{href}}}]])
+
+
+local itemize = [[
+\begin{itemize}
+%s
+\end{itemize}
+]]
+xmltransform:add_action("ul", itemize)
+xmltransform:add_action("menu", itemize)
+xmltransform:add_action("ol", [[
+\begin{enumerate}
+%s
+\end{enumerate}
+]])
+
+xmltransform:add_action("dl", [[
+\begin{description}
+%s
+\end{description}
+]])
+
+
+xmltransform:add_action("li", "\\item %s\n")
+xmltransform:add_action("dt", "\\item[%s] ")
+
+local quote = [[
+\begin{quotation}
+%s
+\end{quotation}
+]]
+
+xmltransform:add_action("blockquote", quote)
+xmltransform:add_action("q", "\\enquote{%s}")
+xmltransform:add_action("abbr", "%s\\protect\\footnote{@{title}}")
+xmltransform:add_action("sup", "\\textsuperscript{%s}")
+xmltransform:add_action("sub", "\\textsubscript{%s}")
+
+xmltransform:add_action("table", [[
+\begin{calstable}
+%s
+\end{calstable}
+]])
+
+xmltransform:add_action("tr", "\\brow %s \\erow")
+xmltransform:add_action("td", "\\cell{%s}")
+xmltransform:add_action("th", "\\cell{%s}")
+
+
+-- this is the original code for verbatim, but I changed LuaXML to not escape characters in verbatim,
+-- so we can use the verbatim environment
+xmltransform:add_action("pre", [[{\parindent=0pt\obeylines\ttfamily\catcode`\ =\active\def {\ }\catcode`\#=11%%
+%s}
+
+]], {verbatim=true})
+xmltransform:add_action("pre *", [[%s]])
+
+--
+xmltransform:add_action("pre", [[
+\begin{verbatim}%s\end{verbatim}
+]], {verbatim=true})
+
+xmltransform:add_action("details", [[%s
+]])
+
+xmltransform:add_action("details summary", [[
+\medskip
+\noindent %s
+
+\smallskip
+\noindent
+]])
+
+xmltransform:add_action("figure", [[
+\begin{figure}[hbt!]
+\centering
+
+%s
+
+\end{figure}
+]])
+
+xmltransform:add_action("figcaption", [[\caption{%s}]])
+
+
+xmltransform:add_action("p", [[
+
+%s
+
+]])
+
+xmltransform:add_action("br", [[\\]])
+
+-- some fixes for weird web pages
+xmltransform:add_action("a p", [[%s]])
+xmltransform:add_action("h1 a[href], h2 a[href], h3 a[href], h4 a[href], h5 a[href], h6 a[href]", "%s")
+
+
+-- mathjax is special element added by rmodepdf around LaTeX math
+xmltransform:add_action("mathjax",[[%s]], {verbatim=true,collapse_newlines=false})
+
+xmltransform:add_action("hyperlink", "\\hyperlink{@{href}}{%s}")
+xmltransform:add_action("hypertarget", "\\hypertarget{@{id}}{%s}")
+
+return xmltransform