Подтвердить что ты не робот

Настройка 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 для создания пользовательской титульной страницы. Поэтому я знаю эту работу.

Любые предложения?

4b9b3361

Ответ 1

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