我有一个使用 hyperref 和 natbib 编写的现有文档,并尝试在已构建的 PDF 旁边生成一个网站。该文档是使用 autoref 引用和 natbib 作者年份引文编写的。
我正在使用 hevea 生成 HTML 版本,但在交叉引用方面遇到了问题。
如果我使用 hyperref,hevea 会遇到这些错误,并且内联引用和参考文献显示为 ??:
./text.aux:14: Giving up command: \addtokens
./text.aux:4: Giving up command: \AtBeginDocument
./text.aux:4: Giving up command: \HyperFirstAtBeginDocument
./text.tex:15: Giving up command: \input
./text.tex:15: Giving up command: \@readaux
./text.tex:15: Warning: Failure while reading .aux, reading .haux
(请注意,如果我使用hevea -fix
或bibhva
制作.haux
,natbib 将以其他方式失败,所以我想坚持使用该.aux
文件。)
如果我使用 cleveref 而不是 hyperref,引用可以正常工作,但交叉引用仍然有 ??,其中应该生成“Figure”、“Section”等字词。
无论哪种情况,PDF 都可以编译成功。
我把我的文档精简到最精简的部分,如下所示,其中包含 Makefile、参考书目和其他资产这个要点。
\documentclass[english]{article}
\usepackage{hevea}
\usepackage{graphicx}
\usepackage[english]{babel}
%use one or the other of these
%\usepackage{hyperref}
%\newcommand{\Xref}[1]{\autoref{#1}}
\usepackage{cleveref}
\newcommand{\Xref}[1]{\Cref{#1}}
\usepackage[authoryear]{natbib}
\usepackage{trouble}
\begin{document}
\section{Introduction}\label{sec:intro}
This document has citations \cite{Ilg:2010vn}, using authoryear style
(\cite{Wertheimer:1912aa}, \cite{Wertheimer:2012aa};
\cite{Steinman:2000ap}). It should also have figure graphics and
internal references using cleveref or hyperref, such as the imminent reference
to \Xref{sec:graphics}.
\section{Section 2}\label{sec:graphics}
\begin{figure}
\includegraphics[height=2in,width=5in]{demo_carenv}
\caption{\label{fig:label} This is a figure, with a label.}
\end{figure}
\Xref{fig:label} has a picture in it, as was described in
\Xref{sec:intro} \cite{De-Valois:1991jt,Ramachandran:1990aa}.
\bibliographystyle{plain}
\bibliography{bib}
\end{document}
答案1
我发现您的文档存在一些小问题,经过一些小修复后,它可以用 pdflatex 和 tex4ht 编译:
%use one or the other of these
\usepackage{hyperref}
\newcommand{\Xref}[1]{\autoref{#1}}
%\usepackage{cleveref}
\autoref
似乎效果更好tex4ht
\DeclareGraphicsExtensions{.png,.jpg,}
将其添加到序言中,这样可以直接包含png
和jpg
图像tex4ht
。
\bibliographystyle{plainnat}
\bibliography{bib}
您想要作者年份书目,但您使用的plain
样式是数字。将其替换为plainnat
。
编译后的结果
htlatex sample.tex