使用 make4ht 将 Beamer 转换为 HTML

使用 make4ht 将 Beamer 转换为 HTML
\documentclass{beamer}
\usetheme{Madrid}
\begin{document}
\begin{frame}
aaa
\end{frame}
\begin{frame}
bbb
\end{frame}
\end{document}

上面的 tex 文件要转换成 html。我使用以下命令

make4ht filename.tex

但是它抛出了错误。基本问题是“是否可以使用 make4ht 将 beamer 演示文稿转换为 html?”

答案1

在 中有一些对 Beamer 的支持tex4ht,但它似乎有点老了——可以追溯到 2003 年。它似乎不再起作用了,因为 Beamer 自那时以来发生了很大变化。例如,它似乎支持环境slide而不是frame

因此,我们似乎只能放弃当前的 Beamer 支持并创建一个新的支持。在将其添加到源之前tex4ht,您可以使用以下beamer.4ht文件:

\let\Hy@EveryPageAnchor\relax
\def\pgf@trimright@final{0pt}
\def\pgf@trimleft@final{0pt}
\let\origEndP\EndP
\AtBeginDocument{\def\EndP{\let\EndP\origEndP}\SaveEndP}
\endinput

它只是修复了基本问题 - 在每个页面中插入了虚假元素、缺少一些 PGF 命令以及段落问题。此版本将只创建一个没有框架的纯文本文档。如果我们想保留框架,我们可以在 .cfg 文件中配置它们:

\Preamble{xhtml}
   \ConfigureEnv{beamer@frameslide}
      {\ifvmode\IgnorePar\fi\EndP
       \HCode{<section class="slide">}\RecallEndP\par\ShowPar
      }
      {\ifvmode\IgnorePar\fi\EndP \HCode{</section>}}
      {} {}
   \Css{section.slide {border:solid black 0.4pt;margin-bottom:1em;}}
\begin{document}
\EndPreamble

这将为<section class="slide">每一帧插入元素。

结果:

在此处输入图片描述

<section class="slide">


    <ul class="itemize1">
    <li class="itemize">
    first
    </li>
    <li class="itemize">
    second</li></ul>
<!--l. 16--><p class="noindent" >aaa


</p>
</section>


<section class="slide">


<!--l. 19--><p class="noindent" >bbb


</p>
</section>

相关内容