Cómo mantener el Apéndice (tal cual) en TOC pero tener el encabezado en mayúscula en el informe

Cómo mantener el Apéndice (tal cual) en TOC pero tener el encabezado en mayúscula en el informe

Estoy usando reporty necesito que los títulos de los capítulos estén en mayúsculas (incluido el Apéndice), pero no en el TOC. Por ejemplo, en lugar de "Apéndice A", debería aparecer como "APÉNDICE A" dentro del documento y "Apéndice A" en el TOC. Parece que he arreglado los capítulos regulares pero parece que no puedo entender cómo arreglar el Apéndice.

Puedo simplemente cambiar \appendixnamea APÉNDICE, pero luego aparecerá en mayúsculas en el TOC (lo cual preferiría que no fuera el caso). Cambiar la definición de \appendixclase de informe parece tener el mismo efecto (creo que porque básicamente se trata de redefinir \@chapapp):

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

Pude solucionar el problema del capítulo normal manteniendo \chapternameel CAPÍTULO como está y codificando el CAPÍTULO en lugar de usarlo \@chapappa continuación (que era parte de la plantilla original; no creé esto, por lo que no entiendo completamente qué está haciendo todo esto). ):

\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, no entiendo por qué \uppercaseno funciona en lo siguiente pero no escribe en mayúscula "Capítulo" de\@chapapp (esto también era de la plantilla original) yaúnaparece en el archivo de estilo después de lo anterior (los títulos de los capítulos tienensiempreapareció en MAYÚSCULAS, pero no en el prefijo "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@
    }
}

Respuesta1

Una solución sin codificar ni editar el .clsarchivo directamente:

El OP tenía razón en su suposición 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@
  }}

\@chapappDe hecho, se imprime la línea con Chapter(o Apéndice), seguida del número del capítulo.

Para obtener esta mayúscula, es necesario usar \MakeUppercase{\@chapapp}, no \uppercase.

En lugar de editar el report.clscódigo, es mejor usar \xpatchcmd, buscar la línea \huge\bfseries\@chapapp..y reemplazarla con el código relevante usando \MakeUppercase.

Sin embargo, esto debe hacerse solo después de \appendix, así que agregue este parche al \appendixuso \xapptocmd{\appendix}{...}(consulte el código)

\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}

ingrese la descripción de la imagen aquí

Tenga en cuenta que mi código no funciona para \chapter*apéndices similares.

información relacionada