TeXwelt wurde neu installiert. Es funktionieren noch nicht alle Features und auch an den deutschsprachigen Formulierungen wird verbessert. Danke für eure Geduld.

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, 10:11

cis's gravatar image

cis
9.3k21214372
Akzeptiert-Rate: 29%

bearbeitet 31 Mai, 10: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, 11: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.

(01 Jun, 01: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.

(01 Jun, 01: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, 13: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.

(17 Jun, 00: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, 18:27

esdd's gravatar image

esdd
15.2k133954
Akzeptiert-Rate: 62%

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, 11:48

user49915's gravatar image

user49915
362
Akzeptiert-Rate: 33%

bearbeitet 31 Mai, 11: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, 15:30) cis
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×118
×2

gestellte Frage: 31 Mai, 10:11

Frage wurde gesehen: 868 Mal

zuletzt geändert: 17 Jun, 00:59