在自定义类中访问标题和作者

在自定义类中访问标题和作者

可能重复:
在自定义标题页上使用 \title、\author 和 \date 的值

如何根据文章访问我自定义类中的标题和作者,以便将它们插入到我自动设置的页脚中?

我试过了\@title\@author但是什么也没有出现。

答案1

\@title从技术上讲,只有在使用and\@author时才定义:\title\author

\def\title#1{\gdef\@title{#1}}
\def\@title{\@latex@error{No \noexpand\title given}\@ehc}
\def\author#1{\gdef\@author{#1}}
\def\@author{\@latex@warning@no@line{No \noexpand\author given}}

也就是说,如果你引用\@title和/或\@author 没有调用时\title\author首先应该产生警告。为了避免这种情况,基于您正在编写特殊类的事实,您可以使用不同的方法:

\let\@title\@empty
\let\@author\@empty
\fancyfoot[C]{\ifx\@author\@empty\else\@author~--~\fi\ifx\@title\@empty\else\@title\fi}

如果两者都已定义,则上述代码将页脚设置为。只有未定义作者时AUTHOR - TITLE才会这样。如果给出了作者但没有标题,则可以扩展它以正常工作。TITLE

这是一个使用lipsumfancyhdr

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{fancyhdr}% http://ctan.org/pkg/fancyhdr
\makeatletter
\fancyfoot{}
\fancyfoot[C]{\ifx\@author\@empty\else\@author~--~\fi\ifx\@title\@empty\else\@title\fi}
\let\@title\@empty
\let\@author\@empty
\makeatother

\title{My title}
\author{Me}
\pagestyle{fancy}%
\begin{document}
\lipsum[1-3]
\end{document}​

如果你实际上也使用\maketitleas ,那么你需要做更多的工作。下面的 MWE 添加\@@titleand\@@author而不是\@titleand \@author

\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{fancyhdr}% http://ctan.org/pkg/fancyhdr
\makeatletter
\def\title#1{\gdef\@title{#1}\gdef\@@title{#1}}
\def\author#1{\gdef\@author{#1}\gdef\@@author{#1}}
\let\@@title\@empty
\let\@@author\@empty
\fancyfoot{}
\fancyfoot[C]{\ifx\@@author\@empty\else\@@author~--~\fi\ifx\@@title\@empty\else\@@title\fi}

\title{My title}
\author{Me}
\begin{document}
\maketitle
\thispagestyle{fancy}%
\lipsum[1-3]
\end{document}

相关内容