addtocontents

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


RicardoShillyShally
Forum-Anfänger
Forum-Anfänger
Beiträge: 27
Registriert: Sa 16. Jun 2018, 01:46

addtocontents

Beitrag von RicardoShillyShally »

Hallo,

ich würde gerne in meinem Dokument auf einer bestimmten Seite viele Einträge einfügen, die später im Inhaltsverzeichnis einen Eintrag generieren. Außerdem soll man auf eine bestimmte Seite springen, wenn man auf den Eintrag klickt. z.B.

\addcontentsline{toc}{section}{Überschrift}\section*{Überschrift}

Das funktioniert mit diesem Befehl soweit ganz gut. Nur springe ich auf die Seite, wo dieser Befehl auch sich befindet. Ich würde gerne den Befehl (\addcontentsline) auf Seite 1 schreiben aber er soll den Leser dann z.B. auf Seite 15 bringen, durch einen klick auf den Eintrag im Inhaltsverzeichnis.

Wofür das ganze?

Ich habe mit Latex eine Vorlage gebaut, um einen Bericht aus verschiedenen PDF´s zu generieren. Eine dieser PDF's hat ein eigenes Inhaltsverzeichnis, dass ich gerne in das Inhaltsverzeichnis von Latex einfügen will.

Für jeden Hinweis oder Lösungsvorschlag bin ich sehr dankbar.

verstehichnich

Re: addtocontents

Beitrag von verstehichnich »

RicardoShillyShally hat geschrieben:
Fr 1. Mai 2020, 01:58
Ich habe mit Latex eine Vorlage gebaut, um einen Bericht aus verschiedenen PDF´s zu generieren. Eine dieser PDF's hat ein eigenes Inhaltsverzeichnis, dass ich gerne in das Inhaltsverzeichnis von Latex einfügen will.
\includepdf von pdfpages bietet eine Option für Inhaltsverzeichniseinträge. Man kann sogar mehrere für dasselbe PDF erzeugen.

Ansonsten sei noch darauf hingewiesen, dass die KOMA-Script-Klassen einen Befehl \addsec bieten, mit dem man in einem Zug sowohl eine nicht nummerierte Überschrift als auch einen Inhaltsverzeichniseintrag erzeugen kann. Mit der aktuellen Version geht das alternativ auch per \section[nonumber=true]{…}, wenn man es vorher per Option headings aktiviert. Näheres ist der Anleitung zu entnehmen.

Ohne Minimalbeispiel kann ich nicht viel mehr dazu sagen, zumal ich aus der Beschreibung nicht klug wurde und das \addcontentsline nicht auf der Seite stehen soll, die es auch in das Inhaltsverzeichnis eintragen wird.

RicardoShillyShally
Forum-Anfänger
Forum-Anfänger
Beiträge: 27
Registriert: Sa 16. Jun 2018, 01:46

Re: addtocontents

Beitrag von RicardoShillyShally »

Danke für die Antwort.

Ich habe noch kein Minimalbeispiel, weil keins existiert und ich keine Lösung gefunden habe. Nochmal zu dem, was ich versuche:

Ich möchte einen Befehl auf einer beliebigen Seite setzen, der eine Section im Inhaltsverzeichnis einfügt mit einer definierten Seitenangabe.

Beispiel:

Mein Befehl ist auf Seite 1 des Dokuments und erzeugt eine Section im Inhaltsverzeichnis. Wenn man aber nun auf die Section im Inhaltsverzeichnis klickt, soll man auf Seite 15 springen. Natürlich soll auch die Seite 15 für die jeweilige Section im Inhaltsverzeichnis angezeigt werden.

Mein Problem, dass ich nicht gelöst bekomme:

Wenn ich die Section auf Seite 1 erzeuge, ist auch die Seite 1 im Inhaltsverzeichnis zu sehen. Es soll aber die Seite 15 erscheinen.

WasSollDas

Re: addtocontents

Beitrag von WasSollDas »

Ich halte das für ein XY-Problem. Warum soll der Eintrag auf Seite 1 erzeugt werden, aber Seite 15 anzeigen? Wenn du beispielsweise – so verstehe ich deine früheren Ausführungen – auf Seite 1 ein \includepdf für ein PDF mit 20 Seiten hast, dann kannst du über Option addtotoc auch die 15. Seite dieses PDFs ins Inhaltsverzeichnis eintragen lassen. Wenn du uns aber nicht mit einem Minimalbeispiel verdeutlichst, was das soll, können wir nicht wirklich gute Hilfe leisten. Beispiel-PDFs mit mehreren Seiten zum Einbinden in so ein Beispiel sind im Paket mwe zu finden.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Re: addtocontents

Beitrag von u_fischer »

Du brauchst sowas wie
\addtocontents{toc}{%
      \protect\contentsline{section}{text}{15}{page.15}\protected@file@percent
    }%
Aber ohne Minimalbeispiel teste ich das jetzt nicht.

RicardoShillyShally
Forum-Anfänger
Forum-Anfänger
Beiträge: 27
Registriert: Sa 16. Jun 2018, 01:46

Re: addtocontents

Beitrag von RicardoShillyShally »

Ok hier ein Minimalbeispiel mit dem Lösungsvorschlag. Ich bekomme einen Fehler, wenn ich das kompiliere:

Fehlermeldung: ! You can't use a prefix with `the letter @'.<to be read again>@ ...line {section}{text}{15}{page.15}\protected @



\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{lipsum}

\title{Ein Testdokument}
\author{Otto Normalverbraucher}
\date{5. Januar 2004}
\begin{document}

\maketitle
\tableofcontents
\newpage
\section{Einleitung}
\lipsum

\addtocontents{toc}{%
\protect\contentsline{section}{Sonne}{15}{page.15}\protected@file@percent
}%

\end{document}

Das Kapitel Sonne soll im Inhaltsverzeichnis auftauchen und soll den Leser auf die Seite 15 bringen. Ich weiß in diesem Dokument gibt es nur 2 Seiten aber es geht um die Machbarkeit.

WasSollDas

Re: addtocontents

Beitrag von WasSollDas »

Man kann in einem Dokument mit weniger als 15 Seiten nicht auf Seite 15 verlinken, weil dann der Seitenanker für Seite 15 nicht existiert.

Und zum Umgang mit Befehlen mit @ im Namen muss man wohl nichts mehr sagen. Das sollte allgemein bekannt sein und ist leicht zu finden. Um es dir noch leichter zu machen, sei auf das Stichwort \makeatletter und \makeatother hingewiesen.

Warum musst du uns – und das schließt dich ein – das Leben so schwer machen, statt einfach einmal Butter an die Fische zu geben …

Wenn man den Chirurgen die Augen verbindet, darf man sich nicht wundern, wenn die Narbe hässlich wird.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Re: addtocontents

Beitrag von u_fischer »

WasSollDas hat geschrieben:
So 3. Mai 2020, 08:19
Und zum Umgang mit Befehlen mit @ im Namen muss man wohl nichts mehr sagen. Das sollte allgemein bekannt sein und ist leicht zu finden. Um es dir noch leichter zu machen, sei auf das Stichwort \makeatletter und \makeatother hingewiesen.
catcodes sind ein kompliziertes Konzept in TeX und nicht allgemein bekannt. Du wurdest nicht mit dieser Kenntnis geboren, irgendwann hat es dir jemand erklärt. Wenn du mit dieser Hilfe das Thema gemeistert hast, wäre es viel besser, wenn du deine Kenntnisse verständlich weitergeben würdest, statt hinter einem albernen Pseudonym versteckt, Leute niederzumachen, die zum ersten Mal darauf stoßen.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Re: addtocontents

Beitrag von u_fischer »

RicardoShillyShally hat geschrieben:
So 3. Mai 2020, 00:36
Ok hier ein Minimalbeispiel mit dem Lösungsvorschlag. Ich bekomme einen Fehler, wenn ich das kompiliere:

Fehlermeldung: ! You can't use a prefix with `the letter @'.<to be read again>@ ...line {section}{text}{15}{page.15}\protected @
Der Befehl `\protected@file@percent` enthält ein @, daher muss man zuerst @ zu einem Buchstaben machen mit dem Befehl `\makeatletter` (make at letter). Man kann den Befehl aber auch einfach weglassen - er ist nur von Bedeutung in speziell formatierten Inhaltsverzeichnissen, wo alle Einträge in einer Zeile sind. Da unterdrückt er überflüssige Leerzeichen.

Außerdem musst du hyperref laden, sonst macht das page.15 keinen Sinn (und erzeugt eine Ausgabe).

Hier der vollständige Code, aber grundsätzlich ist es sicherlich sinnvoller, die includepdf-Optionen zu verwenden. Dann musst du nicht manuell die Seitennummern eingeben.
\documentclass{scrartcl}

\usepackage[utf8]{inputenc} %in aktuellem LaTeX unnötig.
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{lipsum}
\usepackage{hyperref}
\title{Ein Testdokument}
\author{Otto Normalverbraucher}
\date{5. Januar 2004}
\begin{document}

\maketitle
\tableofcontents
\newpage
\section{Einleitung}
\lipsum \lipsum

\makeatletter
\addtocontents{toc}{%
\protect\contentsline{section}{Sonne}{3}{page.3}\protected@file@percent
}%
\makeatother

\end{document}

WasSollDas

Re: addtocontents

Beitrag von WasSollDas »

u_fischer hat geschrieben:
So 3. Mai 2020, 11:51
Du wurdest nicht mit dieser Kenntnis geboren, irgendwann hat es dir jemand erklärt.
Genau. Weil ich irgendwann Informationen aus Anleitungen, Büchern und auch durch Lesen von Foren wie diesem gewonnen habe und weil ich mir nicht zu fein war, bei Fragen auch wirklich zu erklären, was das soll und Hinweisen in Antworten beispielsweise auf Anleitungen nachgegangen bin.
u_fischer hat geschrieben:
So 3. Mai 2020, 11:51
wenn du deine Kenntnisse verständlich weitergeben würdest,
Habe ich. Ich habe allerdings zu etwas Eigeninitiative angeregt. Und mit den Stichworten ist das auch wirklich nicht schwer zu finden. Beispielsweise wird das hier im Wiki aber auch auf TeXwelt was einer der ersten (wenn nicht der erste) Treffer bei Google&Co ist, ausführlich genug erklärt.

Ich bin auch immer gern bereit, an einem vernünftigen Minimalbeispiel vollständige Lösungen zu zeigen. Wer aber trotz expliziter Nachfrage und Hinweisen auf pdfpages und dessen Option addtotoc noch immer kein Beispiel liefert und auf einem eigenartigen Lösungsweg besteht, der muss auch damit leben, dass er von mir eher allgemeine Hinweise erhält. Ich halte nämlich nichts davon, ausführliche Anleitungen zu Wegen zu liefern, die ich von vornherein für einen Irrweg halte. Das schlimme an solchen Wegen ist nämlich, dass sie sich verselbständigen und verbreiten. Erst recht, wenn sie in einem Forum wie diesem allzu schön vorgeführt werden.

Aber wenn dir meine Pseudonyme nicht gefallen. Kein Problem. Ich werde die nächsten Wochen einfach nichts mehr posten und überlasse dir das Feld.

Antworten