Ich habe ähnliche Anforderungen wie bei der Frage »Inhaltsverzeichnis anpassen: Kapitel geht von Seite x bis y«. Allerdings gibt es bei mir ein paar Unterschiede:
Außerdem habe ich das Problem, dass der Code aus der dortigen Antwort von Ijon Tichy bei mir nicht funktioniert. |
Das sind mehrere Fragen auf einmal. Befassen wir uns einzeln damit: Die Seiten sollen nicht kapitelweise, sondern fortlaufend nummeriert werden.Wie in meiner früheren Antwort ausführlich erklärt, ist für die kapitelweise Nummerierung der Codeabschnitt \usepackage{xpatch} \makeatletter \newif\ifusepageperchapter \renewcommand*{\pagenumbering}[1]{% \global\c@page \@ne \gdef\thepage{% \ifusepageperchapter \ifnum \c@chapter>\z@ \thechapter-\fi \fi \csname @#1\endcsname\c@page }% }% \pagenumbering{arabic} \xpretocmd{\addchaptertocentry}{% \ifusepageperchapter\setcounter{page}{1}\fi }{}{\undefined} \makeatletter im dortigen Beispiel verantwortlich. Bis auf Wie dort ebenfalls erklärt wird, werden von dem soeben gelöschten Code u. a. zwei Anweisungen \documentclass[headlines=2]{scrreprt} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[ngerman]{babel} \usepackage{scrlayer-scrpage} \renewcommand*\chapterpagestyle{scrheadings} \ohead{Seite: \pagemark \\Datum:\ \today} \usepackage{xpatch} \RedeclareSectionCommand[% % style=chapter,% Abschnitte sollten wie Kapitel auf einer neuen Seite beginnen. tocpagenumberformat=\pagenumberrange,% Format der Seitenzahlen im Inhaltsverzeichnis ändern. ]{section} % Bei jedem Verzeichniseintrag \newcounter{sectionentry} \renewcommand*{\thesectionentry}{} \makeatletter \xpretocmd{\addsectiontocentry}{% \stepcounter{sectionentry}% \gdef\thesectionentry{\arabic{sectionentry}}% }{}{\undefined} \makeatother \xpretocmd{\section}{% \generatesectionendpagelabel }{}{\undefined} \xpretocmd{\chapter}{% \generatesectionendpagelabel }{}{\undefined} \newcommand*\generatesectionendpagelabel{% \Ifstr{\thesectionentry}{}{}{% % Wir hatten uns eine Startseite gemerkt und erzeugen jetzt ein Label für % die Endseite \label{section.endpage.to.section.entry.\thesectionentry}% \gdef\thesectionentry{}% Gemerkte Seite vergessen. }% } \AtEndDocument{\generatesectionendpagelabel} \newcounter{refsectionentry} \newcommand*{\pagenumberrange}[1]{% #1% \stepcounter{refsectionentry}% \Ifundefinedorrelax{r@section.endpage.to.section.entry.\therefsectionentry}{}{% \ --\ \pageref{section.endpage.to.section.entry.\therefsectionentry}% }% } % Jetzt benötigen im Inhaltsverzeichnis mehr Platz für die Seitenzahlen \makeatletter \renewcommand*{\@pnumwidth}{4.5em} \renewcommand*{\@tocrmarg}{5em} \makeatother % Wir wollen im Inhaltsverzeichnis nur Kapitel und Abschnitte: \setcounter{tocdepth}{\sectiontocdepth} \usepackage{lipsum} \begin{document} \tableofcontents \chapter{Kapitel 1} \section{Section 1} \subsection{Subsection 1} \lipsum \chapter{Kapitel 2} \section{Section 1} \lipsum \section{Section 2} \lipsum \section{Section 3} \lipsum \end{document} Und schon sieht das Inhaltsverzeichnis so aus: Statt den genannten Code zu löschen, hätte man natürlich auch einfach die Information verwenden können, dass mit Das Ende der Seitenbereiche im Inhaltsverzeichnis soll nicht automatisch, sondern manuell durch ein Label im Text markiert werden.Wie meiner früheren Antwort ausführlich erklärt wird, wird die neu definierte Anweisung \xpretocmd{\section}{% \generatesectionendpagelabel }{}{\undefined} \xpretocmd{\chapter}{% \generatesectionendpagelabel }{}{\undefined} eben die Ausführng von Zusätzlich wird mit \AtEndDocument{\generatesectionendpagelabel} dafür gesorgt, dass auch am Ende des Dokument noch ein solches Label erzeugt wird. Entfernt man die beiden Patches und die Das von \xpretocmd{\addsectiontocentry}{% \stepcounter{sectionentry}% \gdef\thesectionentry{\arabic{sectionentry}}% }{}{\undefined} jedes Mal, wenn ein neuer Inhaltsverzeichniseintrag der Ebene In der Ausgabe der Seitenzahlen im Inhaltsverzeichnis wird per \RedeclareSectionCommand[% % style=chapter,% Abschnitte sollten wie Kapitel auf einer neuen Seite beginnen. tocpagenumberformat=\pagenumberrange,% Format der Seitenzahlen im Inhaltsverzeichnis ändern. ]{section} als Format \Ifundefinedorrelax{r@section.endpage.to.section.entry.\therefsectionentry}{}{…} abgefragt, ob ein zugehöriges Label tatsächlich existiert und nur dann ein Seitenbereich im Inhaltsverzeichnis ausgegeben. Daher wir nach dem Löschen der oben genannten Patches zum automatischen Ausführung von \documentclass[headlines=2]{scrreprt} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[ngerman]{babel} \usepackage{scrlayer-scrpage} \renewcommand*\chapterpagestyle{scrheadings} \ohead{Seite: \pagemark \\Datum:\ \today} \usepackage{xpatch} \RedeclareSectionCommand[% % style=chapter,% Abschnitte sollten wie Kapitel auf einer neuen Seite beginnen. tocpagenumberformat=\pagenumberrange,% Format der Seitenzahlen im Inhaltsverzeichnis ändern. ]{section} % Bei jedem Verzeichniseintrag \newcounter{sectionentry} \renewcommand*{\thesectionentry}{} \xpretocmd{\addsectiontocentry}{% \stepcounter{sectionentry}% \gdef\thesectionentry{\arabic{sectionentry}}% }{}{\undefined} \newcommand*\generatesectionendpagelabel{% \Ifstr{\thesectionentry}{}{}{% % Wir hatten uns eine Startseite gemerkt und erzeugen jetzt ein Label für % die Endseite \label{section.endpage.to.section.entry.\thesectionentry}% \gdef\thesectionentry{}% Gemerkte Seite vergessen. }% } \newcounter{refsectionentry} \newcommand*{\pagenumberrange}[1]{% #1% \stepcounter{refsectionentry}% \Ifundefinedorrelax{r@section.endpage.to.section.entry.\therefsectionentry}{}{% \ --\ \pageref{section.endpage.to.section.entry.\therefsectionentry}% }% } % Jetzt benötigen im Inhaltsverzeichnis mehr Platz für die Seitenzahlen \makeatletter \renewcommand*{\@pnumwidth}{4.5em} \renewcommand*{\@tocrmarg}{5em} \makeatother % Wir wollen im Inhaltsverzeichnis nur Kapitel und Abschnitte: \setcounter{tocdepth}{\sectiontocdepth} \usepackage{lipsum} \begin{document} \tableofcontents %\usepageperchaptertrue \chapter{Kapitel 1} \section{Section 1} \subsection{Subsection 1} \lipsum \chapter{Kapitel 2} \section{Section 1} \lipsum \section{Section 2} \lipsum \section{Section 3} \lipsum \end{document} zunächst überhaupt kein Seitenbereich im Inhaltsverzeichnis mehr ausgegeben: da die Labels ja, wie erwähnt nun nicht mehr gesetzt werden. Aber natürlich können wir an beliebiger Stelle im Dokument selbst \documentclass[headlines=2]{scrreprt} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[ngerman]{babel} \usepackage{scrlayer-scrpage} \renewcommand*\chapterpagestyle{scrheadings} \ohead{Seite: \pagemark \\Datum:\ \today} \usepackage{xpatch} \RedeclareSectionCommand[% % style=chapter,% Abschnitte sollten wie Kapitel auf einer neuen Seite beginnen. tocpagenumberformat=\pagenumberrange,% Format der Seitenzahlen im Inhaltsverzeichnis ändern. ]{section} % Bei jedem Verzeichniseintrag \newcounter{sectionentry} \renewcommand*{\thesectionentry}{} \xpretocmd{\addsectiontocentry}{% \stepcounter{sectionentry}% \gdef\thesectionentry{\arabic{sectionentry}}% }{}{\undefined} \newcommand*\generatesectionendpagelabel{% \Ifstr{\thesectionentry}{}{}{% % Wir hatten uns eine Startseite gemerkt und erzeugen jetzt ein Label für % die Endseite \label{section.endpage.to.section.entry.\thesectionentry}% \gdef\thesectionentry{}% Gemerkte Seite vergessen. }% } \newcounter{refsectionentry} \newcommand*{\pagenumberrange}[1]{% #1% \stepcounter{refsectionentry}% \Ifundefinedorrelax{r@section.endpage.to.section.entry.\therefsectionentry}{}{% \ --\ \pageref{section.endpage.to.section.entry.\therefsectionentry}% }% } % Jetzt benötigen im Inhaltsverzeichnis mehr Platz für die Seitenzahlen \makeatletter \renewcommand*{\@pnumwidth}{4.5em} \renewcommand*{\@tocrmarg}{5em} \makeatother % Wir wollen im Inhaltsverzeichnis nur Kapitel und Abschnitte: \setcounter{tocdepth}{\sectiontocdepth} \usepackage{lipsum} \begin{document} \tableofcontents %\usepageperchaptertrue \chapter{Kapitel 1} \section{Section 1} \subsection{Subsection 1} \lipsum \chapter{Kapitel 2} \section{Section 1} \lipsum \section{Section 2} \lipsum \generatesectionendpagelabel% Achtung: Bewusst falsch platzierte Generierung des Endseiten-Labels! \lipsum \section{Section 3} \lipsum \end{document} Hier wird nun im Inhaltsverzeichnis für Abschnitt »2.2 Section 2« ein – wenn auch aufgrund der falschen Platzierung der Anweisung mitten im Abschnitt falscher – Seitenbereich ausgegeben: Wie an diesem Beispiel zu sehen ist, sinkt der Implementierungsaufwand durch weglassen des Automatismus nur wenig. Dafür erhöht sich die Gefahr, dass falsche Seitenbereiche im Inhaltsverzeichnis ausgegeben werden erheblich. Aus diesem Grund rate ich von einem solchen Vorgehen generell ab. beantwortet 29 Jan '21, 11:34 gast3 @FloTeX Ja, aber ich habe jetzt keine Zeit mehr dafür. Genau deshalb wollte ich, dass du deine Frage präzisierst und insbesondere für den Fall, dass du eben nicht mit meinem Orignalbeispiel, sondern mit einer Abwandlung davon ein Problem hast, dazu eine konkrete Folgefrage mit vollständigem Minimalbeispiel erstellst. So habe ich jetzt über eine Stunde Zeit verschwendet und muss mich erst einmal anderen Dingen widmen. Ich werde ja hier nicht bezahlt.
(29 Jan '21, 12:17)
gast3
WOW! Vielen Dank, funktioniert einwandfrei!!! Ganz großes Kino!! Alles gut, Du hast Deine Zeit nicht verschwendet! Das war sehr wertvoll!!! Vielen Dank nochmal! Und ja, ich finde auch, jeder von Euch Helfern sollte gleich eine Adresse angeben, wo man eine Flasche Wein hin verschicken kann!
(29 Jan '21, 12:18)
FloTeX
Auch wenn du mit der Antwort jetzt klar gekommen bist, empfehle ich, die von mir verlinkten Seiten und möglichst auch die verwendeten Anweisungen noch einmal nachzulesen. So richtig schwer zu verstehen, sollte das eigentlich nicht sein. Es ist aber auch nicht tragisch, wenn man nicht alles sofort versteht, sondern erst einmal nur einen Überblick erhält. Danke geht hier übrigens mit Daumen hoch und ggf. Haken. Wein muss nicht sein. Ohne LaTeX oder KOMA-Script wäre die Antwort nicht möglich gewesen.
(29 Jan '21, 14:02)
gast3
|
Beim Compilieren des Codes von Ijon Tichy erhalte ich die Fehlermeldung, dass {\undefined} nicht als Argument akzeptiert wird. Dies sowohl in einem bestehenden Dokument als auch in einem extra neu aufgesetzten Dokument, in das nur der Beispielcode einkopiert wurde. Trotz der sehr ausführlichen Beschreibung des Codes setzt dessen Verständnis doch tiefere Einblicke in die TeX-Engine voraus, als ich (trotz langjähriger Anwendung) habe. Deshalb habe ich versucht, den Code soweit wie möglich herunterzubrechen und insbesondere das automatische Setzen von Labels herauszunehmen. Allerdings ohne Erfolg
Durch die Erläuterungen bin ich zu dem Schluss gekommen, dass sich der gesamte Aufwand sehr reduzieren würde, wenn man eigenständig am Ende einer Sektion ein Label setzt und dies brauche ich auch, da sich die Seitenzahlen in einer statischen Berechnung viel zu willkührlich ändern, als dass ein Rechner Anfang und Ende jeweils erkennen könnte.