%20en%20TOC%20pero%20tener%20el%20encabezado%20en%20may%C3%BAscula%20en%20el%20informe.png)
Estoy usando report
y 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 \appendixname
a 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 \appendix
clase 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 \chaptername
el CAPÍTULO como está y codificando el CAPÍTULO en lugar de usarlo \@chapapp
a 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é \uppercase
no 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 .cls
archivo 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@
}}
\@chapapp
De 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.cls
có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 \appendix
uso \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}
Tenga en cuenta que mi código no funciona para \chapter*
apéndices similares.