Hyperref 由类加载,我需要加载应该在之前加载的包

Hyperref 由类加载,我需要加载应该在之前加载的包

我正在使用lipicsdocumentclass,它加载hyperref。因为我想把我的数字框起来,所以我添加了以下内容

\usepackage{float}
\floatstyle{boxed}
\restylefloat{figure}

问题:我收到了类似这样的警告

name{figure.1} has been referenced but does not exist,replaced by a fixed one

float当我在之后加载包时会发生这种情况hyperref

问题是:有没有正确的方法可以在不重新定义类的情况下做到这一点?

答案1

就我而言,我补充道:

\RequirePackage{fooPackage}
\PassOptionsToPackage{bookmarks=false}{hyperref}

之前\documentclass,它无需修改课程就解决了我遇到的问题。

答案2

简短版本:是的,您必须重新定义该类,或至少修补它们的hyperref包含。

hyperref我在使用论文类(最初是一个包)时遇到了类似的问题。当它是一个包时,我可以让学生在我的论文包之前或之后加载包,并且hyperref。当它是一个包时,我可以让学生在我的论文包之前或之后加载包,然后按照正确的顺序进行加载。但是,一旦我创建了一个类,全部我的包会首先被加载\documentclass,这样任何人都无法绕过它hyperref。我没有完全放弃,而是hyperref将以下内容添加到类中:

\IfFileExists{\jobname-packages-loaded-before-hyperref.sty}{%
  \RequirePackage{\jobname-packages-loaded-before-hyperref}
}{}

% For all sorts of hyperlinks in the PDF output.
\RequirePackage[pdfcreator={pdfLaTeX with hyperref},
  plainpages=false,
  pdfpagelabels,
  hypertexnames=true,
  colorlinks=false]{hyperref}

\IfFileExists{\jobname-packages-loaded-after-hyperref.sty}{%
  \RequirePackage{\jobname-packages-loaded-after-hyperref}%
}{}

现在我的学生只需要把他们所有的额外\usepackage\RequirePackage条目放入两个 .sty 文件之一中。示例:包装前包装后, 和班级

答案3

众所周知(类作者也应该知道),hyperref需要尽可能晚地加载。因此,类应该改为不加载hyperref

答案4

在里面KOMA 脚本包,Markus Kohm 为标准 LaTeX 类提供的替代品,还有更多,他包括一个名为 的包scrlfile,旨在在文件加载之前和之后执行操作。也许这个包可以解决你的问题。它可以独立使用。

如果您不懂德语,作者已经开始改进英文手册。他在第 248 页及后续页面描述了 scrlfile。您可以在以下位置找到 KOMA-Script加拿大运输安全局贝尔利奥斯

您将找到新的、改进的英文手册的链接这里。

相关内容