PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Seitenzahl im Inhaltsverzeichnis nicht bündig



coenig
01-09-2013, 09:05
Liebe TeX-Gurus ;),


ich arbeite derzeit an einem größeren Projekt (Buch) und schaffe es einfach nicht, das Inhaltsverzeichnis korrekt formatiert zu bekommen. Der Fehler ist, dass die Seitenzahlen nicht bündig untereinander stehen. (In meinem minimalen Beispiel unten sieht man den Fehler nur, wenn man genau hinschaut - im Gesamtdokument ist er aber größer.)

Es gibt zwei Anforderungen an das Projekt: (1) Da ich zwei Inhaltsverzeichnisse in einem Dokument brauche, wird das Paket titletoc benötigt. (2) Ein weiteres externes Nicht-Standard-Paket muss verwendet werden.

Das folgende Beispiel ist, soweit ich es konnte, auf das Wesentliche beschränkt. Ich habe nicht das gesamte externe Paket eingebunden, sondern auch hier versucht, nur die Stellen zu finden, die etwas mit dem Problem zu tun zu haben scheinen:



\documentclass{book}

\makeatletter
%%%%%%%%%% Aus dem externen Paket:
\baselineskip11.5pt
\parindent0pt
\newskip\normalparskip
\normalparskip5.75pt plus1pt minus1pt
\parskip\normalparskip

\def\tableofcontents{
\bgroup\parskip0pt
\def\thechapter{}
\chapter*{\contentsname}
\@starttoc{toc}\egroup\clearpage\pagestyle{empty}}

\newdimen\num@indent
\num@indent15mm
% [[HIER]]
\def\l@chapter#1#2{\par\vskip4mm plus2mm\addpenalty{-\@highpenalty}%
\@tempdima\num@indent
\textbf{#1\hfill#2}}

\def\l@section{\@dottedtocline{1}{0pt}{15mm}}
\def\l@subsection{\@dottedtocline{2}{0pt}{15mm}}
\def\l@subsubsection{\@dottedtocline{3}{0pt}{15mm} }

\edef\tocskip{2mm plus.2pt}
\renewcommand\@dotsep{1.5}
\def\@dottedtocline#1#2#3#4#5{%
\ifnum #1>\c@tocdepth \else
\ifnum#1<2
\vskip\tocskip
\fi
{\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
\parindent #2\relax\@afterindenttrue
\interlinepenalty\@M
\leavevmode
\@tempdima #3\relax
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
{#4}\nobreak
\leaders\hbox{$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep
mu$}\hfill
\nobreak
\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
\par}%
\fi}

\def\ps@headings{%
\def\@evenhead{%
\vbox to\headheight{%
\hbox to\textwidth{{\normalfont\normalsize\strut\thepage \hfill{\leftmark}}}%
\vss
\hrule width\textwidth height0.4pt depth0pt}}
\def\@oddhead{%
\vbox to\headheight{%
\hbox to\textwidth{{\normalfont\normalsize\strut{\rightm ark}\hfill\thepage}}%
\vss
\hrule width\textwidth height0.4pt depth0pt}}
\def\@evenfoot{}%
\def\@oddfoot{}%
}
%%%%%%%%%%
\makeatother

\usepackage{titletoc}

\begin{document}
\startlist{toc}\printlist{toc}{}{\section*{T. o. C.}}
\chapter{Chap 1} Some Text 1.
\chapter{Chap 2} Some Text 2.
\end{document}


Ich habe mich da schon so manche Stunde daran versucht, aber meine TeX-Kenntnisse stoßen hier wohl einfach an ein Ende. Es wäre toll, wenn jemand eine Idee hätte, wo der Fehler liegt :)


Viele Grüße

Lukas

klops
01-09-2013, 11:52
Da fehlt schlicht ein \par:
\def\l@chapter#1#2{\par\vskip4mm plus2mm\addpenalty{-\@highpenalty}%
\@tempdima\num@indent
\textbf{#1\hfill#2}\par}

ABER: Wenn Du titletoc verwendest, dann solltest Du sinnvoller Weise die Formatierung der Einträge mit den Anweisungen dieses Pakets machen!

u_fischer
01-09-2013, 12:05
Da fehlt ein \par


\def\l@chapter#1#2{\par\vskip4mm plus2mm\addpenalty{-\@highpenalty}%
\@tempdima\num@indent
\textbf{#1\hfill#2}\par}

Wobei die Definition aber auch damit nicht fehlerfrei ist. Versuch einfach mal mit


\chapter{Chap 1Chap 1Chap 1Chap 1Chap 1Chap 1Chap 1Chap 1Chap}

Und schau dir an, wo dann die Seitenzahl im toc landet.

coenig
01-09-2013, 13:38
Wow, toll!

Wie kommt ihr da nur so schnell schnell drauf...? Ich bin kein TeX-Anfänger, aber ich kniffle da schon seit einer ganzen Weile daran herum. Vielen Dank für die Hinweise!

Dass es unter gewissen Umständen immer noch nicht richtig funktioniert bzw. dass man es mit dem titletoc-Paket lösen sollte, muss ich mit den für das Paket Verantwortlichen abklären - ich selbst sollte darin eigentlich gar nicht herumpfuschen. (Interessant ist nur, dass es ohne titletoc funktioniert.)

Nochmal vielen Dank!


Grüße

Lukas

u_fischer
01-09-2013, 13:54
(Interessant ist nur, dass es ohne titletoc funktioniert.)


Glaube ich nicht. \textbf{#1\hfill#2} ist einfach falsch. Sobald der Zeilenbruch zwischen #1 und #2 erfolgt, wird \hfill entfernt und #2 (die Seitenzahl) landet links. Es hat schon seinen Grund, warum die Originaldefinition \nobreak einfügt.


#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par

coenig
01-09-2013, 14:16
Ok... scheint nachvollziehbar, stimmt. Ich werde das so einfach mal weitergeben. - Wie gesagt, was das Paket angeht, wasche ich meine Hände (ausnahmsweise mal) in Unschuld; wie schön ;)


Danke nochmal und viele Grüße

Lukas