PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zwei UNTERSCHIEDLICHE Inhaltsverzeichnisse in einem Dokument



Nitecrawler
09-01-2011, 12:09
Hallo Zusammen,

vorneweg: ich habe den gleichen Thread auch hier eingestellt, um die Chance auf Beantwortung zu erhöhen. So wie ich das verstanden habe, geht das in Ordnung.

http://www.golatex.de/zwei-unterschiedliche-inhaltsverzeichnisse-in-einem-dokument-t6018.html

ich schreibe gerade an einem Exposé für eine längere wissenschaftliche Arbeit.
Das Exposé besteht aus 8 Teilen für die zu Beginn ein Inhaltsverzeichnis (bezogen auf das Exposé selber) angezeigt werden soll.
Einer der acht Teile des Exposés soll wiederum die vorläufige Gliederung der tatsächlichen Arbeit darstellen.
Damit LaTeX diese Gliederung erstellen kann, habe ich die tatsächliche Arbeit einfach an das Exposé angehängt (siehe Minimalbeispiel).

Problem 1: Die erste Inhaltsangabe umfasst nicht nur die 8 Teile des Exposés, sondern greift auch auf alle Punkte der eigentlichen Arbeit zurück.
Problem 2: Die zweite Inhaltsangabe soll sich nur auf die eigentliche Arbeit, nicht also auf die ersten 8 Punkte, also das Exposé beziehen.

Minimalbeispiel:

\documentclass{article}
\usepackage[a4paper]{geometry}
\usepackage[ngerman]{babel}

\begin{document}

% Zuerst das Inhaltsverzeichnis des Exposés, welches nur aus den ersten 8 sections bestehen soll
\tableofcontents

% Es folgt das Exposé zur eigentlichen Arbeit bestehend aus folgenden 8 sections
\section{Problembereich}
\section{Forschungsstand}
\section{Fragestellungen}
\section{Methoden}
\section{Materialzugang}
\section{Arbeitsplan}
\section{Vorl\"aufige Gliederung}
% In dieser section soll ein zweites Inhaltsverzeichnis stehen
% Dieses soll aber nicht die 8 sections des Exposés umfassen, sondern bezieht sich auf die eigentliche Arbeit
% Diese wiederum beginnt erst nach der 8. section mit dem ersten part
\tableofcontents
\section{Ausgew\"ahlte Literatur}

% Ab hier beginnt die eigentliche Arbeit

\part{A}
\section{section 1}
\subsection{subsection 1.1}
\subsection{subsection 1.2}
\section{section 2}
\part{B}
\section{section 1}
\subsection{subsection 1.1}
\subsection{subsection 1.2}
\section{section 2}

\end{document}

Hat jemand eine Idee, wie ich das möglichst schlank umsetzen kann, so dass ich es auch in zwei Wochen noch verstehe.
Habe jetzt schon einen Tag lang Foren durchsucht, und außer minitoc (welches ich auf das Problem nicht anwenden kann), bin ich auf nichts brauchbares gestoßen.

Vielen Dank und Gruß,
Nitecrawler

PS: Oder was mir noch einfällt: Kann ich vielleicht zwei separate Dokumente erstellen, und in dem ersten das Inhaltsverzeichnis vom zweiten Anzeigen lassen? Vielleicht wäre das ja einfacher.

mechanicus
09-01-2011, 14:07
Hi,


\documentclass{scrartcl}
\usepackage[a4paper]{geometry}
\usepackage[ngerman]{babel}

\makeatletter
\newcommand*\exposename{Exposeverzeichnis}
\newcommand*\listofosename{\exposename}
\setcounter{tocdepth}{3}
\newcommand*\ose@heading{%
\section*{\exposename}%
\@mkboth{\exposename}{\exposename}%
}
\newcommand*{\ose@l@number}{}
\newcommand*{\tableofexpose}{%
\begingroup\let\if@dynlist\if@tocleft\listoftoc{os e}\endgroup
}


\newcommand{\exposesection}[2][]{%
\def\temp{#1}%
\ifx\temp\@empty\relax
\section{#2}
\addcontentsline{ose}{section}{\protect\numberline {\thesection}#2}
\else
\section{2}
\addcontentsline{ose}{section}{\protect\numberline {\thesection}#1}
\fi%
}

\makeatother

\begin{document}
\addtocontents{toc}{\protect\setcounter{tocdepth}{-99}}
% Zuerst das Inhaltsverzeichnis des Exposés, welches nur aus den ersten 8 sections bestehen soll
\tableofexpose

% Es folgt das Exposé zur eigentlichen Arbeit bestehend aus folgenden 8 sections
\exposesection{Problembereich}
\exposesection{Forschungsstand}
\exposesection{Fragestellungen}
\exposesection{Methoden}
\exposesection{Materialzugang}
\exposesection{Arbeitsplan}
\exposesection{Vorl\"aufige Gliederung}
% In dieser section soll ein zweites Inhaltsverzeichnis stehen
% Dieses soll aber nicht die 8 sections des Exposés umfassen, sondern bezieht sich auf die eigentliche Arbeit
% Diese wiederum beginnt erst nach der 8. section mit dem ersten part
\addtocontents{toc}{\protect\setcounter{tocdepth}{ 3}}
\tableofcontents


\section{Ausgew\"ahlte Literatur}

% Ab hier beginnt die eigentliche Arbeit

\part{A}
\section{section 1}
\subsection{subsection 1.1}
\subsection{subsection 1.2}
\section{section 2}
\part{B}
\section{section 1}
\subsection{subsection 1.1}
\subsection{subsection 1.2}
\section{section 2}

\end{document}

Gruß
Marco

Schweinebacke
10-01-2011, 08:22
PS: Oder was mir noch einfällt: Kann ich vielleicht zwei separate Dokumente erstellen, und in dem ersten das Inhaltsverzeichnis vom zweiten Anzeigen lassen? Vielleicht wäre das ja einfacher.
Klar. Angenommen das zweite Hauptdokument heißt main.tex, dann heißt die Inhaltsverzeichnisdatei des zweiten Dokuments main.toc. Die Anzeige desselben ist dann so lange kein Problem, wie dieselben Gliederungsebenen existieren:
\newcommand*{\loadforeigntoc}[1]{%
\makeatletter% Da in toc-Dateien auch Befehle mit at-Zeichen (das ist das @) vorkommen können, muss aus diesem Zeichen zunächst ein Buchstabegemact werden.
\InputIfFileExists{#1.toc}% Laden der als Argument übergebenen Datei, wobei die Endung nicht als Argument übergeben wurde, sondenr hier automatisch angehängt wird
{}% Wenn die Datei geladen werden konnte, machen wir nichts weiter
{%
\typeout{Missing `#1.toc' ignored.}% Anderenfalls wird darauf hingewiesen, dass die Datei wohl gar nicht existiert.
}%
\makeatother% Hier wird nun aus dem at-Zeichen (also dem @) wieder ein "anderes Zeichen" also kein Buchstabe gemacht, womit das Zeichen nicht mehr in Befehlsnamen vorkommen kann.
}
...
\section*{Inhaltsverzeichnis der Arbeit}
\loadforeigntoc{main}% Die Endung wird vom Befehl angehängt, es wird also tatsächlich "mein.toc" geladen.
Will man jedoch beispielsweise in ein article-Dokument das Inhaltsverzeichnis eines book-Dokuments laden, dann funktioniert das so nicht, weil dann beispielsweise \l@chapter normalerweise nicht definiert ist. Das kann man natürlich ändern:

\newcommand*{\loadforeigntoc}[2][]{%
\begingroup
\makeatletter
#1%
\InputIfFileExists{#2.toc}{}{%
\typeout{Missing `#2.toc' ignored.}%
}%
\endgroup
}
\makeatletter
\newcomannd*{\setuplcommands}{%
\let\l@subsubsection\l@paragraph
\let\l@subsection\l@subsubsection
\let\l@section\l@subsection
\let\l@chapter\l@section
}
\makeatother
...
\section*{Inhaltsverzeichnis der Arbeit}
\loadforeigntoc[\setuplcommands]{main}
Alles ungetestet.

Natürlich muss man dafür sorgen, dass das zweite Dokument aktuell ist, wenn man \loadforeigntoc im ersten aufruft.

Achja: Wenn man babel verwendet, sollten im ersten Dokument die Sprachoptionen des zweiten ebenfalls angegeben sein. Anderenfalls bekommt man Fehlermeldungen wegen nicht geladener Sprachen!

Nitecrawler
11-01-2011, 18:09
Also, erstmal sorry, dass ich die Code-Funktion verpennt habe. Nächstes Mal!

Jetzt zum Problem. Vielen Dank für die Lösungsvorschläge. Da ich als trauriger LaTeX Anfänger natürlich völlig von den Socken bin, wenn da was steht das ich nicht begreife, aber das dennoch funktioniert, habe ich mich für die (scheinbar) einfachere Variante entschieden. Da beide Dokumente die selben Dokument-Arten haben, kein Problem. Funktioniert einwandfrei und ich bin sehr zufrieden. Ist auch irgendwie (gefühlt) sauberer, die beiden Dokumente zu trennen. Das eine ist ja schließlich das Exposé und das andere die tatsächliche Diss.

Aber egal, ich laber', vielen Dank!!!
Nitecrawler