目次に付録をそのまま残し、レポートの見出しを大文字にする方法

目次に付録をそのまま残し、レポートの見出しを大文字にする方法

を使用していますreportが、章の見出しはすべて大文字にする必要があります (付録を含む)。ただし、目次では大文字にする必要はありません。たとえば、「付録 A」ではなく、論文内では「APPENDIX A」、目次では「Appendix A」と表示される必要があります。通常の章は修正したようですが、付録の修正方法がわかりません。

APPENDIX に変更することもできます\appendixnameが、そうすると TOC ではすべて大文字で表示されます (そうならない方が望ましいです)。\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正直、次の例のように「Chapter」が大文字にならないのはなぜか理解できません\@chapapp(これは元のテンプレートでも同じでした)。まだスタイルファイルでは上記の後に記述されます(章のタイトルはいつも大文字で表示されますが、「Chapter 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:

OP の仮定は正しかったです\@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*私のコードは付録のようなものには機能しないことに注意してください。

関連情報