Mit

Öffne in Overleaf
\makeatletter
\newcommand{\CurrentTOCentry}{\@currenttocentry}
\makeatother

lese ich den aktuellen toc-Eintrag aus. Ich bräuchte sowas wie \@currentchapterentry und \@currentsectionentry um die aktuellen section- und chapter-Einträge auszulesen.

Gibt es sowas?

alt text

Öffne in Overleaf
\documentclass{scrreprt}
\begin{document}
\makeatletter
\newcommand{\CurrentTOCentry}{\@currenttocentry}
\makeatother
\chapter[short]{long}
CurrentTOCentry: \CurrentTOCentry
\section{Abschnitt}
CurrentTOCentry: \CurrentTOCentry
\subsection{Unterabschnitt}
CurrentTOCentry: \CurrentTOCentry

\chapter{Long}
CurrentTOCentry: \CurrentTOCentry
\end{document}

gefragt 31 Mai, 04:11

cis's gravatar image

cis
9.3k21204336
Akzeptiert: 62%

bearbeitet 31 Mai, 04:12

2

Schlechte Idee. Schon die Verwendung von \@currenttocentry ist ein übler Hack mit Interna, von denen dir niemand garantieren wird, dass das unter allen Umständen funktionieren wird. Ich vermute fast, dass du das für den Seitenstil verwenden willst. Dort wird es wegen der asynchronen Ausgabe ohnehin nicht funktionieren. Deshalb gibt es den Mark-Mechanismus, der auf LaTeX-Ebene durch \markboth, \markright, ggf. \markleft sowie \chaptermark, \sectionmark etc. und \leftmark, \rightmark ggf. \headmark, \lefttopmark etc. repräsentiert ist. Näheres in der KOMA-Script-Anleitung.

(31 Mai, 05:03) Ijon Tichy

Wofür benötigst Du denn die TOC(so steht es im Titel der Frage)-Einträge von Kapiteln und Abschnitten außerhalb vom Inhaltsverzeichnis? Für mich hört sich das sehr nach einem XY-Problem an.

(31 Mai, 19:31) esdd

Ja natürlisch... Das war, weil ich das hier https://texwelt.de/wissen/fragen/24914/koma-script-restliches-seitenlayout-bei-kenn-nummern-als-layout
einsetzen wollten. Allerdings ist es mir noch lieber, wenn es ohne das geht.

(31 Mai, 19:42) cis

Wie dem auch sei, das kann man auch ganz generell brauchen. Das hatte mich vor Jahren schonmal ganz allgemein interessiert, weil ich ein ref-Kommando bauen wollte, das den Titel zitiert. Ich wüsste also nicht, warum es wichtig ist, ob die Frage nur Teil eines größeren Problem ist.

(01 Jun, 07:12) cis

Zitieren der Titel usw. scheint alles mit dem Paket zref zu gehen. Wie das, rein zufällig gefundene, Beispiel zref-example.tex zeigt.

(16 Jun, 18:59) cis

An die Einträge ins Inhaltsverzeichnis für die Gliederungsebenen chapter und section kommt man beispielsweise durch Patchen von \addchaptertocentry bzw. \addsectiontocentry.

\documentclass{scrreprt}

% Sicherstellen, dass Anweisungen neu sind
\newcommand*\currentchaptertocentry{}
\newcommand*\currentsectiontocentry{}

\usepackage{xpatch}
% Speichern der aktuellen TOC-Einträge für Kapitel bzw. Abschnitte
\xpretocmd\addchaptertocentry
  {\xdef\currentchaptertocentry{#2}}{}{}
\xpretocmd\addsectiontocentry
  {\xdef\currentsectiontocentry{#2}}{}{}

\newcommand\test{
  currentchaptertocentry: \currentchaptertocentry\\
  currentsectiontocentry:\currentsectiontocentry
}

\begin{document}
\chapter[anderer TOC-Eintrag]{Kapitel}
\test
\section{Abschnitt}
\test
\addchap*{Kapitel ohne Nummer und ohne TOC-Eintrag}
\test
\addsec{Abschnitt ohne Nummer mit TOC-Eintrag}
\test
\chapter{Kapitel}
\test
\end{document}

Dabei fällt sofort auf, dass bei Kapiteln ohne TOC-Eintrag (\addchap* oder \chapter*) der letzte Eintrag eines Kapitels weiter in \currentchaptertocentry gespeichert ist. Außerdem bleibt ein in \currentsectiontocentry gespeicherter Abschnitts-TOC-Eintrag so lange erhalten, bis eine andere Abschnittsüberschrift einen neuen Eintrag ins Inhaltsverzeichnis erzeugt. Folgen also beispielsweise auf ein Kapitel mit Abschnitten weitere ohne, ist \currentsectiontocentry auch in diesen nicht leer.

Das lässt sich zwar mit

% "Leeren" der Anweisungen vor neuen Kapiteln und Abschnitten
\xpretocmd\chapter
  {\xdef\currentchaptertocentry{}%
   \xdef\currentsectiontocentry{}%
  }{}{}
\xpretocmd\section
  {\xdef\currentsectiontocentry{}}{}{}

ändern, aber auch dann gilt der Hinweis, dass sich diese Anweisungen wegen der asynchronen Ausgabe nicht für den Seitenstil nutzen lassen.

Permanenter link

beantwortet 02 Jun, 12:27

esdd's gravatar image

esdd
15.2k103954

Lass dir nicht von irgendwelchen Schlaubergern Bange mache. Man kann das mit Hilfe von nameref ganz einfach selbst basteln:

`\documentclass[headings=optiontotoc]{scrreprt}
\usepackage{nameref}
\newcounter{label}
\newcommand{\autolabel}{\stepcounter{label}\label{label\thelabel}}
\newcommand{\CurrentName}{\nameref{label\thelabel}}
\begin{document}
\makeatletter
\newcommand{\CurrentTOCentry}{\@currenttocentry}
\makeatother
\chapter[tocentry=short,reference=long]{long}\autolabel
CurrentTOCentry: \CurrentTOCentry\\
CurrentName: \CurrentName
\section{Abschnitt}\autolabel
CurrentTOCentry: \CurrentTOCentry\\
CurrentName: \CurrentName
\subsection{Unterabschnitt}\autolabel
CurrentTOCentry: \CurrentTOCentry\\
CurrentName: \CurrentName

\chapter{Long}\autolabel
CurrentTOCentry: \CurrentTOCentry\\
CurrentName: \CurrentName
\end{document}`

Permanenter link

beantwortet 31 Mai, 05:48

user49915's gravatar image

user49915
362

bearbeitet 31 Mai, 05:53

Ich habe gesehen, es gibt übrigens auch eine Möglichkeit nameref zu verwenden, ohne die Titel einzeln zu labeln. Das wurde bei mir aber vom Ergebnis her, wie der 'Hack' mit dem Komabefehl. Daher ist vermutlich das mit dem autolabel ein ganz praktischer Trick (den man vermutlich noch in die Kommandos chapter, section reinnehmen könnte).

(31 Mai, 09:30) cis
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×118
×2

Frage gestellt: 31 Mai, 04:11

Frage wurde angeschaut: 516 Mal

Zuletzt aktualisiert: 16 Jun, 18:59