使用 texlive 2013。以下 MWE 与 pdflatex 一起编译很好,但出现错误:
./foo.aux) [1]
Chapter 1.
! LaTeX Error: \theHchapter undefined.
当我使用以下命令运行它时:
htlatex foo.tex
这是文件
\documentclass[12pt]{report}
\usepackage[toc,page]{appendix}
\usepackage{hyperref}
\begin{document}
\chapter{first}
some text
\begin{appendices}
\chapter{some chapter}
some text again
\end{appendices}
\end{document}
如果这是问题所在,我真的不必使用附录包,我只想找到一种方法来获取Appendix
我作为附录添加的每个章节前的标题。如果没有这个包,我就无法Appendix
单独获得这个标题。
>htlatex foo.tex
This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013)
restricted \write18 enabled.
entering extended mode
更新
放入新文件appendix.4ht
(感谢michal.h21
下面的回答)$TEXMFHOME/tex/latex/tex4ht
成功了。奇怪的是为什么/usr/local/texlive/2013/texmf-dist/tex/generic/tex4ht
不起作用,因为所有其他 .4ht 文件都在那里?
但 toc 仍然存在问题。
目录链接的格式不正确。单击目录中的附录链接会打开一个网页,其中还包含正文的最后一节。单击正文的最后一节会打开一个包含附录的页面。因此,附录似乎被视为正文中最后一节的一部分,而不是其自身网页上的单独部分。
以下是 MWE 示例:
\documentclass{article}
\usepackage[toc,page]{appendix}
\usepackage{hyperref}
\begin{document}
\author{me}
\title{title}
\date{\today}
\maketitle
\tableofcontents
\section{first}
some text
\section{two}
some text in section 2
\begin{appendices}
\section{somesection inside appendices}
some text again
\end{appendices}
\end{document}
现在编译为
htlatex foo.tex "htm,2" %now split 2 option to see the problem
更新:为了回答@egreg 关于使用 的问题mktexlsr
,我现在确实使用了它。作为 root,但当此文件与所有其他 .4ht 文件一起时,htlatex 仍然看不到文件 appendix.4ht /usr/local/texlive/2013/texmf-dist/tex/generic/tex4ht
。它只在本地时才有效,$TEXMFHOME/tex/latex/tex4ht
这真的很奇怪。以下是屏幕截图:
答案1
这意味着运行\theHchapter
时未定义并尝试重新定义它。快速修复方法是提供文件,其中定义了:tex4ht
appendix.sty
appendix.4ht
\theHchapter
\ifdefined\theHchapter\else\newcommand\theHchapter{\Alph{chapter}}\fi
\ifdefined\theHsection\else\newcommand\theHsection{\Alph{section}}\fi
\ifdefined
用于防止对已定义的命令进行定义。还被\theHsection
定义为可能也会引起问题。
我们还可以提供一些重新定义来提供可配置的钩子,所以最终版本appendix.4ht
是:
\def\@blockelement#1{% for handling paragraphs in block level elements
\ifvmode\IgnorePar\fi\EndP\HCode{#1}
}
\NewConfigure{appendixpage}{2}
\Configure{appendixpage}{\@blockelement{<h2 class="appendixpage">}}{\HCode{</h2>}\par}
\renewcommand{\@chap@pppage}{%
\a:appendixpage
\appendixpagename
\b:appendixpage
\if@dotoc@pp
\addappheadtotoc
\fi
}
\renewcommand{\@sec@pppage}{%
\a:appendixpage
\appendixpagename
\b:appendixpage
\if@dotoc@pp
\addappheadtotoc
\fi
\nobreak
\@afterheading
}
\ConfigureEnv{appendices}{\@blockelement{<div class="appendices">}}{\@blockelement{</div>}}{}{}
\ifdefined\theHchapter\else\newcommand\theHchapter{\Alph{chapter}}\fi
\ifdefined\theHsection\else\newcommand\theHsection{\Alph{section}}\fi
生成的代码:
<div class="appendices">
<h2 class="appendixpage">Appendices</h2><!--l. 9-->
<p class="indent"><a id="likesection.1" name="likesection.1"></a><a id="Q1-1-3" name="Q1-1-3"></a></p>
<h2 class="chapterHead"><span class="titlemark">Chapter A</span><br />
<a id="x1-3000A" name="x1-3000A"></a>some chapter</h2><!--l. 11-->
<p class="noindent">some text again</p>
</div>
\section*
编辑:将附录打印为或的版本\chapter*
\def\@blockelement#1{% for handling paragraphs in block level elements
\ifvmode\IgnorePar\fi\EndP\HCode{#1}
}
\renewcommand{\@chap@pppage}{%
\chapter*{\appendixpagename}
}
\renewcommand{\@sec@pppage}{%
\section*{\appendixpagename}
\nobreak
\@afterheading
}
\ConfigureEnv{appendices}{\@blockelement{<div class="appendices">}}{\@blockelement{</div>}}{}{}
\ifdefined\theHchapter\else\newcommand\theHchapter{\Alph{chapter}}\fi
\ifdefined\theHsection\else\newcommand\theHsection{\Alph{section}}\fi