Próba dodania separatora do spisu treści
Chciałbym dodać odcinek linii o określonej długości w Spisie treści, aby oddzielić dwie różne części. (Przeszukałem tę witrynę, ale mogłem znaleźć tylko przykład dodania pełnej długości poziomej linii.)
Dziwię się, że trudno mi to osiągnąć, ponieważ \ reguła {1,25in} {. 15mm} działa dobrze w samym dokumencie. Jednak gdy próbuję dodać następujące elementy, pojawia się komunikat o błędzie:
\addcontentsline{toc}{\rule{1.25in}{.15mm}}
Rozważmy przykład roboczy:
\documentclass[12pt]{book}
\usepackage{tocloft}
\renewcommand\cftchapafterpnum{\vskip 12pt} %set space after each Chapter in the Table of Contents
\renewcommand\cftsecafterpnum{\vskip 8pt} %set space after each Section in the Table of Contents
\renewcommand\cftsubsecafterpnum{\vskip 8pt} %set space after each Subsection in the Table of Contents
% Centering Table of Contents
\renewcommand{\cfttoctitlefont}{\hfill\Huge\bfseries}
\renewcommand{\cftaftertoctitle}{\hfill}
\begin{document}
\addtocontents{toc}{\protect\thispagestyle{empty}}
\tableofcontents
\addcontentsline{toc}{chapter}{Chapter 1}
\addcontentsline{toc}{chapter}{Chapter 2}
\addcontentsline{toc}{chapter}{Chapter 3}
\addtocontents{toc}{\vspace{\normalbaselineskip}}
%\addcontentsline{toc}{\rule{1.25in}{.15mm}}
\addtocontents{toc}{\vspace{\normalbaselineskip}}
\addcontentsline{toc}{chapter}{Next Part of the Table of Contents}
\end{document}
który generuje wynik
Jednak gdy uruchamiam kod za pomocą polecenia \ addcontentsline {toc} {\ rule {1,25in} {. 15mm}}, otrzymuję komunikat o błędzie „Argument of \ reserved @ a has extra}. \ Addtocontents”.
Oraz następujące wyniki wyjściowe:
Ponownie chciałbym dodać do spisu treści odcinek linii poziomej o określonej długości - ale wszystko, co próbowałem do tej pory, zawiodło. Czy ktoś mógłby mi doradzić, co robię źle i jak to poprawić? Dziękuję Ci.
Odpowiedzi
Aby pomyślnie przetworzyć treść ToC, należy użyć \addtocontentszamiast \addcontentslinei wstawić znak \parpo \ruleznaku.
\documentclass{book}
\usepackage{tocloft}
\setlength{\cftbeforechapskip}{12pt}%set space after each Chapter in the Table of Contents
\setlength{\cftbeforesecskip}{8pt} %set space after each Section in the Table of Contents
\setlength{\cftbeforesubsecskip}{8pt} %set space after each Subsection in the Table of Contents
% Centering Table of Contents
\renewcommand{\cfttoctitlefont}{\hfill\Huge\bfseries}
\renewcommand{\cftaftertoctitle}{\hfill}
\begin{document}
\tocloftpagestyle{empty}
\tableofcontents
\addcontentsline{toc}{chapter}{Chapter 1}
\addcontentsline{toc}{chapter}{Chapter 2}
\addcontentsline{toc}{chapter}{Chapter 3}
\addtocontents{toc}{\vspace{\normalbaselineskip}}
\addtocontents{toc}{\rule[.1\normalbaselineskip]{1.25in}{.15mm}\par}
\addtocontents{toc}{\vspace{\dimexpr\normalbaselineskip-\cftbeforechapskip}}
\addcontentsline{toc}{chapter}{Chapter 4}
\end{document}
Przesunąłem \ruleodrobinę w górę, aby wyglądał lepiej, wyśrodkowany w pionie między dwoma nagłówkami rozdziałów. Użyłem również domyślnych tocloftpionowych odstępów / przeskoków i stylów stron, zamiast ręcznie dodawać tę zawartość do ToC. Nie ma to jednak większego znaczenia.
Spowoduje to umieszczenie linii dokładnie w środku przerwy 36 punktów ( \baselineskip=12pt).
\documentclass[12pt]{book}
\usepackage{tocloft}
\renewcommand\cftchapafterpnum{\vskip 12pt} %set space after each Chapter in the Table of Contents
\renewcommand\cftsecafterpnum{\vskip 8pt} %set space after each Section in the Table of Contents
\renewcommand\cftsubsecafterpnum{\vskip 8pt} %set space after each Subsection in the Table of Contents
% Centering Table of Contents
\renewcommand{\cfttoctitlefont}{\hfill\Huge\bfseries}
\renewcommand{\cftaftertoctitle}{\hfill}
\begin{document}
\addtocontents{toc}{\protect\thispagestyle{empty}}
\tableofcontents
\addcontentsline{toc}{chapter}{Chapter 1}
\addcontentsline{toc}{chapter}{Chapter 2}
\addcontentsline{toc}{chapter}{Chapter 3}
\addtocontents{toc}{\rule[\dimexpr 0.5\ht\strutbox-0.5\dp\strutbox]{1.25in}{.15mm}\vskip 12pt}
\addtocontents{toc}{Next Part of the Table of Contents}
\end{document}