在自己的包中使用 hypersetup

在自己的包中使用 hypersetup

我正在尝试创建自己的样式文件 ( .sty-file),其中或多或少定义了整个前言。背后的原因是,我的样式文件的用户只需使用我的包,而不必关心样式。

在我的样式文件中,我创建了一些新命令,如下所示:

\newcommand{\theversion}{Version 1.0}
\newcommand{\thedocumenttitle}{My Basic Title}
\newcommand{\theauthor}{John Doe}
\newcommand{\thedate}{\today}

我的样式文件的用户现在可以在他们的实际主文件中“覆盖”这些设置,renewcommand如下所示:

\renewcommand{\theversion}{Version 2.0}
\renewcommand{\thedocumenttitle}{My Overwritten Title}

现在我的问题如下:我使用hyperrefstylefile 中的包并且还使用以下hypersetup命令:

\hypersetup{
pdftitle={\thedocumenttitle{} - \theversion{}},
pdfauthor={\theauthor{}},
linkcolor={black},
urlcolor={black},
citecolor={black}}

虽然我在主文件中更新了命令,但 中仍使用旧值,hypersetup因为hypersetup是在样式中定义的,而不是在主文件中。更新发生在主文件中,因此我猜是命令hypersetup

我的问题是:

  1. 总的来说:在样式文件中定义命令并让样式文件的用户在需要时更新这些命令是一种好方法吗?
  2. 我该如何解决我的hypersetup问题?当然,我可以将 放在hypersetup主文件中的renewcommands 后面。但我不希望样式文件的用户关心这些事情。还有其他(更好的)方法吗?

答案1

您可以延迟执行\hypersetup信息条目。但是,必须设置 hyperref使用它。通常这个时候是\begin{document},也就是说,\AtBeginDocument可以使用 hyperref已加载:

\AtBeginDocument{%
  \hypersetup{%
    pdftitle={\thedocumenttitle\space - \theversion},%
    pdfauthor={\theauthor},%
  }%
}
\RequirePackage{hyperref}

评论:

  • 请勿在条目内使用空括号 ( \theauthor{})。宏\theauthor没有参数,括号将保留在条目中。

相关内容