我有一个详细的自定义列表,<things>
如下例所示:
\documentclass{article}
\newcommand{\cmhcommand}[1]{\addcontentsline{cmh}{subsection}{#1}}
\makeatletter
\newcommand{\listofcmh}{\subsection*{List of cmh}\@starttoc{cmh}}
\begin{document}
\cmhcommand{Here is some text}
\listofcmh
\end{document}
当我使用 编译代码时pdflatex
,我收到了所需的输出:
当我htlatex
使用编译时
htlatex myfile.tex
我收到以下输出
我还粘贴了html
,以供参考。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html -->
<meta name="src" content="final_report.tex">
<link rel="stylesheet" type="text/css" href="final_report.css">
</head><body
>
<a
id="x1-2"></a>
<h4 class="likesubsectionHead"><a
id="x1-1000"></a>List of cmh</h4>
</body></html>
问题
我如何配置htlatex
输出我的自定义列表?如果可能的话,每个列表和其在列表中的相关位置<things>
之间应该有超链接。<thing>
<list of things>
答案1
如果您想使用自定义目录(如列表),则需要对其进行配置。对于您的情况,我将sty
使用您的自定义命令创建文件:
% cmhloc.sty
\ProvidesPackage{cmhloc}
\newcommand{\cmhcommand}[1]{\addcontentsline{cmh}{subsection}{#1}}
\newcommand{\listofcmh}{\subsection*{List of cmh}\@starttoc{cmh}}
\endinput
以及.4ht
具有 tex4ht 配置的相应文件:
cmhloc.4ht
\ConfigureToc{cmh}{\HCode{<div class="sectionToc">}}{~}{}{\HCode{</div>\Hnewline}}
\renewcommand\listofcmh{\subsection*{List of cmh}\TableOfContents[cmh]}
\endinput
在这个cmhloc.4ht
文件中,我们需要做两件事:
- 重新定义
\listofcmh
文件以打印我们的自定义目录。它是使用\TableOfContents[cmh]
- 我们还需要使用 配置目录条目的样式
\ConfigureToc{cmh}
。从info
输出中:
\ConfigureToc{单位名称} ......................4
#1 在单元编号之前 #2 在内容之前 #3 在页码之前 #4 在末尾
空参数请求省略相应字段。
\TocCount 指定 jobname.4tc 文件中的条目数。
\TitleCount 提交到 toc 文件的条目数
\ConfigureToc{unit-name} 的替代方案:
\def\toc#1#2#3{#1#2% #3}
例子:
\ConfigureToc{section} {} {\Picture[*]{pic.jpg width="13" height="13"}~} {} {\HCode{<br />}}
我们不想打印页码,所以我们需要将第三个参数留空,但是我们需要将一些内容放入第二个参数,否则内容文本会消失,所以我把它放在~
这里。
我稍微扩展了你的例子:
\documentclass{article}
\usepackage{cmhloc}
\begin{document}
\tableofcontents
\section{normal section}
\cmhcommand{Here is some text}
some text
\section{another secton}
\cmhcommand{Another text}
\cmhcommand{some more}
\listofcmh
\end{document}
结果如下:
<h4 class="likesubsectionHead"><a
id="x1-40002"></a>List of cmh</h4>
<div class="tableofcontents"><div class="sectionToc"> <a
href="#x1-2001">Here is some text</a></div>
<div class="sectionToc"> <a
href="#x1-3001">Another text</a></div>
<div class="sectionToc"> <a
href="#x1-3002">some more</a></div>
</div>
编辑:
关于您的评论,您可以使用 hyperref 链接回目录:
\ProvidesPackage{cmhloc}
\RequirePackage{hyperref}
\newcommand{\cmhcommand}[1]{\addcontentsline{cmh}{subsection}{#1}\hyperlink{listcmh}{#1}}
\newcommand{\listofcmh}{\subsection*{List of cmh}\hypertarget{listcmh}{}\@starttoc{cmh}}
\endinput
和配置:
\ConfigureToc{cmh}{\HCode{<div class="sectionToc">}}{~}{}{\HCode{</div>\Hnewline}}
% \renewcommand\listofcmh{\subsection*{List of cmh}\phantomsection\label{listcmh}\TableOfContents[cmh]}
\append:def\listofcmh{\TableOfContents[cmh]}
\endinput
我使用\append:def
命令来附加\TableOfContents
命令而不是重新定义整个宏。