PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Inhaltsverzeichnis einbinden



menuhin
05-07-2009, 14:30
Hallo zusammen,

bin ein ganz Frischer in dieser Gemeinde und habe folgendes Problem:
habe in der documentclass book eine kleine Arbeit mit Inhaltsverzeichnis verfasst. Nun möchte ich ausschließlich das Inhaltsverzeichnis in ein zweites Latech-Dokument (wieder documentclass book) einbinden. Habe fast keine Idee wie dies erledigt werden könnte :rolleyes:

Statt ein zweites latech-dokument zu erstellen könnte ich doch das erste latech-dokument beliebig erweitern und mittels irgendeiner Umgebung sämtlichen Inhalt meiner Arbeit bis auf das Inhaltsverzeichnis verbergen, so dass dieser beim Kompilieren in ein Pdf nicht sichtbar gemacht wird?

Gibt es einen solchen Befehl/Umgebung ?

Vielen Dank für eure Antworten.

mechanicus
05-07-2009, 14:38
Hallo,

du kannst die toc-Datei deiner anderen Arbeit in dein Neues Arbeitsverzeichnis kopieren und mittels:

\makeatletter
\def\tableofcontentsAlt{\@input{DATIENAME.toc}}
\makeatother
in deine Arbeit einbinden. Der Aufruf erfolgt dann mittels:

\tableofcontentsAlt


Eine andere Möglichkeit ist das Paket pdfpages, mit dessen Hilfe du die Inhaltsverzeichnisseite einfach einbinden kannst.

Gruß
Marco

menuhin
05-07-2009, 23:55
Hallo Marco,

vielen Dank erstmal für deine Antwort!
Habe die toc-Datei in den Ordner kopiert, indem das zweite Latex-Dokument gespeichert ist und anschließend an der Stelle im Dokument an der das Inhaltsverzeichnis erscheinen soll die vier Zeilen Code:

\makeatletter
\def\tableofcontentsAlt{\@input{LaTeX6.toc}}
\makeatother
\tableofcontentsAlt

eingefügt.
Leider erhalte ich folgende Fehlermeldung:

! Undefined control sequence

Könntest du mir bitte das Vorgehen noch etwas detaillierter erklären?

Merci.

rais
06-07-2009, 00:55
Moin moin,


Habe die toc-Datei in den Ordner kopiert, indem das zweite Latex-Dokument gespeichert ist und anschließend an der Stelle im Dokument an der das Inhaltsverzeichnis erscheinen soll die vier Zeilen Code:

\makeatletter
\def\tableofcontentsAlt{\@input{LaTeX6.toc}}
\makeatother
\tableofcontentsAlt

eingefügt.
Leider erhalte ich folgende Fehlermeldung:

! Undefined control sequence

mal abgesehen davon, daß Definitionen imho besser in der Präambel aufgehoben sind, schau mal, ob in Deiner LaTeX6.toc irgendwelche Befehle vorkommen, evtl nutzt Du ja unterschiedliche Pakete (die etwas in die TOC schreiben) in den unterschiedlichen Dokumenten ...

Wenn Dich da nicht weiterbringt, erstelle bitte ein Minimalbeispiel (http://www.minimalbeispiel.de) -- und vergiss dabei Deine `LaTeX6.toc' nicht.

BTW: ``Undefined Control Sequence'' gibt afaik grundsätzlich auch den Befehl an, der nicht definiert ist, etwa


! Undefined control sequence.
l.5 \foo

woraus man dann gleich sehen könnte, daß `\foo' hier nicht definiert ist ... was das bei Dir sein könnte, geht aus Deinem Beitrag leider nicht hervor.

MfG

menuhin
06-07-2009, 16:44
Hallo Rainer,

wenn ich ein ganz einfaches Inhaltsverzeichnis erstelle ohne dabei ein \usepackage zu verwenden kann diese toc.Datei problemlos mit dem von Marco vorgeschlagenen Code eingebunden werden.

Sobald ich jedoch einige notwendige Packages

1. \usepackage[T1]{fontenc}
2. \usepackage[ngerman]{babel}
3. \usepackage[top=23mm, bottom=20mm, right=23mm, left=23mm]{geometry}
4. \usepackage{setspace}

zur Erstellung des Inhaltsverzeichnisses verwende und dann die toc.Datei einbinde gibt es folgende Fehlermeldungen:

! Undefined control sequence.
1.1 \select
@langugage {ngerman}

! LaTex Error: Something's wrong--perhaps a missing \item
See the LaTeX manual ...

Trotz der Fehlermeldungen wird ein PDF erstellt, dass jedoch oben links
"@langugage ngerman" enthält und den ersten Eintrag meines Inhaltsverzeichnisses überschreibt.

Hier ein Minimalbsp., das jedoch die von mir verwendete Präambel vollständig enthält.

Das Inhaltsverzeichnis:


\documentclass[german, 11pt, a4paper, oneside]{book}

\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[top=23mm, bottom=20mm, right=23mm, left=23mm]{geometry} %Seitenränder definieren
\usepackage{setspace}
\linespread{1.1}
\usepackage{tocloft}
\pagestyle{empty}

\begin{document}

\tableofcontents

\part{Der Erste Teil}


\end{document}

Das Latex-Dok, in welches das Inhaltsverzeichnis eingebunden werden soll:


\documentclass[german, 11pt, a4paper, oneside]{book} %Option draft zeigt an welcher Stelle über den Rand geschrieben wird Option openany hat ähnlichen Effekt wie oneside
\usepackage[T1]{fontenc} %Umlaute erkennen
\usepackage[ngerman]{babel} %neue dt. Rechtschreibung. Wichtig, dass ngerman nach z.B. english, damit dt. Bezeichnungen z.B. Inhaltsverzeichnis statt Contents
\usepackage{soul} %Unterstreichen & Laufweite
\usepackage{graphics} %Graphik einfügen
\usepackage[top=23mm, bottom=20mm, right=23mm, left=23mm]{geometry} %Seitenränder definieren
\usepackage{setspace} %Zeilenabstand
\usepackage{color}
\definecolor{hellgrau}{gray}{0.6}
\definecolor{hellergrau}{gray}{0.8}
\usepackage[hang]{footmisc} %Korrektur Einzug Fusszeile
\usepackage{fancyhdr}
\usepackage{ifsym} %Aufzählungszeichen schwarzes Karo
\usepackage{fancyvrb}
\usepackage{tabularx}
\usepackage{colortbl}
\usepackage{array}
\usepackage{longtable}
\usepackage{multirow}
\usepackage{tocloft}
\setlength{\footnotemargin}{-0.8em}
\linespread{1.1}
\setlength\leftmargini{10pt} %Abstand zwischen linkem Seitenrand und Aufzählungszeichen
\pagestyle{empty} %Seitenzahlen unterdrücken
\addtolength{\skip\footins}{5mm plus 0mm}

%Nummerierung im Inhaltsverzeichnis
\renewcommand*\thepart{\Alph{part}.}
\renewcommand*\thechapter{\Roman{chapter}.}
\renewcommand*\thesection{\arabic{section}.}
\renewcommand*\thesubsection{\alph{subsection})}

% Inhaltsverzeichnis einbinden
\makeatletter
\def\tableofcontentsAlt{\@input{Inhaltsverzeichnis .toc}}
\makeatother

\begin{document}

\tableofcontentsAlt

\end{document}


Vielen Dank im Voraus!

Gruss, menuhin

u_fischer
06-07-2009, 17:25
Babel fügt in die toc-Datei Befehle mit @ ein. Du musst daher \makeatletter ausführen bevor du die Datei lädst (wie es übrigens auch der Originalbefehl \@starttoc macht).



\makeatletter
\def\tableofcontentsAlt{%
\begingroup
\makeatletter
\@input{LaTeX6.toc}%
\endgroup}
\makeatother



Ulrike Fischer

menuhin
06-07-2009, 18:31
Vielen Dank Ulrike für diesen entscheidenden Hinweis. Jetzt klappt alles wunderbar...wenn ich doch nur verstehen würde was hier eigentlich mache :D
Bin jedenfalls froh, dass es funktioniert und das Verständnis wird sich dann nach und nach einstellen.

Viele Grüße,

menuhin