ref、varioref 和 cleveref 之间的区别。论文决策

ref、varioref 和 cleveref 之间的区别。论文决策

如何才能快速确定论文的最佳“参考文献”pdflatex是什么hyperref

读了几个小时后,我所知道的

  • ref可供所有不了解其他 ~ref 的人使用,并且运行稳定
  • \vref varioref以某种方式与 hyperref 一起工作有时会造成分页问题
  • \crefcleveref 仍处于测试阶段(?)编辑:不再是测试版)并且和 varioref 功能相同

我必须问自己哪些基本问题才能确定哪种方法最适合?

答案1

您当然可以同时加载variorefcleverefhyperref只要你按照以下顺序加载它们

\usepackage{varioref}
\usepackage{hyperref}
\usepackage{cleveref}

他们在一起玩得很开心。

varioref在我写论文的时候,它们cleveref都不在,但我目前正在处理一个多章节的文档,我同时使用它们。以下是我发现的良好工作流程:

  • 至少,使用\cref和朋友(来自cleveref)代替\ref。这意味着,例如,您永远不必担心在引用时是否必须大写Figure或;而不是说您只是使用。也许你会改变主意并最终使用;在这种情况下,您可以使用 和进行全局更改figurefigureFigure \ref{fig:myfig}\cref{fig:myfig}fig.\crefname\Crefname
  • 使用\vref和朋友(来自varioref)来指代文本中距离当前位置“很远”的对象;我目前的规则是,\vref当指代不同位置中的某物时使用section。有些人可能会说这不是很健壮,但如果你指代的对象靠近,\vref仍然可以正常工作。如果你加载,cleveref那么也会\vref变得很聪明,所以你只需写\vref{fig:myfig},而不是Figure \vref{fig:myfig}

varioref如果您允许hyperlinks中断,并且引用恰好中断到页面之外,从而将引用从“此页面”更改为“下一页”,则会出现您所描述的问题。在这种情况下,您必须手动进行调整 - 如果您使用我上面描述的工作流程,并且仅将其用于\vref“远距离”引用和\cref其他所有内容,那么这将不是问题。

下面是一个 MWE,用于说明其中的一些功能:

\documentclass{report}
\usepackage{varioref}       
\usepackage{hyperref}      
\usepackage{cleveref}     

% each of the following has two versions
%   \crefname{environmentname}{singular}{plural}, to be used mid-sentence
%   \Crefname{environmentname}{singular}{plural}, to be used at the beginning of a sentence
\crefname{table}{table}{tables}
\Crefname{table}{Table}{Tables}
\crefname{figure}{figure}{figures}
\Crefname{figure}{Figure}{Figures}
\begin{document}

\begin{figure}[!htb]
  \centering
  \rule{20pt}{20pt}
  \caption{My figure}
  \label{fig:myfig}
\end{figure}

\clearpage
\begin{itemize}
  \item Use \cref{fig:myfig} mid sentence.
  \item \Cref{fig:myfig} is appropriate for the beginning of a sentence.
  \item Use \vref{fig:myfig} mid sentence, note that it has become `clever'.
  \item \Vref{fig:myfig} is appropriate for the beginning of a sentence.
\end{itemize}
\end{document}

编辑以下评论

引用hyperref 自述文件

varioref 的问题太多了。没人有时间去解决它们。因此,这个包现在不受支持。

事实上,正如@Mico 所说使用 intertext 与 varioref 和 hyperref 丢失标签cleveref除了加载包之外variorefhyperref似乎还消除了很多问题,因为cleveref重新定义\vref和朋友来制作它们clever

相关内容