tex4ebook:如何在枚举中获取彩色文本

tex4ebook:如何在枚举中获取彩色文本

我需要在枚举列表中使用彩色文本。虽然颜色在枚举之外工作正常,但它们在枚举内会消失(编译 pdf 而不是 epub 时,颜色会存在)。有没有办法使用 在枚举列表中获取彩色文本tex4ebook

以下是 MWE:

\documentclass[12pt]{book}

\usepackage{enumitem}
\usepackage{xcolor}

\begin{document}

\textcolor{blue}{
This text is blue.
\begin{enumerate}
    \item This text is black, although I would like to have it blue.
\end{enumerate}
}

\begin{enumerate}
\color{blue}
    \item This text is still black, although I would like to have it blue.
\end{enumerate}

\end{document}

我的配置文件:

\Preamble{xhtml}

\begin{document}
\EndPreamble

答案1

这里的问题在于 HTML 的工作方式。由于\textcolor可用于段落内的较短文本,因此它必须生成可在段落内使用的 HTML 标记。当您将其用于\textcolor多个段落甚至列表环境时,生成的标记无效。它适用于第一行,因为颜色的开头标记正确,但浏览器会在列表开始时立即关闭颜色元素。

为了解决这个问题,我将引入一个新环境,可以对其进行配置以生成正确的 HTML 标记。我将按以下方式修改您的文件:

\documentclass[12pt]{book}

\usepackage{enumitem}
\usepackage{xcolor}

\newenvironment{colorenv}[1]{\color{#1}}{}
\begin{document}

\begin{colorenv}{blue}
This text is blue.
\begin{enumerate}
    \item This text is black, although I would like to have it blue.
\end{enumerate}
\end{colorenv}


\begin{enumerate}
    \item 
  \begin{colorenv}{blue}
      This text is still black, although I would like to have it blue.
    \end{colorenv}
\end{enumerate}

\end{document}

然后可以colorenv在配置文件中进行配置:

\Preamble{xhtml}
\ExplSyntaxOn
\renewenvironment{colorenv}[1]{
\get:xcolorcss{#1}\:colorenv
\ifvmode\IgnorePar\fi\EndP\HCode{<div~style="color:\:colorenv">}\par\ShowPar
}{\ifvmode\IgnorePar\fi\EndP\HCode{</div>}}
\ExplSyntaxOff
\begin{document}
\EndPreamble

\get:xcolorcss命令将颜色名称(例如blue转换为十六进制 RGB 值)转换为可在 CSS 指令中使用的值。它保存在\:colorenv命令中,然后我们在<div~style="color:\:colorenv">指令中使用它。

结果如下:

在此处输入图片描述

相关内容