TOC에서는 부록(있는 그대로)을 유지하지만 보고서에서는 제목을 대문자로 사용하는 방법

TOC에서는 부록(있는 그대로)을 유지하지만 보고서에서는 제목을 대문자로 사용하는 방법

나는 을 사용하고 report있으며 장 제목을 모두 대문자로 표시해야 하지만(부록 포함) TOC에는 포함하지 않아야 합니다. 예를 들어 "Appendix A" 대신에 논문 내부에는 "APPENDIX A"로, TOC에는 "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"를 대문자로 쓰지 않습니다 (원본 템플릿에서도 마찬가지임).아직위 스타일 파일 뒤에 나타납니다(장 제목은언제나대문자로 표시되지만 "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이 패치를 \appendixusing 에 추가합니다 \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*.

관련 정보