Como manter o Apêndice (como está) no sumário, mas com o título em maiúscula no relatório

Como manter o Apêndice (como está) no sumário, mas com o título em maiúscula no relatório

Estou usando reporte preciso que os títulos dos capítulos estejam em letras maiúsculas (incluindo o Apêndice), mas não no sumário. Por exemplo, em vez de "Apêndice A", deverá aparecer como "APÊNDICE A" dentro do artigo e "Apêndice A" no sumário. Parece que consertei os capítulos regulares, mas não consigo descobrir como consertar o Apêndice.

Posso simplesmente mudar \appendixnamepara APÊNDICE, mas então ele aparecerá em letras maiúsculas no sumário (o que eu preferiria que não fosse o caso). Alterar a definição de \appendixfor report class parece ter o mesmo efeito (acredito porque é basicamente apenas uma redefinição \@chapapp):

\renewcommand{\appendix}{\par
   \setcounter{chapter}{0}%
   \setcounter{section}{0}%
   \gdef\@chapapp{APPENDIX}% modified from \appendixname
   \gdef\thechapter{\@Alph\c@chapter}}

Consegui corrigir o problema normal do capítulo mantendo \chapternamecomo está e codificando CHAPTER em vez de usar \@chapappo seguinte (que fazia parte do modelo original - eu não criei isso, então não entendo completamente o que tudo isso está fazendo ):

\def\@chapter[#1]#2{
    \ifnum \c@secnumdepth >\m@ne
        \refstepcounter{chapter}%
        \typeout{CHAPTER\space\thechapter.} % originally used \@chapapp
        \addcontentsline{toc}{chapter}%
        {\@chapapp\space {\thechapter}: {#1}}
    \else
         \addcontentsline{toc}{chapter}{#1}%                     
    \fi
    \chaptermark{#1}%
    \addtocontents{lof}{\protect\addvspace{10\p@}}%
    \addtocontents{lot}{\protect\addvspace{10\p@}}%
    \if@twocolumn
        \@topnewpage[\@makechapterhead{#2}]%
    \else
        \@makechapterhead{#2}%
        \@afterheading
    \fi
}

Honestamente, não entendo por que \uppercasenão funciona a seguir, mas não coloca "Capítulo" em maiúscula \@chapapp(isso também era do modelo original) eaindaaparece no arquivo de estilo após o acima (os títulos dos capítulos foramsempreapareceu em CAPS, mas não no prefixo "Capítulo x:").

\def\@makechapterhead#1{%
    \vspace*{-20\p@}%
    {\parindent \z@ \raggedright \normalfont
    \interlinepenalty\@M
    \ifnum \c@secnumdepth >\m@ne
        \centering  \large\bfseries 
        \uppercase{\@chapapp\space \thechapter: #1}
    \fi
    \vskip 20\p@
    }
}

Responder1

Uma solução sem codificação ou edição .clsdireta do arquivo:

O OP estava certo em sua suposição sobre \@makechapterhead:

\def\@makechapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright \normalfont
    \ifnum \c@secnumdepth >\m@ne
        \huge\bfseries \@chapapp\space \thechapter
        \par\nobreak
        \vskip 20\p@
    \fi
    \interlinepenalty\@M
    \Huge \bfseries #1\par\nobreak
    \vskip 40\p@
  }}

A linha com \@chapapprealmente é impressa Chapter(ou Apêndice), seguida pelo número do capítulo.

Para obter esta letra maiúscula, é necessário usar \MakeUppercase{\@chapapp}, não \uppercase.

Em vez de editar o report.clscódigo, é melhor usar \xpatchcmd, procurar a linha \huge\bfseries\@chapapp..e substituí-la pelo código relevante usando \MakeUppercase.

No entanto, isso deve ser feito somente depois \appendix, então anexe este patch ao \appendixusing \xapptocmd{\appendix}{...}(veja o código, por favor)

\documentclass{report}


\usepackage{xpatch}


\makeatletter

\xapptocmd{\appendix}{%
\xpatchcmd{\@makechapterhead}{%
  \huge\bfseries \@chapapp\space \thechapter
}{%
  \huge\bfseries \MakeUppercase{\@chapapp}\space \thechapter
}{\typeout{Patching \@makechapterhead succeeded}}{\typeout{Patching failed}}% Patching ends
}{\typeout{Appending succeeded}}{\typeout{Appending failed}}
\makeatother

\begin{document}

\chapter{First}

\appendix

\chapter{Appendix 1}

\end{document}

insira a descrição da imagem aqui

Observe que meu código não funciona para \chapter*apêndices semelhantes.

informação relacionada