我需要在枚举列表中使用彩色文本。虽然颜色在枚举之外工作正常,但它们在枚举内会消失(编译 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">
指令中使用它。
结果如下: