2010-08-02 71 views
21

我使用下面的代碼來設置pdf文檔屬性中的標題和作者。在LaTeX樣式表中自動設置pdftitle和pdfauthor

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

我想通過把它放在樣式表(.sty)中來實現這一點以下是我的嘗試,但它不工作。 pdf是編譯錯誤(pdflatex)的錯誤。但pdf文檔屬性保持空白。

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

我使用\ @title和\ @author變量來創建自定義的標題頁。所以我知道這些工作。

有什麼建議嗎?

回答

25

如果你得到編譯錯誤,我猜測問題是@字符。您需要將代碼包裝在\makeatletter\makeatother中。另一個可能的問題是您在執行\title\author命令之前執行此操作。一個很好的解決辦法是使用\AtBeginDocument,這將允許你把它放在你的序言中的任何地方。請注意,您必須在\begin{document}之前定義\title\author信息。

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

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

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

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

UPDATE:把相關部分在名爲xxx.sty樣式文件:

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

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

您的解決方案在放入主tex文件時工作正常。但是,將它放入.sty文件時不起作用。 – Thierry 2010-08-13 10:25:30

+0

@Thierry:把這個放在'.sty'文件中是沒有問題的。 – grddev 2010-08-13 10:43:15

+0

更新後,一切正常。謝謝你的答案。 – Thierry 2010-08-16 08:47:15