Verstreute Inhalt - ein TOC-Eintrag. Idee gesucht

Inhalt, Abbildungen, Tabellen, Quellcodes und andere Verzeichnisse


Hamish
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Mi 23. Jun 2010, 06:41

Verstreute Inhalt - ein TOC-Eintrag. Idee gesucht

Beitrag von Hamish »

Hallo,
ich mühe mich gerade mit einem Vereinsmagazin ab und bin schon recht weit. Nun gibt es dort aber Einzelbeiträge (Gedichte), die nicht gebündelt in das Heft kommen, sondern z.T. als Füllmaterial auf die Seiten kommen.
Schön wäre es nun, könnte ich im Inhaltsverzeichnis einen Eintrag haben "Gedichte" und darunter die ganzen Gedichte mit Seitenzahlen aufgelistet.

Das Problem ist, dass das TOC die Einträge ja von vorne nach hinten listet und ich keine Ahnung habe, wie ich LaTeX mitteilen könnte, dass die einzelnen Gedichte sozusagen sections EINES chapters sind.

Ich bin für Tips und Suchbegriffe dankbar, wenn mein Problem unklar geschildert ist stelle ich gern ein Minimalbeispiel ein.

Das Dokument ist im Übrigen ein scrreprt.

Danke schon jetzt,
Hamish

Xenara
Forum-Meister
Forum-Meister
Beiträge: 682
Registriert: Mi 25. Nov 2009, 09:41

Beitrag von Xenara »

Du könntest für die Gedichte eine eigene Umgebung definieren und damit auch ein Gedichte-Verzeichnis erstellen lassen.
Das float-Paket stellt sowas zur Verfügung:
\documentclass{scrreprt} 
\usepackage[ngerman]{babel} 
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}	

\usepackage{scrhack}
\usepackage{blindtext} 

\usepackage{float}
\newfloat{Gedicht}{H}{ged}

\begin{document}

\tableofcontents
\listof{Gedicht}{Gedichte}

\chapter{Chapter}
\section{Test}

\blindtext

\begin{Gedicht}
\centering
Gedicht hier\\
Gedicht da\\
Immer alles wunderbar\\
Gedicht in der Liste\\
Gedicht in der Kiste\\
Da wird es niemals triste.
\caption{Mein Gedicht}
\end{Gedicht}

\blindtext

\chapter{Zweites Chapter}
\section{Noch ne section}
\blindtext

\begin{Gedicht}
\centering
Ein zweites Gedicht\\
Mehr wird es nicht.
\caption{Mein nächstes Gedicht}
\end{Gedicht}

\end{document}

Hamish
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Mi 23. Jun 2010, 06:41

Beitrag von Hamish »

Ha, das sieht schon mal interessant aus, vielen Dank. Werde das nachher mal ausprobieren und wieder berichten.

Nochmals grossen Dank für die schnelle, ausführliche und gute Antwort!!

Hamish

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Statt des float-Pakets kann man auch das caption-Paket oder tocbasic (wird von jeder KOMA-Script-Klasse ohnehin geladen) verwenden. Bei denen können Verzeichnisse ggf. auch ohne verkappte Gleitumgebungen verwendet werden. Außerdem bieten sie weit mehr Möglichkeiten für die Titelei. Man könnte bei Verwendung dieser Pakete beispielsweise einen Nummerierungsstil definieren, bei dem \caption bzw. \captionof gar keine Nummer, sondern nur einen Titel anzeigt.

Hamish
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Mi 23. Jun 2010, 06:41

Beitrag von Hamish »

Hallo,
so, ich habe es mal ausprobiert und bin erwartungsgemäss schnell an meine Grenzen gestossen. Ich hätte das natürlich gerne nicht auf einer neuen Seite und optisch zum Rest des ToC passend, was mir aber schwierig zu erreichen scheint...

Um das Problem zu illustrieren habe ich mal ein Beispiel angehängt. Es ist KEIN Minimalbeispiel, da ich vermute, dass beim Herausnehmen der Formatierungen das Problem nicht unbedingt offensichtlich wird. Ich bitte also, das zu entschuldigen.

Danke,
Hamish
\documentclass[pagesize,10pt,chapterprefix=false,headings=small,twoside, titlepage=false,caption=nooneline]{scrreprt}
\usepackage[applemac]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french,ngerman,english]{babel}
\usepackage{textcomp}
\usepackage[osf]{mathpazo} % rm & math
\usepackage[scaled=0.90]{helvet} % ss
\usepackage{courier} % tt

\usepackage{blindtext} 

\usepackage{scrhack}
\usepackage{float}
\newfloat{Gedicht}{H}{ged}

% Setting headers and footers
\usepackage[automark,plainfootsepline]{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\automark{addchap}
% Texts in header/footer
\lehead{\leftmark}
\rohead{\rightmark}
\ofoot[\vspace{-5pt}\thepage]{\vspace{-5pt}\thepage}
\cfoot[\vspace{-5pt}August 2010]{\vspace{-5pt}August 2010}
\ifoot[\vspace{-5pt} \#266/267]{\vspace{-5pt} \#266/267}
\setfootsepline{0.4pt}
\setheadsepline{0.4pt}
\setkomafont{pagehead}{\normalfont\sffamily\bfseries}
\setkomafont{pagefoot}{\normalfont\sffamily}
\addtokomafont{pageheadfoot}{\large}

% Defining papersize etc.
\usepackage[top=0.325in,inner=0.375in,outer=0.375in,bottom=0.375in,headsep=0.375in, head=-0.0in,foot=0.375in,includeheadfoot,papersize={5.5in,8.5in},resetpaper]{geometry}

% Formatting TOC
	\usepackage[tocfullflat]{tocstyle}
	%\usetocstyle{KOMAlike}
	\setuptoc{toc}{leveldown}
	%\setkomafont{chapterentrypagenumber}{\color{blue}} 

	\newtocstyle[classic]{nochapterpagenumer}{%
	  \settocfeature[0]{pagenumberbox}{\csname @gobble\endcsname}%
	  \settocfeature[-1]{pagenumberbox}{\csname @gobble\endcsname}%
	}

	\usetocstyle{nochapterpagenumer}

	% Empty "Originaladdchap" in case it existed before
	\newcommand*{\Originaladdchap}{}
	% Define "Originaladdchap" same as "addchap" (before changing addchap below)
	\let\Originaladdchap\addchap 

	% Empty "Originaladdcontentsline" in case it existed before
	\newcommand*{\Originaladdcontentsline}{}

	% New definition of addchap
	\renewcommand*{\addchap}{%
	%Define Originaladdscontentline as addcontensline
	\let\Originaladdcontentsline\addcontentsline
	% Change definition of addcontentsline with three arguments, ##1-##3 below by changing the third argument of the original addcontentsline
	\renewcommand*{\addcontentsline}[3]{%
		\Originaladdcontentsline{##1}{##2}{\noindent##3}%
		\let\addcontentsline\Originaladdcontentsline
	}%
	\Originaladdchap
	}

% Setting space before and after chapters
	\renewcommand*{\chapterheadstartvskip}{\vspace{-0.6in}}
	\renewcommand*{\chapterheadendvskip}{\vspace{0.125in}}

\begin{document}

\begingroup
\pagestyle{empty}
\setlength{\parindent}{0pt}
Test
\vspace{-0.5in}
\ \\
\renewcommand{\contentsname}{
	{\Large\textsf{\textbf{
	\renewcommand{\tabcolsep}{0.0in}
	\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lr}
	Issue \#266/267&August 2010 \\
	\end{tabular*}
	}}}
	\hrule
	}
\tableofcontents
\vspace{0.25in}
\listof{Gedicht}{Poetry}
\hrule
\clearpage
\endgroup

\addchap{Freundliche Begrüssung durch den Chefredaktor}
\vspace{-0.07in}\hrule\vspace{0.125in}
\addsec[{\small Editorial }\footnotesize{by Hamish}]{Editorial}
\vspace{-0.15in}
\begin{flushright}
{\small by Hamish}\\
\end{flushright}
\hspace*{\parindent}
\blindtext  

\begin{Gedicht}
\centering
Gedicht hier\\
Gedicht da\\
Immer alles wunderbar\\
Gedicht in der Liste\\
Gedicht in der Kiste\\
Da wird es niemals triste.
\caption{Mein Gedicht}
\end{Gedicht} 

\addchap{Noch was}
\vspace{-0.07in}\hrule\vspace{0.125in}
\addsec[{\small Noch was }\footnotesize{by PXY}]{Noch was}
\vspace{-0.15in}
\begin{flushright}
{\small by Noch was
}\\
\end{flushright}
\hspace*{\parindent}
\blindtext  

\begin{Gedicht}
\centering
Ein zweites Gedicht\\
Mehr wird es nicht.
\caption{Mein nächstes Gedicht}
\end{Gedicht} 


\end{document}

Hamish
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Mi 23. Jun 2010, 06:41

Beitrag von Hamish »

KOMA hat geschrieben:Außerdem bieten sie weit mehr Möglichkeiten für die Titelei. Man könnte bei Verwendung dieser Pakete beispielsweise einen Nummerierungsstil definieren, bei dem \caption bzw. \captionof gar keine Nummer, sondern nur einen Titel anzeigt.
Ich vermute, das übersteigt meine Möglichkeiten. Am Liebsten hätte ich die Möglichkeit, LaTeX zu sagen "dieser Abschnitt gehört hier hin"...
Mal abwarten.

Danke,
Hamish

Xenara
Forum-Meister
Forum-Meister
Beiträge: 682
Registriert: Mi 25. Nov 2009, 09:41

Beitrag von Xenara »

Du kannst das machen mit
\begingroup
\let\clearpage\relax
\listof{Gedicht}{Poetry} 
\endgroup
(übernommen von hier)

Aber:
In deinem lauffähigen Nicht-Minimalbeispiel wird die Poetry-Überschrift dann in das normale TOC reingezogen. In meinem MB ist das nicht der Fall, es muss also etwas mit deinen Layout-Einstellungen zu tun haben.
Ich habs auf die Schnelle nicht rausbekommen, woran es genau liegt, vielleicht kannst du es selbst mal probieren rauszufinden oder zumindest einzugrenzen.

Edit: Habs doch gefunden, es liegt an diesen Zeilen:
% Setting space before and after chapters 
   \renewcommand*{\chapterheadstartvskip}{\vspace{-0.6in}} 
   \renewcommand*{\chapterheadendvskip}{\vspace{0.125in}} 

Hamish
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Mi 23. Jun 2010, 06:41

Beitrag von Hamish »

Komisch, bei mir tut's.

Naja, muss ich mir wohl was anderes suchen, das mit der Caption unter den Gedichten gefällt mir auch nicht wirklich.

Wenn ich da jetzt in tocbasic reinschaue - das verträgt sich doch nicht mit tocstyle oder habe ich das auch falsch verstanden?

Cheers,
Hamish

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Wo steht, dass sich tocbasic nicht mit tocstyle verträgt? Wenn dem so wäre, dann würde sich tocstyle nicht mit den KOMA-Script-Klassen vertragen. Inhaltsverzeichnis, Abbildungsverzeichnis und Tabellenverzeichnis werden bei scrbook, scrreprt und scrartcl mit tocbasic realisiert. Ich glaube, ich hatte bereits erwähnt dass die tocbasic von den KOMA-Script-Klassen ohnehin geladen wird.

BTW: Wenn man neue Verzeichnisse anlegen will, lohnt sich ein Update auf KOMA-Script 3.06. Das bietet in diesem Bereich zwar nur eine einzige Anweisung mehr als bei 3.05, aber die macht einem das Leben schon einmal deutlich leichter.

Wenn Du aber tocbasic nicht verwenden willst, kannst Du - wie gesagt - auch caption verwenden. Das bietet ebenfalls alles, was man in der Richtung braucht.

Aber nicht vergessen: Du verwendest da etwas, das eigentlich ein wenig anders vorgehen war. Also musst Du ggf. etwas kreativ sein.

Ansonsten: Natürlich gäbe es auch noch die Möglichkeit, einen besonderen Eintrag in das Inhaltsverzeichnis zu packen. Dazu müsste man etwas wie:
\documentclass{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\makeatletter
\newenvironment{Gedicht}[1]{%
  \verse% so etwas wie \begin{verse} aber ohne Gruppe
  \textbf{#1}% Überschrift
  \refstepcounter{Gedicht}\label{ged-\theGedicht}% Ein Label dafür setzen
  \\*% Zeilenumbruch OHNE Seitenumbruch
  \medskip\nobreak% Abstand OHNE Seitenumbruch
  \protected@xdef\GedichtListe{\GedichtListe, \protect\pageref{ged-\theGedicht}}%
}{%
  \endverse% so etwas wie \end{verse} aber ohne Gruppe
}
\newcommand*{\GedichtListe}{}
\newcommand*{\protected@immediate@write}[3]{%
  \begingroup
    \let\thepage\relax
    #2%
    \let\protect\@unexpandable@protect
    \edef\reserved@a{\immediate\write#1{#3}}%
    \reserved@a
  \endgroup
  \if@nobreak\ifvmode\nobreak\fi\fi
}%
\BeforeClosingMainAux{% benötigt scrlfile oder eine KOMA-Script-Klasse
  \ifx\GedichtListe\@empty\else
    \let\protected@write\protected@immediate@write
    \show\GedichtListe
    \addtocontents{toc}{% Eintrag ins Inhaltsverzeichnis vornehmen
      \protect\contentsline{chapter}{Gedichte}{\expandafter\@gobble\GedichtListe}% z. B. als Kapitel-Eintrag
    }%
  \fi
}
\makeatother
\newcounter{Gedicht}
\begin{document}
\tableofcontents
\blinddocument
\begin{Gedicht}{Der Spatz}
Es saß ein mal ein kleiner Spatz\\
ein rechter großer Hosenmatz\\
allein auf einem großen Baum\\
-- man glaubt es kaum.
\end{Gedicht}

\blinddocument

\begin{Gedicht}{Noch ein Gedicht}
\end{Gedicht}

\end{document}
machen. Da hierbei \pageref im Verzeichnis verwendet wird, benötigt man einen LaTeX-Durchlauf mehr als üblich. Außerdem könnte es sein, dass es mit hyperef schief geht. Dann könnte \pageref* statt \pageref helfen.

Hamish
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Mi 23. Jun 2010, 06:41

Beitrag von Hamish »

Danke, auch das hat funktioniert - aber auch nicht so, wie ich mir das vorstelle. Die Eingriffe, die man da machen soll, übersteigen auch meine Fähigkeiten und ich würde es vorziehen, mich da nicht zu sehr rauszuwagen.
Also werde ich halt die Gedichte zu einem Block zusammenfassen und so ins TOC bringen.

Aber trotzdem schade, dass man LaTeX nicht irgendwie sagen kann, dass ein Abschnitt TOC-technisch einen Platz im Chapter XY bekommt.

Naja, vielleicht bin es ja auch nur ich, der dieses Feature so selbstverständlich findet... :-)

Jedenfalls vielen Dank Euch allen,
Hamish

Antworten