Próba dodania separatora do spisu treści

Oct 27 2020

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

5 Werner Oct 27 2020 at 21:17

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.

4 JohnKormylo Oct 27 2020 at 21:03

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}