
(ToC 내에 ToC를 나열함) 및 (ToC 내에 ToC를 나열하지 않음)을 기반으로 memoir
하는 클래스를 작성 중입니다 .\tableofcontents
\tableofcontents*
나는 보았다이 질문중복되는 항목이 많지만 사용자의 선택에 관계없이 목차 자체가 목차에 나열되는 것을 방지하고 싶습니다.\tableofcontents*
대 \tableofcontents
.
memoir
매뉴얼(섹션 9.2) 에 따라 현재 etoolbox
다음 작업을 수행하고 있습니다.
\pretocmd{\tableofcontents}{\begin{KeepFromToc}}{}{<class warning omitted>}
\apptocmd{\tableofcontents}{\end{KeepFromToc}}{}{<class warning omitted>}
예상대로 작동합니다(별표가 있는 변형과 별표가 없는 변형 모두 ToC 항목을 작성하지 않습니다).
이것이 권장되는 방법입니까? 이 방법에 제가 생각하지 못한 나쁜 부작용이 있나요?
수행하려는 모든 테스트에 대한 MWE는 다음과 같습니다.
\documentclass{memoir}
\usepackage{etoolbox}
\pretocmd{\tableofcontents}{\begin{KeepFromToc}}{}{}
\apptocmd{\tableofcontents}{\end{KeepFromToc}}{}{}
\begin{document}
\tableofcontents
\chapter{Test Chapter}
\section{Test Section}
\end{document}
답변1
명령 \tableofcontents
은 다음과 같이 정의됩니다.
> \tableofcontents=macro:
->\@ifstar {\@nameuse {mem@tableofcontents}{01}}{\@nameuse {mem@tableofcontents}{00}}.
\show\tableofcontents
정의가 간접적이기 때문에 사용해야 했습니다 .
\newlistof{tableofcontents}{toc}{\contentsname}
따라서
\makeatletter
\renewcommand{\tableofcontents}{%
\@ifstar{\mem@tableofcontents{01}}
{\mem@tableofcontents{01}}%
}
\makeatother
할 것입니다.
완전한 예:
\documentclass{memoir}
\makeatletter
\renewcommand{\tableofcontents}{%
\@ifstar{\mem@tableofcontents{01}}
{\mem@tableofcontents{01}}%
}
\makeatother
\begin{document}
\tableofcontents
\chapter{Test Chapter}
\section{Test Section}
\end{document}
그것 으로 \tableofcontents*
동일할 것입니다.
답변2
패키지 가 없으면 etoolbox
다음과 같이 할 수 있습니다.
\documentclass{memoir}
\makeatletter
\let\oldtableofcontents\tableofcontents
\def\tableofcontents{\@ifstar{\oldtableofcontents*}{\oldtableofcontents*}}
\makeatother
\begin{document}
\tableofcontents
\chapter{Test Chapter}
\section{Test Section}
\end{document}
(물론 파일에는 , .cls
가 필요하지 않습니다 \makeatletter
. \makeatother
)