如何将附录(原样)保留在目录中,但在报告中将标题大写

如何将附录(原样)保留在目录中,但在报告中将标题大写

我正在使用report,我需要将章节标题全部大写(包括附录),但不将其显示在目录中。例如,它应该在论文中显示为“附录 A”,在目录中显示为“附录 A”,而不是“附录 A”。我似乎已经修复了常规章节,但似乎无法弄清楚如何修复附录。

我可以只更改\appendixname为 APPENDIX,但这样它在目录中就会全部大写(我不希望这样)。更改\appendix报告类的定义似乎有同样的效果(我相信,因为它基本上只是重新定义\@chapapp):

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

我能够通过保持\chaptername原样并对 CHAPTER 进行硬编码而不是使用\@chapapp以下内容来解决常规章节问题(这是原始模板的一部分 - 我没有创建它所以我不完全理解这一切在做什么):

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

老实说,我不明白为什么\uppercase在下面不起作用,但它没有将“章节”大写\@chapapp(这也是来自原始模板)并且仍然出现在样式文件中上述内容之后(章节标题有总是以大写形式出现,但没有“第 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@
    }
}

答案1

.cls无需硬编码或直接编辑文件的解决方案:

原帖作者的假设是正确的\@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确实打印了Chapter(或附录),后跟章节编号。

要获得大写字母,必须使用\MakeUppercase{\@chapapp},而不是\uppercase

与其编辑report.cls代码,不如使用\xpatchcmd,查找该行\huge\bfseries\@chapapp..并使用将其替换为相关代码\MakeUppercase

但是,这只能在之后完成\appendix,因此请将此补丁附加到\appendix使用中\xapptocmd{\appendix}{...}(请参阅代码)

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

在此处输入图片描述

请注意,我的代码不适用于\chapter*类似附录。

相关内容