使用 htlatex/tex4ht,似乎在生成 HTML 输出时会覆盖 memoir 设置的章节标题样式。如何自定义 tex4ht 生成的章节标题的样式?
我尝试使用 memoir 类提供的内置函数和页面样式,但这些似乎没有效果。我还尝试修改 memoir.4ht 和 book.4ht,但不知道在这里该改什么。
答案1
你说得对,章节和分段命令由 重新定义tex4ht
。章节样式根本没有用到,但它们无论如何都无法工作,因为tex4ht
不知道如何将 TeX 布局转换为网页所需的 CSS。这确实不是一件容易的事。
因此,您必须自己设置生成的元素的样式。有一个\Css
用于提供 CSS 声明的命令。此命令可用于自定义配置文件。简单\chapter{First}
转换为 html 如下:
<h2 class="chapterHead"><span class="titlemark">Chapter 1</span><br /><a
id="x1-10001"></a>First</h2>
正如您所见,有很多元素可以进行样式设置。
自定义配置文件myconf.cfg
如下所示:
\Preamble{xhtml}
\begin{document}
\EndPreamble
你可以\Css
在 后面添加命令\begin{document}
。对于文档编译,请运行:
htlatex filename "myconf, other options"
第一个修改是在章节名称周围添加<span>
元素,因为您可能希望将其样式设置为与章节编号不同:
\let\oldchaptername\chaptername
\renewcommand{\chaptername}{\Tg<span class="chapname">\oldchaptername\Tg</span>}
HTML代码:
<h2 class="chapterHead"><span class="titlemark"><span class="chapname">Chapter</span> 1</span><br /><a
id="x1-10001"></a>First</h2>
分段元素的类名采用以下形式:secname + Head,带星号的分段命令则采用 like + secname + Head。我们可以定义一些辅助宏来生成类名:
\def\sechead#1#2{.#1Head #2,.like#1Head #2}
第一个参数是分段名称,第二个参数是我们要修改的子元素。如果第二个参数为空,则 CSS 将应用于分段元素。我们现在可以这样写:
\Css{\sechead{chapter}{.titlemark}{
display:block;
font-size:.8em;
margin-bottom:1.6em;
border-bottom:1px solid black;
text-align:right;
}}
\Css{\sechead{chapter}{}{
margin-top:2em; margin-bottom:1em;
text-align:center;
}}
为了修改其他分段级别,我们可以创建另一个辅助宏:
\def\sections#1{\sechead{chapter}{#1}, \sechead{section}{#1}, \sechead{subsection}{#1}, \sechead{subsubsection}{#1}}
现在可以轻松设置所有分段元素的样式:
\Css{\sections{}{color:red;}}
\Css{\sections{br}{display:none;}}
\Css{\sections{.titlemark}{color:green;}}
\Css{\sections{.titlemark:after}{content:" ";}}
注意最后的定义,在某些地方,章节计数器和标题之间没有空格,这将确保始终有空格。
现在完成配置文件:
\Preamble{xhtml}
\begin{document}
\def\sechead#1#2{.#1Head #2,.like#1Head #2}
\def\sections#1{\sechead{chapter}{#1}, \sechead{section}{#1}, \sechead{subsection}{#1}, \sechead{subsubsection}{#1}}
\let\oldchaptername\chaptername
\renewcommand{\chaptername}{\Tg<span class="chapname">\oldchaptername\Tg</span>}
\Css{\sections{}{color:red;}}
\Css{\sections{br}{display:none;}}
\Css{\sections{.titlemark}{color:green;}}
\Css{\sections{.titlemark:after}{content:" ";}}
\Css{\sechead{chapter}{.titlemark}{
display:block;
font-size:.8em;
margin-bottom:1.6em;
border-bottom:1px solid black;
text-align:right;
}}
\Css{\sechead{chapter}{}{
margin-top:2em; margin-bottom:1em;
text-align:center;
}}
\EndPreamble
一些示例文档:
\documentclass{memoir}
\chapterstyle{hangnum}
\begin{document}
\chapter{First}
\section{section}
\chapter{second}
\section*{like section}
\section{Bla blah}
\subsection{subsection}
\subsubsection{sub sub section}
\end{document}
结果:
(我知道这很丑,但我希望你现在有个主意)