Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Seitenzahl im Inhaltsverzeichnis nicht bündig

  1. #1
    Registrierter Benutzer
    Registriert seit
    18.10.2012
    Beiträge
    14

    Seitenzahl im Inhaltsverzeichnis nicht bündig

    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:

    Code:
    \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{\rightmark}\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

  2. #2
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.326
    Da fehlt schlicht ein \par:
    Code:
    \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!

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Da fehlt ein \par

    Code:
    \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

    Code:
    \chapter{Chap 1Chap 1Chap 1Chap 1Chap 1Chap 1Chap 1Chap 1Chap}
    Und schau dir an, wo dann die Seitenzahl im toc landet.

  4. #4
    Registrierter Benutzer
    Registriert seit
    18.10.2012
    Beiträge
    14

    Thumbs up

    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

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Zitat Zitat von coenig Beitrag anzeigen
    (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.

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

  6. #6
    Registrierter Benutzer
    Registriert seit
    18.10.2012
    Beiträge
    14
    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

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •