在LaTeX样式表中自动设置pdftitle和pdfauthor

时间:2010-08-02 12:59:14

标签: latex stylesheet hyperref

我使用下面的代码在pdf文档属性中设置标题和作者。

\usepackage[pdftex]{hyperref}
\hypersetup{
    pdftitle = {The documents title},
    pdfauthor = {me}
}

我想通过将它放在样式表(.sty)中来实现自动化。下面是我的尝试,但它不起作用。编译pdf(pdflatex)时出错。但是pdf文档属性仍然是空的。

\usepackage[pdftex]{hyperref}
\hypersetup{
    pdftitle = {\@title},
    pdfauthor = {\@author}
}

我使用\ _title和\ _author变量来创建自定义标题页。所以我知道那些工作。

有什么建议吗?

2 个答案:

答案 0 :(得分:28)

如果遇到编译错误,我猜测问题是@字符。您需要将代码包装在\makeatletter\makeatother中。另一个可能的问题是,在执行\title\author命令之前执行此操作。一个很好的解决方法是使用\AtBeginDocument,这将允许您将它放在前言中的任何位置。请注意,您必须在\title之前定义\author\begin{document}信息。

\documentclass{article}
\usepackage[pdftex]{hyperref}

\makeatletter
\AtBeginDocument{
  \hypersetup{
    pdftitle = {\@title},
    pdfauthor = {\@author}
  }
}
\makeatother

\title{Test title}
\author{Sam Author}

\begin{document}
\maketitle
\end{document}

更新:将相关部分放在名为xxx.sty的样式文件中:

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{xxx}
\RequirePackage{hyperref}

\makeatletter
\AtBeginDocument{
  \hypersetup{
    pdftitle = {\@title},
    pdfauthor = {\@author}
  }
}
\makeatother

答案 1 :(得分:4)

包含选项pdfusetitle,请参阅Make hyperref take pdfinfo from \title and \author