可以修改@title吗?

可以修改@title吗?

在下面的例子中,我想让文档标题的“外观”与章节标题相同。

\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文档标题。(我查看了\makechapterheadin的定义report.cls才得出这个结论。如果我错了,请纠正我。)但是,我找不到@titlein的定义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可行。这是一个最小示例:

enter image description here

\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计数器。

相关内容