重新定义 \ps@plain 时访问 \title 变量

重新定义 \ps@plain 时访问 \title 变量

我想要漂亮的页脚。我试图通过重新定义命令来实现这一点\ps@plain,该命令重新定义\@oddfoot\@evenfoot

我遇到的问题是变量\title没有呈现文件\@title中设置的值:doc.tex

风格.sty:

\def\ps@plain{
  \renewcommand{\@oddhead}{}%
  \renewcommand{\@evenhead}{}%
  \renewcommand{\@evenfoot}{\title\@title}   % Footer is empty 
  \renewcommand{\@oddfoot}{\@evenfoot}%
}

文档.tex:

...
\title{My document}
\begin{document}

我尝试\title在我的中定义为全局变量style.sty,但没有任何运气:

\global\let\@title\@empty
\global\let\title\relax

我是 LaTeX 新手,不太了解变量范围如何工作。任何提示都非常感谢。

答案1

容器被使用后\@title会被类丢弃。您可以操之过急,重新定义页脚为可选参数:article\maketitle\title

\documentclass{article}

\usepackage{lipsum} % just for the example

\makeatletter
\def\title{\@dblarg\niekas@title}
\def\niekas@title[#1]#2{%
  \gdef\@title{#2}% for \maketitle
  \gdef\niekas@keep@title{#1}% for the footer
}

\def\ps@plain{%
  \let\@mkboth\@gobbletwo
  \renewcommand{\@oddhead}{}%
  \renewcommand{\@evenhead}{}%
  \renewcommand{\@evenfoot}{\reset@font\small\niekas@keep@title\hfil\thepage}%
  \renewcommand{\@oddfoot}{\@evenfoot}%
}
\pagestyle{plain} % apply the changes
\makeatother

\begin{document}
\author{Niekas}
\title[A short version]
  {A very long and boring title telling what
  should be in the paper instead of clobbering
  the title}

\maketitle

\lipsum[1-12]

\end{document}

当然你仍然可以说

\title{A title that is good in the footer}

并且不指定可选参数。

在此处输入图片描述

相关内容