Повторите \maketitle с точно таким же стилем и параметрами

Повторите \maketitle с точно таким же стилем и параметрами

Я пытаюсь создать документ, который в произвольном месте будет повторять заголовок с первой страницы.

\documentclass[a4paper,anonymous]{lipics-v2021}

\title{My Paper}

\titlerunning{paper} 

\author{Me}{}{}{}{}

\begin{document}

% Generate title
\maketitle

% Any amount of text/sections
lorem ipsum...

% I now want to show exactly the same title again
\maketitle

\end{document}

Однако этот код выводит совершенно неформатированный текст заголовка и параметров автора, приведенных выше.

Несколько ссылок [1,2] предлагаем использовать titlingпакет, хотя здесь есть две проблемы:

  1. Похоже, я не могу заставить его использовать то, \maketitleчто определено в .clsфайле для моего проекта (в моем случае это lipics).
  2. Пакет titlingтребует от меня повторить все параметры для \maketitle. (например \title{..}, \author{}, и т.д.).

решение1

В вашем классе, как и в стандартных классах, \maketitleотключает себя, а также очищает макросы \@titleи \@author, содержащие метаданные, определенные командами \title{...}и \author{...} (см. строки 304 и последующие в [классе lipic-v2021 на github][1]). Следовательно, вы можете \renewcomnand(в преамбуле) \maketitleкоманду с тем же кодом (начиная со строки 287), за исключением строк 304–314.

Стандартное ПРЕДУПРЕЖДЕНИЕ: вы можете сделать это для личного использования. Но никогда не делайте таких изменений, если ваш документ предназначен для отправки в соответствующий журнал/конференцию/редактору (в данном случае для конференций серии LIPIcs). [1]:https://github.com/prosysscience/lipics/blob/master/lipics-v2021.cls

решение2

Глядя наопределение класса, вы найдете (строки 287-315)

\renewcommand\maketitle{\par
  \begingroup
    \thispagestyle{plain}
    \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
    \if@twocolumn
      \ifnum \col@number=\@ne
        \@maketitle
      \else
        \twocolumn[\@maketitle]%
      \fi
    \else
      \newpage
      \global\@topnum\z@   % Prevents figures from going at top of page.
      \@maketitle
    \fi
    \thispagestyle{plain}\@thanks
  \endgroup
  \global\let\thanks\relax
  \global\let\maketitle\relax
  \global\let\@maketitle\relax
  \global\let\@thanks\@empty
  \global\let\@author\@empty
  \global\let\@date\@empty
  \global\let\@title\@empty
  \global\let\title\relax
  \global\let\author\relax
  \global\let\date\relax
  \global\let\and\relax
}

Второй вариант \maketitleтерпит неудачу из-за всех \global\let...\relaxи \global\let...\@empty.

Вы можете попробовать переопределить его (внутри \makeatletterи \makeatotherдля обработки символа @в именах макросов).

\makeatletter
\renewcommand\maketitle{\par
  \begingroup
    \thispagestyle{plain}
    \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
    \if@twocolumn
      \ifnum \col@number=\@ne
        \@maketitle
      \else
        \twocolumn[\@maketitle]%
      \fi
    \else
      \newpage
      \global\@topnum\z@   % Prevents figures from going at top of page.
      \@maketitle
    \fi
    \thispagestyle{plain}\@thanks
  \endgroup
}
\makeatother

Полный титульный лист, включая нижний колонтитул, печатается снова. Если вам нужен только сам заголовок, вам нужно посмотреть \@maketitleопределение и скопировать нужные вам части.

Пример:

\documentclass[a4paper,anonymous]{lipics-v2021}

\makeatletter
\renewcommand\maketitle{\par
  \begingroup
    \thispagestyle{plain}
    \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
    \if@twocolumn
      \ifnum \col@number=\@ne
        \@maketitle
      \else
        \twocolumn[\@maketitle]%
      \fi
    \else
      \newpage
      \global\@topnum\z@   % Prevents figures from going at top of page.
      \@maketitle
    \fi
    \thispagestyle{plain}\@thanks
  \endgroup
}
\makeatother

\title{My Paper}

\titlerunning{paper}

\author{Me}{}{}{}{}

\begin{document}

% Generate title
\maketitle

% Any amount of text/sections
lorem ipsum...

% I now want to show exactly the same title again
\maketitle

\end{document}

Связанный контент