代码之家  ›  专栏  ›  技术社区  ›  Thierry

在乳胶样式表中自动设置pdfitle和pdfauthor

  •  26
  • Thierry  · 技术社区  · 14 年前

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

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

    我希望通过将其放入下面的样式表(.sty)来实现自动化,这是我的尝试,但它不起作用。已编译PDF(pdflatex),但有错误。但是PDF文档属性仍然为空。

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

    我使用\@标题和\@作者变量创建自定义标题页。所以我知道这些工作。

    有什么建议吗?

    2 回复  |  直到 9 年前
        1
  •  28
  •   grddev    14 年前

    如果你有编译错误,我猜问题是 @ 性格。您需要将代码包装在 \makeatletter \makeatother . 另一个可能的问题是,在执行 \title \author 命令。一个很好的解决办法就是 \AtBeginDocument 这可以让你把这个放在序言的任何地方。请注意,您必须定义 标题 作者 之前的信息 \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
    
        2
  •  3
  •   Community omersem    7 年前

    有套餐选项 pdfusetitle 为此,请参见 Make hyperref take pdfinfo from \title and \author .