tex4ht:自定义列表...(第 1 部分,共 3 部分)

tex4ht:自定义列表...(第 1 部分,共 3 部分)

我有一个详细的自定义列表,<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,我收到了所需的输出:

pdflatex 输出的屏幕截图

当我htlatex使用编译时

htlatex myfile.tex

我收到以下输出

html 输出的屏幕截图

我还粘贴了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命令而不是重新定义整个宏。

相关内容