PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nummerierung/Seitennummer im Inhaltsverzeichnis für fake-section unterdrücken?



hawkeye
03-07-2016, 20:35
Hallo,

ich würde gerne mein Inhaltsverzeichnis ein bisschen strukturieren so dass zwar im Inhaltsvzerzeichnis weitere Subsections angezeigt werden die dann aber nicht im eigentlich Text auftauchen. Ich habe nun mit google bereits ein Stück Code gefunden was für mich subsections einfügt die dann auch tatsächlich nicht im Text auftauchen.

Nun stehe ich aber vor dem Problem das ich nicht weiß wie ich diesen Code dahin gehend erweitern kann das die Nummerierung und die Seitennummern nicht angezeigt werden? Mein Quellcode sieht aktuell wie folgt aus:



\documentclass[]{scrartcl}
\usepackage{cook}
\usepackage[T1]{fontenc}
\usepackage{wallpaper}
\usepackage{longtable}

% Neuer Code für die neuen Subsections
\newcommand{\fakesubsection}[1]{%
\subsectionmark{#1}% Add subsection mark (header)
\addcontentsline{toc}{subsection}{\protect\numberl ine{\thesubsection}#1}% Add subsection to ToC
% Add more content here, if needed.
}
% Neuer Code für die neuen Subsections

\tableofcontents


\section{Header A}
\fakesubsection{subsection}
\input{site1.tex}
\input{site2.tex}
\input{site3.tex}

\section{Header B}
\input{site1.tex}
\input{site2.tex}
\input{site3.tex}

\end{document}


und dabei wurde der Code:



\newcommand{\fakesubsection}[1]{%
\subsectionmark{#1}% Add subsection mark (header)
\addcontentsline{toc}{subsection}{\protect\numberl ine{\thesubsection}#1}% Add subsection to ToC
% Add more content here, if needed.
}


neu eingefügt.

Darüber hinaus hätte ich noch die Frage, ob ich diese Subsections dahin gehend konfigurieren kann das die Einrücktiefe davon abhängt ob der Inhaltsverzeichniseintrag auf eine Section oder eine Subsection folgt. So das damit eine Anordnung in der Form:



Header AAA
Subsection aaa
Site 1
Site 2
Site 3

Header BBB
Site 4
Site 5
Site 6


möglich wird.

Ich würde mich über den einen oder anderen Hinweis freuen, da ich bei latex eher der Anwender als der Entwickler von Designs bin.
Viele Grüße
Dan

esdd
04-07-2016, 13:07
Dein Code ist leider nicht lauffähig. Zum einen fehlt \begin{document}, zum anderen ist das Paket cook.sty nicht auf CTAN (wird das für das MWE überhaupt gebraucht?) und wir kennen den Inhalt der von Dir eingebundenen Dateien wie site1.tex nicht. Außerdem ist unklar, welche Ebene die Überschriften Site 1 etc. haben und ob diese Überschriften nummeriert sind oder nicht. Gibt es neben den fakesubsection noch andere Überschriften der Ebene subsection?

Aus meiner Sicht ist es auch nicht sinnvoll, Überschriften der gleichen Ebene im Inhaltsverzeichnis verschieden weit einzurücken. Insgesamt sieht das für mich nach Zweckentfremdung des Inhaltsverzeichnisses aus.

Bitte weise zukünftig auch auf Crossposts hin: http://tex.stackexchange.com/q/317746

hawkeye
04-07-2016, 14:49
Die "Vorlage" ist von https://sourceforge.net/projects/chilicookbook/ entliehen, da ich aber nicht ganze Dokument hier posten wollte, habe ich gestern versucht das ganze etwas auf ein minimales Beispiel herunter zu brechen. Leider habe ich dabei versäumt zu kontrollieren ob der Quellcode überhaupt lauffähig ist. Ich kann gerne heute abend oder in den kommenden Tagen noch ein funktionierendes Beispiel einstellen, wenn dieses der Lösungsfindung hilft...

Was die "Zweckentfremdung" vom Inhaltsverzeichnis betrifft, in dem oben verlinkten Projekt werden sections für die Einleitung von neuen Abschnitten verwendet (bei mir wäre das Vorspeise, Hauptgericht, Dessert, Kuchen usw.) nun möchte ich aber gerne z.B. die Hauptgerichte noch etwas Unterteilen in "Deutsche Küche", "Asiatische Küche" ohne das diese Abschnitte im späteren Text auftauchen da sie meiner Meinung nach dort keinen weiteren Vorteil bringen. Ich bin natürlich für andere Lösungsvorschläge oder Ansätze durch aus aufgeschlossen aber dies war mein erster Entwurf wie ich die einzelnen Seiten im Inhaltsverzeichnis etwas besser strukturieren kann...

hawkeye
04-07-2016, 19:55
Hier mal ein (jetzt auch funktionierendes) minimales Beispiel. Damit wird es evtl. auch etwas klarer, was ich gerne bezwecken möchte...
http://www.file-upload.net/download-11738158/cookbook_example.zip.html

esdd
04-07-2016, 22:31
Ändere nie in den Originalpaketen, sonst sind nachher von einem Paket mit gleicher Versionsnummer verschiedene Varianten im Umlauf ...

Mit einer aktuellen KOMA-Script Version (mindestens 3.20, aktuell ist derzeit 3.21) geht das folgende:


\documentclass[]{scrartcl}[2016/05/10]

% Inputencoding hier selbst festlegen
\PreventPackageFromLoading{inputenc,fixltx2e}
\usepackage{cook}% see https://sourceforge.net/projects/chilicookbook/
\UnPreventPackageFromLoading{inputenc}
\usepackage[utf8]{inputenc}

\usepackage{longtable}

\usepackage{xpatch}
\xpretocmd\section{\clearpage\vspace*{2cm}}{}{}
\addtokomafont{section}{\rmfamily\Huge\color{darkr ed}}
\renewcommand\raggedsection{\centering}

\recipecolor{C20E0F}

\setcounter{secnumdepth}{-1}
\setcounter{tocdepth}{\subsectiontocdepth}

\newcommand\blank[1]{}
\DeclareTOCStyleEntry[%
level=\subsectiontocdepth,
beforeskip=5pt plus .2pt,
indent=1.5em,
numwidth=2.3em,
linefill=\hfill,
pagenumberformat=\blank,
entryformat=\textbf
]{tocline}{fakesubsection}

\newcommand{\fakesubsection}[1]{%
\subsectionmark{#1}% Add subsection mark (header)
\addtocentrydefault{fakesubsection}{}{#1}
}

\begin{document}
\tableofcontents
\section{Hauptgericht}
\fakesubsection{Deutsche Küche}
\begin{recipe}[]{Bandnudeln mit Lachs}{Quelle?}{}
\ingredient{Salz, Pfeffer}
\ingredient{Bandnudeln}
\step
Ins Restaurant gehen und kaufen, essen und freuen
\end{recipe}

\begin{recipe}[]{Apfelpfannkuchen}{Quelle?}{}
\ingredient{2 Äpfel}
\ingredient{Prise Salz}
\step
Chips sind auch lecker
\end{recipe}

\section{Gebäck}
\begin{recipe}[]{Apfel-Zimt-Muffins}{Quelle?}{}
\ingredient{120g Vollkorn-Weizenmehl}
\ingredient{250g Äpfel}
\step
Äpfel sind auch so gesund
\end{recipe}

\begin{recipe}[]{Apfelkuchen mit Mandel-Zimt Streuseln}{}
\par
\ingredient{1 Päckchen Vanillezucker}
\ingredient{2 Eier}
\ingredient{Zimt}
\ingredient{Salz}
\step
Kekse kann man auch kaufen
\end{recipe}
\end{document}

Inhaltsverzeichnis: 6202

hawkeye
06-07-2016, 07:00
Klasse ist das ist (fast) genau das was ich gesucht habe. Darum an der Stelle schon einmal vielen Dank für deine Hilfe, das hätte ich wohl in der kurzen Zeit nicht so einfach zusammen bekommen.
Nun hätte ich aber noch eine Frage ist es möglich die Einträge die unter den fakesection stehen etwas einzurücken? So das sich am Ende eine Struktur wie:



Hauptgericht
Deutsche Küche
Lachs mit Bandnudeln
Pfannkuchen

Backen
Muffins
Marmorkuchen

esdd
06-07-2016, 08:04
Das könnte man schon so hinbasteln, aber dann sieht es so aus als wäre "Deutsche Küche" eine gleiche Art von Unterteilung wie "Muffins". Unterhalb von Muffins müssten dann beispielsweise verschiedene Muffinrezepte folgen. Wenn Du in dem einen Abschnitt eine Unterteilung dazwischen schiebst, musst Du sie im Inhaltsverzeichnis anders auszeichnen. Mein Vorschlag in dem Beispiel war, vor diesen zusätzlichen Zwischenüberschriften etwas Abstand einzufügen und diese zum Beispiel fett zu machen. Außerdem haben sie ja keine Punktlinien und keine Seitenzahlen. Damit strukturien sie zwar das Inhaltsverzeichnis zusätzlich, aber Rezepteinträge sind trotzdem einheitlich formatiert.

hawkeye
06-07-2016, 11:10
Nein das z.B. "Deutsche Küche" fett ist würde ich schon gerne beibehalten und die Idee das etwas abzusetzen finde ich auch richtig gut. Aber ich wollte auch gerne Hauptgerichte/Backen (hier im Beispiel) etwas größer von der Schriftart machen, so das man eine klare Abstufung mit
Hauptkategorie
-> Unterkategorie der Hauptkategorie
----> Rezept

bzw.
Hauptkategorie
-> Rezept

hat. Ich habe bloß noch nichts zu der Hauptkategorie geschrieben weil ich gerne erst einmal selbst probieren wollte, die Schriftgröße der Hauptkategorien anzupassen...
Aber natürlich bin auch für andere Designvorschlage offen und vielleicht muss ich auch einfach nur noch mal ein paar Nächte darüber schlafen... Aber ich bin so ein mensch der eine Designidee im Kopf hat und die dann auch gerne umsetzen möchte, was aber nicht heißen soll das ich nicht auch für andere Ideen offen bin.

esdd
06-07-2016, 11:18
Die Schriftgröße der "Hauptkategorie" (also von Hauptgericht bzw. Gebäck) im Inhaltsverzeichnis kannst Du mit


\addtokomafont{sectionentry}{\Large}

zu \Large ändern.

hawkeye
06-07-2016, 11:20
danke, das erspart mir das suchen und herumprobieren. Aber was mache ich jetzt mit dem Einrücken? :-)

klops
06-07-2016, 12:15
Einrücken heißt auf Englisch indent. Es sei auch darauf hingewiesen, dass \DeclareTOCStyleEntry mit den möglichen Optionen in der KOMA-Script-Anleitung dokumentiert ist.

Die Tiefe der Einrückung hängt natürlich von der jeweiligen Ebene ab. Wenn also Rezepte je nachdem ob sie unter einem Fake-Abschnitt stehen oder nicht, unterschiedlich tief eingerückt werden sollen, dann müssen sie unterschiedliche Ebenen haben.

Fazit: Inkonsistenz bereitet Probleme. Deshalb sollte man sie besser vermeiden.

Wobei ich gestehen muss, dass ich nicht einmal verstanden habe, warum man \section künstlich mit einem Seitenumbruch und einem vertikalen Abstand zum Seitenfang versieht, statt gleich scrreprt mit \chapter zu verwenden. Vielleicht sollte ich mich also besser raushalten.

hawkeye
06-07-2016, 14:36
Danke für die übersetzung, ich hatte bei meinem X-Post im anderen Forum schon übeirlegt wie man Einrücken richtig übersetzt. Meine Idee wäre jetzt gewesen das ich eine eigene Umgebung konfiguriere die für die include-Befehle nichts anderes macht als sie einzurücken. Aber das ist wahrscheinlich ein völliger Missbrauch von latex und dessen Beschreibungskonzepts

esdd
06-07-2016, 15:17
Wobei ich gestehen muss, dass ich nicht einmal verstanden habe, warum man \section künstlich mit einem Seitenumbruch und einem vertikalen Abstand zum Seitenfang versieht, statt gleich scrreprt mit \chapter zu verwenden. Vielleicht sollte ich mich also besser raushalten.

Nein, bitte nicht raushalten. Ich habe nur leider vorher die Änderungen für \section ignoriert. Dabei ist es mit scrreprt einfacher: Da die Rezepte auf der subsection Ebene eingefügt werden, kann man dann für die Zwischenüberschriften einfach die section Ebene verwenden.


\documentclass[]{scrreprt}[2016/05/10]

% Inputencoding hier selbst festlegen
\PreventPackageFromLoading{inputenc,fixltx2e}
\usepackage{cook}% see https://sourceforge.net/projects/chilicookbook/
\UnPreventPackageFromLoading{inputenc}
\usepackage[utf8]{inputenc}

\usepackage{longtable}

\recipecolor{C20E0F}

\setcounter{secnumdepth}{-1}
\setcounter{tocdepth}{\subsectiontocdepth}

\RedeclareSectionCommand[%
beforeskip=-2cm,%
font=\rmfamily\Huge\color{darkred},%
tocentryformat=\sffamily\Large\textbf%
]{chapter}
\renewcommand\raggedchapter{\centering}

\RedeclareSectionCommand[%
tocbeforeskip=5pt plus .2pt,%
toclinefill=\hfill,%
tocpagenumberformat=\blank,%
tocentryformat=\textbf%
]{section}
\newcommand\blank[1]{}

\newcommand{\fakesection}[1]{%
\sectionmark{#1}% Add subsection mark (header)
\addtocentrydefault{section}{}{#1}
}

\begin{document}
\tableofcontents
\chapter{Hauptgericht}
\fakesection{Deutsche Küche}
\begin{recipe}[]{Bandnudeln mit Lachs}{Quelle?}{}
\ingredient{Salz, Pfeffer}
\ingredient{Bandnudeln}
\step
Ins Restaurant gehen und kaufen, essen und freuen
\end{recipe}

\begin{recipe}[]{Apfelpfannkuchen}{Quelle?}{}
\ingredient{2 Äpfel}
\ingredient{Prise Salz}
\step
Chips sind auch lecker
\end{recipe}

\chapter{Gebäck}
\begin{recipe}[]{Apfel-Zimt-Muffins}{Quelle?}{}
\ingredient{120g Vollkorn-Weizenmehl}
\ingredient{250g Äpfel}
\step
Äpfel sind auch so gesund
\end{recipe}

\begin{recipe}[]{Apfelkuchen mit Mandel-Zimt Streuseln}{}
\par
\ingredient{1 Päckchen Vanillezucker}
\ingredient{2 Eier}
\ingredient{Zimt}
\ingredient{Salz}
\step
Kekse kann man auch kaufen
\end{recipe}
\end{document}

http://www.mrunix.de/forums/attachment.php?attachmentid=6203&d=1467810803

6203

hawkeye
06-07-2016, 15:42
vielen dank fürs umstellen und das ist jetzt schon sehr dicht daran was ich gerne hätte und wenn es nicht geht kann ich mit dieser Lösung auch leben. Aber ich kann es mir trotzdem nicht verkneifen zu fragen ob es möglich ist, die Einträge unter Gebäck mit dem gleichen Einzug darzustellen wie "Deutsche Küche"? Ich weiß leider nicht woran sich latex bei dem Einzug der Elemente orientiert so das ich mir etwas schwer tue selbst eine Regel zu definieren die Besagt:
1. Alle Einträge die auf ein Chapter folgen haben den Einzug -2cm
2. Alle Einträge die auf ein fakesection folgen haben einen Einzug von -4cm.

So das sich wirklich ein Einzug ergibt bei dem sich die Elemente an der jeweiligen Überschrift (chapter, fakesection) orientieren.

Nachtrag:
Oder würde das wirklich zu inkonsistenzen führen so wie klops befürchtet?

esdd
06-07-2016, 16:34
Oder würde das wirklich zu inkonsistenzen führen so wie klops befürchtet?

Das wäre bereits an sich inkonsistent!

hawkeye
06-07-2016, 16:40
Was heißt eigentlich in diesem kontext inkonsistent? würde sich der Quellcode niht mehr "kompilieren" lassen? Weil letztendes soll für mich nur ein PDF herausfallen das ich irgendwann mal drucken und als buch binden lassen möchte und derzeit als nachschlage werk für meine rezepte dient....

esdd
06-07-2016, 17:24
Aus meiner Sicht möchtest Du die Rezepte inkonsistent behandeln, in dem Du sie unterschiedlich ins Inhaltsverzeichnis eintragen lässt. Es gibt dort dann vom ersten Eindruck her "höhere" (weniger eingerückte) und "niedrigere" (mehr eingerückte) Rezepte. Bei Gebäck würde es dann auch wesentlich mehr wenig eingerückte Einträge geben als bei den Hauptgerichten. Dabei ist der einzige Unterschied, der zu der unterschiedlichen Einordnung der Rezepte führt, dass Dir bei den einen ein Gruppierungsthema eingefallen ist und bei den anderen nicht ...

Und auch, wenn es Möglichkeiten gibt, das so zu erreichen - Code, den wir hier reinstellen, wird vielleicht auch von anderen kopiert und verbreitet sich damit.

hawkeye
06-07-2016, 17:44
Na ja es gibt Hauptkategorien da macht eine Unterkategorie in meinen Augen einfach keinen Sinn z.B. suppen, Frühstück, Saucen, Salate etc. und darum fänd ich es völlig legitim da die Einrückung etwas zurückzunehmen und es auf die gleiche Linie zu setzen wie wo eigentlich eine Unterkategorie beginnen würde.

Ich verstehe was du meinst mit Deiner Sorge das sich damit Dinge verbreiten würden, die man in anderen Programmiersprachen unter "Anti-Pattern" zusammenfasst, ist das richtig? Und ich weiß ehrlich gesagt aktuell nicht wie man aus diesem Lilemma herauskommen soll...Möglicherweise sollte ich einfach deinen Rat beherzigen und den Quellcode den du ein paar Postings weiter oben herein gestellt hast nehmen, den letztlich wird es am Ende niemanden stören wenn die Einträge alle auf einer Linie beginne, vielleicht sogar ganz im Gegenteil? An der Stelle fehlt mir einfach das Auge eines Designers für so etwas...

Johannes_B
07-07-2016, 11:30
Du willst dein Rezeptnachschlagewerk also in Teile untergliedern? Ein Teil Hauptgerichte, ein Teil Backen etc.

Dann nimm doch einfach Teile.

u_fischer
07-07-2016, 11:59
Wenn ich ihn eine Rezeptübersicht durchgehe, dann will ich auf keinen Fall dauernd hin- und herspringen. Und da Rezepttitel länger sein können, ist es besser wenn sie mit wenig oder gar keinem Einzug gesetzt werden. Wenn du ein flaches Verzeichnis ohne Einzüge hast, verschwinden viele deiner Probleme von alleine.

Unterteilungen nach "deutscher Küche" u.ä. sind m.E. nicht sonderlich sinnvoll.
Was machst du mit Gerichten, deren Ursprung unklar ist? Außerdem braucht man eher Unterteilungen "mit Fleisch", "mit Fisch", "vegetarisch".

hawkeye
07-07-2016, 12:17
Erst einmal vielen dank für eure Antworten und eure Ratschläge. Also:



Dann nimm doch einfach Teile.


Ich muss ganz ehrlich sagen, ich weiß nicht was du mit Teilen meinst? Dachtest Du daran das Dokument in mehrere einzelne Dokumente aufzuteilen? Falls ja das ist aktuell keine Option da das Dokument insgesamt noch keine 200 Seiten hat und ich das später gerne als ein Dokument binden lassen möchte. Vielleicht sollte ich aber auch einfach solange daran weiter schreiben bis der Umfang wirklich groß genug ist, um daraus mehrere einzelne Teile zu machen. Wie gesagt ich weiß nicht ob ich Dich richtig verstanden habe. Darum möchte ich dich an der Stelle auch gerne einladen mich zu korrigieren, falls ich dich falsch verstanden habe.




Wenn ich ihn eine Rezeptübersicht durchgehe, dann will ich auf keinen Fall dauernd hin- und herspringen. Und da Rezepttitel länger sein können, ist es besser wenn sie mit wenig oder gar keinem Einzug gesetzt werden. Wenn du ein flaches Verzeichnis ohne Einzüge hast, verschwinden viele deiner Probleme von alleine.

Unterteilungen nach "deutscher Küche" u.ä. sind m.E. nicht sonderlich sinnvoll.
Was machst du mit Gerichten, deren Ursprung unklar ist? Außerdem braucht man eher Unterteilungen "mit Fleisch", "mit Fisch", "vegetarisch".


Vielleicht ist es wirklich die bessere Lösung den Einzug bei allen Einträgen auf ein Minimum zu reduzieren so das man wirklich eine möglichst Flache Struktur bekommt und die Unterscheidung dann an der Schriftgröße/Schriftfarbe/Schriftart festmacht. Und mit dem Punkt das eher nach "Fischgerichte", "Fleischgerichte" etc. zu Kategorisieren ist definitiv richtig und werde ich auch so umsetzen. Die Idee noch eine weitere Ebene dazu zunehmen hat ihren Ursprung darin das ich es langsam aber sicher unübersichtlich finde wenn die Rezepte nur alphabetisch sortiert sind und ich auch im Abschnitt mit den Backrezepten eine nicht kategorisierte Ansammelung von Rezepten für Kuchen, Torten und keksen habe...

klops
07-07-2016, 13:01
Lies beispielsweise den Abschnitt über Gliederungsbefehle in der KOMA-Script-Anleitung (http://www.komascript.de/scrguide) oder im KOMA-Script-Buch (http://www.komascript.de/komascriptbuch). Da sind alle Gliederungsbefehle erklärt, auch die für Teile.

Insgesamt scheint mir, dass Du mit dem Lesen einer ausführlichen LaTeX-Einführung auch nicht ganz schlecht bedient wärst.