Автоматическая установка pdftitle и pdfauthor в таблице стилей LaTeX

Я использую приведенный ниже код, чтобы установить заголовок и автора в свойствах документа 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 для создания настраиваемой титульной страницы. Так что я знаю эти работы.

Какие-либо предложения?


person Thierry    schedule 02.08.2010    source источник


Ответы (2)


Если вы получаете ошибки компиляции, я предполагаю, что проблема в символе @. Вам нужно заключить свой код в \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
person grddev    schedule 07.08.2010
comment
Ваше решение отлично работает, если поместить его в основной файл tex. Однако это не работает, если вы поместите его в файл .sty. - person Thierry; 13.08.2010
comment
@Thierry: У меня нет проблем с помещением этого в .sty файл. - person grddev; 13.08.2010
comment
После обновления все работает нормально. Спасибо за ответ. - person Thierry; 16.08.2010
comment
Разве \makeatother не вызовет проблем, если будет использован в .sty файле? Я бы предложил удалить \makeatletter и \makeatother из версии .sty, так как они там в любом случае не нужны. - person Scz; 16.03.2017

Для этого есть вариант пакета pdfusetitle, см. Сделать так, чтобы гиперссылка брала pdfinfo из \ title и \ author.

person Konstantin Möllers    schedule 02.01.2016