이 질문은 본질적으로 다음과 같습니다.목차를 한 페이지에 맞추려면 어떻게 해야 합니까?
"사용할 때 \tableofcontents
다른 페이지로 이동하는 줄을 제외하고 모든 내용을 한 페이지에 표시하는데 어떻게 모두 같은 페이지에 만들 수 있나요?"
그러나 여기에 제공된 솔루션은 다음과 같은 이유로 나에게 도움이 되지 않습니다. ToC 옆의 페이지에는 텍스트만 있고(ToC 한 줄 포함) 그 다음 페이지는 섹션 제목으로 시작됩니다. ToC의 마지막 줄은 섹션 제목이 맨 아래에 표시되는 것을 피하기 위해 LaTeX에 의해 강제된 것으로 보입니다. 단락 사이보다는 ToC와 텍스트 사이에 공백을 두는 것을 선호합니다.
이에 대한 우아한 해결책이 있습니까?
답변1
Henrique의 솔루션은 문서의 특정 위치에 고정되어 있으며 문서가 toc
단 한 페이지일 것이라고 가정합니다. 또 다른 해결책이 있습니다.
\documentclass[12pt,a6paper]{article}
\usepackage{blindtext}
\makeatletter
\def\enlargetocpage{%
\begingroup
\@ifstar{\def\x{*}\@enlargetocpage}{\def\x{}\@enlargetocpage}%
}
\def\@enlargetocpage#1{%
\toks@{#1}%
\protected@edef\x{%
\endgroup\noexpand\AtEndDocument{\noexpand\addtocontents{toc}%
{\protect\enlargethispage\x{\the\toks@}}}%
}\x
}
\makeatother
\enlargetocpage*{\baselineskip}
\begin{document}
\tableofcontents
\blindtext
\section{A section}
\subsection{And a subsection}
\blindtext
\blinddocument
\blinddocument
\blinddocument
\end{document}
답변2
@lockstep의 첫 번째 답변에 이어목차를 한 페이지에 맞추려면 어떻게 해야 합니까?\addtocontents{toc}{\protect\enlargethispage{\baselineskip}}
, 즉시 추가하여 여러분이 기대하는 것을 달성했습니다.~ 후에첫 번째 섹션 제목. MWE는 다음과 같습니다.
\documentclass[12pt,a6paper]{article}
\usepackage{blindtext}
\begin{document}
\tableofcontents
\blindtext
\section{A section}
\addtocontents{toc}{\protect\enlargethispage{\baselineskip}}
\subsection{And a subsection}
\blindtext
\blinddocument
\blinddocument
\blinddocument
\end{document}