[Tex/LaTex] How to change format of Appendix page name

appendicesformattingsectioning

This is a followup question to How to add cover pages to appendices? . This screenshot shows the school requirements.

enter image description here

This minimal example comes from Ruben's solution to the previous problem:

\documentclass[12pt,letterpaper,oneside]{book}
\usepackage[toc,page]{appendix}
\usepackage{lipsum}

\makeatletter
\def\@makeappendixhead#1{%
\null\vfill%
{\parindent \z@ \centering \normalfont
    \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
        \MakeUppercase \@chapapp\space \thechapter
        \par\nobreak
        \vskip 20\p@
      \fi
    \fi
    \interlinepenalty\@M
    #1\par\nobreak
    \vfill
    \clearpage
  }}
\g@addto@macro\appendices{\let\@makechapterhead\@makeappendixhead}
\makeatother

\begin{document}
\tableofcontents
\chapter{No Appendix}
\lipsum
\begin{appendices}
\chapter{One}
\lipsum
\end{appendices}
\end{document} 

From Ruben's solution, the only thing missing is that the main APPENDICES heading (page 29 in screenshot) should be Uppercase and in normal size font (instead of huge and bold, as it is right now.)

What I understand so far:

The appendix package manual, page 7, shows this bit of code that seems to be formatting appendixpagename ,

\newcommand{\@chap@pppage}{%
\clear@ppage
\thispagestyle{plain}%
\if@twocolumn\onecolumn\@tempswatrue\else\@tempswafalse\fi
\null\vfil
\markboth{}{}%
{\centering
\interlinepenalty \@M
\normalfont
\Huge \bfseries \appendixpagename\par}%

This last line seems to do the formatting. It would seem that deleting the \Huge \bfseries and adding \MakeUpperCase should do it, but how do I wrap the code to add it to the tex document?

Or perhaps this whole approach is wrong. Please advise!

Best Answer

What you need is \renewcommand. As the name implies this is for redefining an existing macro, in this case \@chap@pppage. Add to your preamble, between the \makeatletter and \makeatother

\renewcommand{\@chap@pppage}{%
  \clear@ppage
  \thispagestyle{plain}%
  \if@twocolumn\onecolumn\@tempswatrue\else\@tempswafalse\fi
  \null\vfil
  \markboth{}{}%
  {\centering
   \interlinepenalty \@M
   \normalfont
   \MakeUppercase \appendixpagename\par}%
  \if@dotoc@pp
    \addappheadtotoc
  \fi
  \vfil\newpage
  \if@twoside
    \if@openright
      \null
      \thispagestyle{empty}%
      \newpage
    \fi
  \fi
  \if@tempswa
    \twocolumn
  \fi
}

This is the complete (you had only included part of it in your question), old definition of \@chap@pppage, except that \Huge \bfseries is swapped with \MakeUppercase, as you yourself said.

If you don't want the start page for the appendices to appear in the table of contents, remove the toc option from the appendix package. If you want the ToC entry but you don't want the page number, add \noappendicestocpagenum to the preamble, after loading appendix. Complete code:

\documentclass[12pt,letterpaper,oneside]{book}

\usepackage[toc,page]{appendix}
\noappendicestocpagenum

\usepackage{lipsum}

\makeatletter
\def\@makeappendixhead#1{%
\null\vfill%
{\parindent \z@ \centering \normalfont
    \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
        \MakeUppercase \@chapapp\space \thechapter 
        \par\nobreak
        \vskip 20\p@
      \fi
    \fi
    \interlinepenalty\@M
    #1\par\nobreak
    \vfill
    \clearpage
  }}
\g@addto@macro\appendices{\let\@makechapterhead\@makeappendixhead}

\renewcommand{\@chap@pppage}{%
  \clear@ppage
  \thispagestyle{plain}%
  \if@twocolumn\onecolumn\@tempswatrue\else\@tempswafalse\fi
  \null\vfil
  \markboth{}{}%
  {\centering
   \interlinepenalty \@M
   \normalfont
   \MakeUppercase \appendixpagename\par}%
  \if@dotoc@pp
    \addappheadtotoc
  \fi
  \vfil\newpage
  \if@twoside
    \if@openright
      \null
      \thispagestyle{empty}%
      \newpage
    \fi
  \fi
  \if@tempswa
    \twocolumn
  \fi
}
\makeatother


\begin{document}
\tableofcontents
\chapter{No Appendix}
\lipsum

%\addtocontents{toc}{\bigskip\scshape Appendices \hfill \par} 
\begin{appendices}
\chapter{One}
\lipsum
\end{appendices}
\end{document}