在下面的例子中,我想让文档标题的“外观”与章节标题相同。
\documentclass[12pt]{report}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\begin{document}
\title{Footer Testing}
\date{January 3, 2012}\maketitle
\chapter*{Preface}
\begin{flushleft}
\lipsum[1]\par
\chapter*{What is footer?}
\lipsum[2]
\end{flushleft}
\end{document}
一件事又引出了另一件事,而我当时正在报告文件一段时间后。
换句话说,我喜欢\huge\bfseries
章节标题,并希望将其用作huge\bfseries
文档标题。(我查看了\makechapterhead
in的定义report.cls
才得出这个结论。如果我错了,请纠正我。)但是,我找不到@title
in的定义report.cls
。(它似乎@title
更为基本。)
@title
是否可以通过某种方式改变“外观”来匹配章节标题的外观?
答案1
您可以通过执行以下操作来获得结果:
\documentclass[12pt]{report}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\begin{document}
\title{\huge\bfseries Footer Testing} % already scoped in report.cls
\date{January 3, 2012}\maketitle
\chapter*{Preface}
\begin{flushleft}
\lipsum[1]\par
\chapter*{What is footer?}
\lipsum[2]
\end{flushleft}
\end{document}
为了更好地定制titlepage
环境可能会很有趣。我看了一下report.cls
。@title
只保存了标题。这里引用了 report.cls 的相关部分。
\def\ps@myheadings{%
\let\@oddfoot\@empty\let\@evenfoot\@empty
\def\@evenhead{\thepage\hfil\slshape\leftmark}%
\def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
\let\@mkboth\@gobbletwo
\let\chaptermark\@gobble
\let\sectionmark\@gobble
}
\if@titlepage
\newcommand\maketitle{\begin{titlepage}%
\let\footnotesize\small
\let\footnoterule\relax
\let \footnote \thanks
\null\vfil
\vskip 60\p@
\begin{center}%
{\LARGE \@title \par}%
\vskip 3em%
{\large
\lineskip .75em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1.5em%
{\large \@date \par}% % Set date in \large size.
\end{center}\par
\@thanks
\vfil\null
\end{titlepage}%
\setcounter{footnote}{0}%
\global\let\thanks\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
}
\else
\newcommand\maketitle{\par
\begingroup
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
\long\def\@makefntext##1{\parindent 1em\noindent
\hb@[email protected]{%
\hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
\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
\setcounter{footnote}{0}%
\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
}
答案2
首先,注释。如果您希望查看某个命令的定义,您可以在其前面加上\show
并检查.log
文件。请注意,这将按定义显示命令的定义在那个特定的时刻. 为了完整性,\@title
定义在latex.ltx
作为
\def\title#1{\gdef\@title{#1}}
\def\@title{\@latex@error{No \noexpand\title given}\@ehc}
它要么设置\@title
为与 相同\title
(如果您使用\title
),要么将其设置为错误宏(如果您不使用\title
)。
@someonr 的答案提供了最简单的方法来将标题字体格式化为符合您的规范。请注意,\chapter
和\chapter*
将标题格式化为\Huge\bfseries
。
为了修改的垂直对齐方式\maketitle
以匹配的\chapter*
(我假设您希望保留水平对齐/居中),需要做更多的工作。您可以使用
\makeatletter
\title{Footer Testing}
\chapter*{\makebox[\linewidth]{\@title}}
\makeatother
但这不会排版所有其他与标题相关的内容。因此,重新定义 或许\maketitle
可行。这是一个最小示例:
\documentclass[12pt]{report}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\makeatletter
\renewcommand{\maketitle}{%
\let\footnotesize\small
\let\footnoterule\relax
\let\footnote\thanks
\chapter*{\makebox[\linewidth]{\@title}}
\begin{center}
\vskip\dimexpr 3em-40\p@\relax%
{\large \lineskip .75em%
\begin{tabular}[t]{c} \@author \end{tabular}\par}%
\vskip 1.5em%
{\large \@date \par}%
\end{center}\par
\@thanks
\vfill\null\setcounter{footnote}{0}
%\thispagestyle{empty}\addtocounter{page}{-1}
}
\makeatother
\begin{document}
\title{Footer Testing}
\date{January 3, 2012}
\author{Random Randofsky\thanks{Yo mama}}
\maketitle
\chapter*{Preface}
\lipsum[1]
\chapter*{What is footer?}
\lipsum[2]
\end{document}
如果您希望删除第一页/标题页的页脚(页码),请取消注释将\maketitle
页面样式设置为的最后一行empty
,然后“重置”page
计数器。