PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TOC - Inhaltsverzeichnis mehrmals anzeigen



xbrain
26-07-2004, 11:30
Hi Leutz,
wie kann ich ein Inhaltsverzeichnis im gleichem Dokument mehrmals abbilden. Der Versuch mit \input{\jobname.toc} klappt nicht. Vielleicht kann mir jemand helfen ...:confused: Danke

edico
26-07-2004, 23:49
Diese Lösung ist brutal ...
...
\tableofcontents{}
\newcommand{\IV}{\tableofcontents{}} % tableofcontents neu definieren nach IV
\IV
...
\section*{Inhaltsverzeichnis}
\input{IV.toc} % Kopie des *.toc-files und umbenannt
...
funktioniert aber.
Und wofür?
Interessant wären auch 'Unter'inhaltsverzeichnisse in Chaptern mit starker Gliederung. Wie liefe das denn?
edico

P.S. Schau noch mal bei Manuela Jürgens nach. vielleicht sagt sie was drüber. hinsichtlich chapter nennt sie minitoc. Ggf. gibt noch was ...

edico
27-07-2004, 08:22
Ich habe folgenden Ansatz als eXample-Datei foo.tex:
%
% compile: pdflatex foo
%
\documentclass{article}
\usepackage{german}
\usepackage[latin1]{inputenc}
\usepackage{times}

\newcommand\manutoc{\bgroup
\def\l@subsection##1##2{\relax} % definieren, welche Ebenen
\def\l@subsubsection##1##2{\relax} % aufgenommen werden sollen
\section*{Manuelle Inhaltsübersicht}
\input{foo.toc}
\egroup}

\begin{document}
\title{Verzeichnis}
\author{Goofy}
\maketitle

\manutoc

\section{ABC}
Dies ist eine Sec.
\subsection{abc}
Dies ist eine Sub.
\subsection{def}
Dies ist eine Sub.
\section{DEF}
Dies ist eine Sec.

\tableofcontents

\end{document}

Wichtig ist, das reguläre Verzeichnis muss nach dem (oder jedem anderen - was ich nicht geprüft habe) manuell generierten (also hier: mantoc) zu stehen kommen. Das liegt daran, dass die toc-Datei zum Schreiben geüffnet wird und erst nach dem end{document} geschlossen wird. Deswegen kann ich auch nicht einfach \tableofcontents zweimal aufrufen ...
edico

xbrain
28-07-2004, 15:51
Hi edico,
danke für die Hilfe. Also, wir haben hier eine eigene misslatex-klasse, mit dem man Folien erstellen kann. Es gibt in dieser Klasse eine Section-Umgebung, bei dem der Titel auf einer Folie zentriert erscheint, und jeweils sections-Kommandos in dieser Umgebung. Mit dem section-Kommandos wird eine neue Folie begonnen.

Meine Aufgabe ist vor jeder Section-Umgebung eine Inhaltsverzeichnis aus den sections-Inhalten zu generieren. Und ich hatte mir überlegt, die Inhalte in eine Datei zu schreiben und dann vor jeder Section-umgebung auszulesen. Nur weiss ich nicht wie ich das implementieren soll.

Du kannst dir gerne mal unsere Folien anschauen:
http://www.informatik.uni-bremen.de/~kusatmer/tex-latex.pdf

edico
28-07-2004, 18:39
Ja, eine schöne Folie für meinen Geschmack. Ihr solltet die mal auf euren Server stellen. Baut sie auf der Seminar-Klasse auf ... ich wette drum?
Ich kann dir nicht helfen. Das schon erwähnte Paket minitoc löst dein Problem an sich nahtlos - allerdings nur für Chapter (book, report resp. koma-Pendants). Vielleicht kannst du den minitoc.sty-file für deine Bedarfe umschreiben oder bekommst Anregungen aus der Syntax. Schau dir das doch mal an. Er liest aus der toc-Datei die partiellen Inhaltsverzeichnisse, aber leider nicht für Section.
edico

P.S. Ich habe das Manual mal quergelesen. Du wirst deine Verzeichnisse doch hieraus generieren können! Das wird klappen können!
eXperimentiere mal - bei diesem File bekommst du für die Sections Inhaltsverzeichnisse. Und jetzt kommt es drauf an, wie euer slide-packages aufgebaut ist. Aber das wirst du schon hinfriemeln ...;-)
%
% compile: pdftex
%
%\documentclass{scrreprt}
\documentclass{scrartcl}
\usepackage{german}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage{minitoc}

\begin{document}
\footnotesize
\title{Verzeichnis}
\author{Goofy}
\maketitle

%\dominitoc
\dosecttoc
\tableofcontents

%\chapter{EINS}
%\minitoc

\section{ABC}
\secttoc
%Das hngt mit der Arbeitsweise von LaTeX zusammen.
\subsection{abc}
Das hngt mit der Arbeitsweise von LaTeX zusammen.
\subsection{def}
Das hngt mit der Arbeitsweise von LaTeX zusammen.

%\chapter{ZWEI}
%\minitoc

\section{DEF}
\secttoc
%Das hngt mit der Arbeitsweise von LaTeX zusammen.
\subsection{abc}
Das hngt mit der Arbeitsweise von LaTeX zusammen.
\subsection{def}
Das hngt mit der Arbeitsweise von LaTeX zusammen.

\end{document}
% --- END --- %

bischi
30-07-2004, 10:06
PS: Für Folien empfehl ich prosper...

Und wenn ich richtig verstanden habe, will xbrain mehrmals das ganze Inhaltsverzeichnis in einem Dokument haben... nix einfacher als das:

text
\tableofcontents
text
\tableofcontents
text
\tableofcontents
text
\tableofcontents
text
\tableofcontents
text

MfG Bischi

edico
30-07-2004, 21:25
@bischi
Erzähl mal bitte, wie du das machst - bei prosper und auch bei anderen Dokumentklassen
edico

xbrain
31-07-2004, 04:43
Hi bischi,
ja, du hast mich richtig verstanden. Jedoch wird im zweiten und in folgenden Aufrufen von \tableofcontents nicht das ganze Inhaltsverzeichnis abgebildet. Wenn man sich diesen internen @starttoc-Makro genauer anschaut, dann versteht man den Mechanismus mit dem Latex Verzeichnisse behandelt.


\def\@starttoc#1{%
\begingroup
\makeatletter
\@input{\jobname.#1}%
\if@filesw
\expandafter\newwrite\csname tf@#1\endcsname
\immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
\fi
\@nobreakfalse
\endgroup}


latex versucht also erst den Toc-File zu lesen, interessant war für mich zu sehen, dass der @input-Befehl keine Fehlermeldung beim ersten durchlauf erzeugt, weil ja erst später das toc-File erzeugt wird. Der Befehl \if@filesw ist eine boolesche Abfrage ob das toc-file existiert. Falls es keinen toc-File gibt, wird eins angelegt. Hier kann man auch verstehen, warum man unbedingt bei Verzeichnissen, dass Latex-File zweimal compilieren muss.

Änderungen werden erst im zweiten Durchlauf sichtbar, weil erst das @input und dann die entsprechenden Befehle addtocontentsline oder addtocontents ausgeführt werden.

bischi
31-07-2004, 14:53
Hast du zu dem ganzen Thema noch ne gute Doku oder was ähnliches?

MfG Bischi

xbrain
31-07-2004, 19:40
Leider hab ich keine doku dazu gefunden, der \@starttoc-Makro ist im base-Ordner in dem File latex.ltx zufinden.

Vielleicht nochmal kurz der Ablauf:

1) bei dem Aufruf des \tableofcontents-Befehls wird erst versucht das toc-File zu lesen,
2) falls es kein toc-file existiert, wird eins erzeugt.
3) und mit den Befehlen addtocontents oder addtocontentsline werden die Inhalte z.B. aus den sections in den toc-file geschrieben.


Daraus kristallisiert sich folgendes Problem:

=> mit dem normalen \tableofcontents-Mechanismus, ist das vollständige Inhaltsverzeichnis entweder erst am Anfang eines Dokumentes oder am Ende des Dokumentes abzubilden!