我使用下面的代码在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变量来创建自定义标题页。所以我知道那些工作。
有什么建议吗?
答案 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。