使用 TeX 文件,我从同一来源生成两个 pdf 可交付成果和一个网站。
我生成了我的html
使用htxelatex
和config
类似的文件,其内容如下:
\Css { .tableofcontents {
float:left;
top:20px;
padding-left:2%;
width:30%;
background:#eee;
font-size:1em;
}
}
\Css { .container {
float:left;
top:20px;
padding-left:15px;
width:65\%;
height:1024px;
}
}
这是我使用脚本将以下内容添加到生成的 HTML 中
<div class="container">
<--! The whole tex code except the tableofcontents -->
</div>
现在我有一个华丽的HTML
屏幕,一半是目录,另一半是内容。
它有效我只是想知道是否有办法以某种方式从配置文件中自动将整个主体添加到 div 中。当我生成时html
,它tableofcontents
在主体内部,所以我不能使用body
对象
答案1
你需要解决三个问题:
内容标题在
.tableofcontents
div 之外,因此不会一起浮动添加
<div class="container">
于\tableofcontents
在元素
</div>
前添加结束符<body>
前两个问题可以通过如下配置文件轻松解决:
\edef\hash{\string#}
\Preamble{xhtml}
\Configure{tableofcontents}
{\IgnorePar\EndP\HCode{<div class="tableofcontents"\csname a:LRdir\endcsname><h3 class="likesectionHead">Contents</h3>}\IgnorePar}
{\ifTag{tex4ht-body}{\HCode{<br />}\Link{tex4ht-body}{}Home\EndLink}{}}
{\IgnorePar\EndP\HCode{</div><div class="container">}\ShowPar}
{\HCode{<br />}} {}
\Css { .tableofcontents{
float:left;
top:20px;
padding-left:2\%;
width:30\%;
background:\hash eee;
font-size:1em;
}
}
\Css { .container {
float:left;
top:20px;
padding-left:15px;
width:65\%;
height:1024px;
}
}
\begin{document}
\let\contentsname=\empty
\EndPreamble
通过\let\contentsname=\empty
抑制打印内容标题,然后将其打印在.tableofcontents
div 内。我\Configure{tableofcontents}
从html4.4ht
文件中复制并添加<h3 class="likesectionHead">Contents</h3>
到<div class="container">
正确的位置。
另请注意,我修改了您的css
说明、字符%
,并且#
需要转义。
最后一项任务是最难的。您可以使用\Configure{BODY}{body start}{body end}
插入结束</div>
,但如果您查看文件BODY
中的配置html4.4ht
,您会发现那里发生了很多事情,如果您只是使用 ,可能会破坏某些东西\Configure{BODY}{\HCode{<body>}}{\HCode{</div></body>}}
。我建议使用命令对 html 文件进行后处理tidy
:
tidy -m -utf8 filename.html
样本文件:
\documentclass{article}
\begin{document}
\tableofcontents
\section{Intro}
Just try some random paragraph
\section{Some environments}
\subsection{verbatim}
\begin{verbatim}
echo "verbatim"
\end{verbatim}
\subsection{quotation}
\begin{quotation}
hello from quotation
\end{quotation}
\end{document}