goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Inkompatibilität zwischen tocstyle und KOMA-Script

 

senf_topf
Forum-Newbie
Forum-Newbie

Beiträge: 3
Anmeldedatum: 06.12.17
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 06.12.2017, 08:39     Titel: Inkompatibilität zwischen tocstyle und KOMA-Script
  Antworten mit Zitat      
Hallo,

ich werde demnächst mit meiner Bachelorarbeit beginnen und nutze daher meinen zu schreibenden Praktikumsbericht, um mich in LaTeX einzuarbeiten, bin also noch ein Neuling.
Mein Prof fordert, dass es am Ende des Dokuments vor dem Anhang ein Anhangsverzeichnis gibt, welche alle Inhalte des Anhangs auflistet, so auch die Inhalte der CD. Dafür nutze ich den im Minimalbeispiel unter "%Für separates Anhangsverzeichnis" aufgezeigten Code, den ich von hier bezogen habe.

Wenn ein neues chapter im Anhang hinzugefügt wird, wird es in das Anhangsverzeichnis eingebunden und im Inhaltsverzeichnis unterdrückt. Das funktioniert soweit so gut.
Möchte ich nun allerdings dem Anhangsverzeichnis eine Zeile für ein auf der CD liegenden Anhang hinzufügen, so möchte ich dafür keine leere Seite mit einer Überschrift erstellen, sondern "händisch" eine Zeile hinzufügen, welche entweder keine Seitennummer besitzt oder anstatt der Seitennummer ein "CD-ROM" eingefügt ist.
Dies habe ich mittels tocstyle und cftaddtitleline hinbekommen. Problem ist nur, dass sich dieses mit KOMA-Script nicht verträgt und dann listof=totoc keine Wirkung mehr zeigt, sodass mein Abbildungsverzeichnis nicht im Inhalt aufgeführt wird.

addcontentsline funktioniert in der Hinsicht besser, allerdings kann ich damit nicht die Seitennummern unterdrücken.

Daher nutze ich derzeit addtocontents, was allerdings nicht nur einen Eintrag im Abbildungsverzeichnis sondern auch im globalen Inhaltsverzeichnis erstellt. Um dies zu umgehen, ändere ich nach dem ersten Kompiliervorgang die *.toc Datei so um, dass händisch hinzugefügte Zeilen dem Format eines chapters entsprechen, damit bekomme ich sowohl Inhalts- als auch Abbildungsverzeichnis nach Vorgaben.

Nun meine Frage: Ist eine Lösung der Inkompatibilität zwischen KOMA und tocstyle bekannt oder gibt es eine Möglichkeit, mittels addcontentsline die Seitennummern zu unterdrücken bzw. auf "CD-ROM" zu ändern? Am schönsten wäre natürlich die tatsächliche Erstellung eines "unsichtbaren" chapter, da ich dieses dann auch aus dem Text heraus referenzieren kann.
Für Hilfe wäre ich sehr dankbar, da meine derzeitige Lösungsvariante alles andere als sauber und komfortabel ist.

Fehler im Minimalbeispiel wie das falsche Darstellen von Umlauten und das List of figures auf Englisch erscheint bitte nicht beachten, in meinem Hauptdokument sind diese Fehler nicht vorhanden und müssen daher auch nicht betrachtet werden.
Hier das Minimalbeispiel mit addcontents:

Code • Öffne in Overleaf
%KOMA-Script Dokumentenklasse scrbook verwendet
\documentclass[pdftex,a4paper,12pt,halfparskip,listof=totoc,bibliography=totoc]{scrreprt}

%Paket zum Übersetzen, babel erkennt Sprache
\usepackage[ngerman,english]{babel}

%Eingabe von Umlauten
\usepackage[latin1]{inputenc}

%Verwenden von T1 Fonts und lmodern zum beheben der verpixelten Schrift
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}

%Ändern der Seitenränder
\usepackage[left=3.5cm,right=3cm,top=2cm,bottom=2cm]{geometry}

%Links aus Inhaltsverzeichnis
\usepackage[colorlinks,
pdfpagelabels,
pdfstartview = FitH,
bookmarksopen = true,
bookmarksnumbered = true,
linkcolor = black,
plainpages = false,
hypertexnames = false,
citecolor = black
] {hyperref}

%Abkürzungsverzeichnis
\usepackage{acronym}

%Für separates Anhangsverzeichnis
%normales Ihaverz einfügen mit \maintoc
%im Anhang erst Anhang ankündigen mit \appendix und dann Anhangsverzeichnis einfügen mit \appendixtoc
\usepackage{tocstyle}
\makeatletter% --> De-TeX-FAQ
\newcommand*{\maintoc}{% Hauptinhaltsverzeichnis
  \begingroup
    \@fileswfalse% kein neues Verzeichnis öffnen
    \renewcommand*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
      \value{tocdepth}=-10000 % lokal tocdepth auf sehr kleinen Wert setzen
    }%
    \tableofcontents% Verzeichnis ausgeben
  \endgroup
}
\newcommand*{\appendixtoc}{% Anhangsinhaltsverzeichnis
  \begingroup
    \edef\@alltocdepth{\the\value{tocdepth}}% tocdepth merken
    \setcounter{tocdepth}{-10000}% Keine Verzeichniseinträge
    \renewcommand*{\contentsname}{% Verzeichnisname ändern
      Anhangsverzeichnis}%
    \renewcommand*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
      \setcounter{tocdepth}{\@alltocdepth}% tocdepth wiederherstellen
    }%
    \tableofcontents% Verzeichnis ausgeben
    \setcounter{tocdepth}{\@alltocdepth}% tocdepth wiederherstellen
  \endgroup
}
\newcommand*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
}
\g@addto@macro\appendix{% \appendix erweitern
  \if@openright\cleardoublepage\else\clearpage\fi% Neue Seite
  \addcontentsline{toc}{chapter}{\appendixname}% Eintrag ins Hauptverzeichnis
  \addtocontents{toc}{\protect\appendixattoc}% Trennanweisung in die toc-Datei
}
\makeatother


\begin{document}
%Inhalts- und Abbildungsverzeichnis
\pagenumbering{roman}
\maintoc

\addchap{Abkürzungsverzeichnis}
\begin{acronym}[PUE]
   \acro{Abk}{Abkürzung1}
   \acro{Abk2}{Abkürzung2}
\end{acronym}

\listoffigures

\pagenumbering{arabic}
\chapter{Einleitung}
Ein Text für die Einleitung mit erster \ac{Abk}.
\chapter{Zweites Kapitel}
Ein zweites Kapitel mit zweiter \ac{Abk2}
\begin{figure}[h]
   \centering
   \caption{picture}
   \label{fig:picture}
\end{figure}
\chapter{Fazit}
Ein Fazit.

%Anhangsverzeichnis
\appendix
\appendixtoc
\addtocontents{toc}{%
 \protect\noindent A \ Messwerte (auf CD)\protect\par
}
\addtocontents{toc}{%
 \protect\noindent B \ Literatur und Datenblätter (auf CD)\protect\par
}

\setcounter{chapter}{2}
\chapter{Verzeichnisbaum CD}
Hier kommt der Verzeichnisbaum der CD.


\end{document}
 
 
Private Nachricht senden Benutzer-Profile anzeigen

esdd
Forum-Meister
Forum-Meister

Beiträge: 2237
Anmeldedatum: 07.02.10
Wohnort: Stutensee
Version: MiKTeX 2.9
     Beitrag Verfasst am: 06.12.2017, 09:45     Titel:
  Antworten mit Zitat      
Der von Dir verlinkte Thread auf komascript.de ist geschlossen, weil der Vorschlag mit dem Paket tocstyle veraltet ist. Das Paket wird nicht mehr weiter entwickelt und wird deshalb den Alpha-Status nie verlassen. Trotzdem sind KOMA-Script und tocstyle kompatibel.

Allerdings stammt der von Dir erwähnte Befehl \cftaddtitleline auch nicht aus diesem Paket. Insofern ist auch der Titel Deiner Frage falsch - Du meinst vermutlich Inkompatibilität KOMA-Script und Paket tocloft. Die beiden sind tatsächlich inkompatibel.

Aktuell ist der Vorschlag von Markus Kohm unter Mit einem aktuellen KOMA-Script geht alles viel einfacher, der die Möglichkeiten des ohnehin geladenen KOMA-Script Pakets tocbasic nutzt. Falls Du Mitglied bei dante bist, findest Du zusätzliche Erklärungen in einem Artikel von Markus in der DTK 3/2017.

Im folgenden Beispiel habe ich die für das Problem nicht relevanten Pakete und Einstellungen weggelassen. Achte darauf, dass Du keine veralteten KOMA-Script Optionen setzt, da ansonsten automatisch in einen Kompatibilitätsmodus gewechselt wird. Eine entsprechende Warnung solltest Du bei Deinem Beispiel erhalten haben.

Code • Öffne in Overleaf
\documentclass[pdftex,a4paper,12pt,
  parskip=half,% aktuelle Syntax verwenden!!
  listof=totoc,bibliography=totoc,
  twoside=false% einseitig
  ]{scrbook}% um \frontmatter und \mainmatter nutzen zu können

\usepackage[english,main=ngerman]{babel}
\usepackage[utf8]{inputenc}% Overleaf nutzt utf8
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{xpatch}% zum patchen von \appendix

\usepackage[colorlinks,hidelinks]{hyperref}% in der Regel als letztes Paket laden
\usepackage{bookmark}% verbessert noch den Umgang mit Lesezeichen

% basierend auf https://komascript.de/comment/5578#comment-5578
\DeclareNewTOC[%
  owner=\jobname,
  listname={Inhalt des Anhangs},% Titel des Verzeichnisses
]{atoc}% Dateierweiterung (a=appendix, toc=table of contents)
\DeclareNewTOC[%
  listname={Abbildungen im Anhang},% Titel des Verzeichnisses
]{alof}% Dateierweiterung (a=appendix, lof=list of figures)
\DeclareNewTOC[%
  listname={Tabellen im Anhang},% Titel des Verzeichnisses
]{alot}% Dateierweiterung (a=appendix, lot=list of tables)

\DeclareTOCStyleEntry[
  level=\chaptertocdepth,
  indent=0pt,
  numwidth=1.5em,
  pagenumberbox=\cd
]{chapter}{cd}
\newcommand\cd[1]{{%
  \usekomafont{chapterentry}\usekomafont{chapterentrypagenumber}
  CD-ROM%
}}

\makeatletter
\newcommand\CDEintragImTOC[2]{%
  \refstepcounter{chapter}\label{app:#1}%
  \addxcontentsline{\ext@toc}{cd}[\thechapter]{#2}
}
\newcommand*{\useappendixtocs}{%
  \renewcommand*{\ext@toc}{atoc}%
  \scr@ifundefinedorrelax{hypersetup}{}{% damit es auch ohne hyperref funktioniert
    \hypersetup{bookmarkstype=atoc}%
  }%
  \renewcommand*{\ext@figure}{alof}%
  \renewcommand*{\ext@table}{alot}%
}
\newcommand*{\usestandardtocs}{%
  \renewcommand*{\ext@toc}{toc}%
  \scr@ifundefinedorrelax{hypersetup}{}{% damit es auch ohne hyperref funktioniert
    \hypersetup{bookmarkstype=toc}%
  }%
  \renewcommand*{\ext@figure}{lof}%
  \renewcommand*{\ext@table}{lot}%
}
\ifundefinedorrelax{ext@toc}{%
  \newcommand*{\ext@toc}{toc}
  \renewcommand{\addtocentrydefault}[3]{%
    \expandafter\tocbasic@addxcontentsline\expandafter{\ext@toc}{#1}{#2}{#3}%
  }
}{}
\makeatother

\xapptocmd\appendix{%
  \addpart{\appendixname}
  \useappendixtocs
  \listofatocs
  %\listofalofs
  %\listofalots
}{}{}

\begin{document
}
\frontmatter
\tableofcontents
\listoffigures

\mainmatter
\chapter{Einleitung}
Ein Text für die Einleitung mit erster
\chapter{Zweites Kapitel}
Ein zweites Kapitel mit zweiter
\begin{figure}[h]
   \centering
   \caption{picture}
   \label{fig:picture}
\end{figure}
\chapter{Fazit}
Ein Fazit.
\appendix
\CDEintragImTOC{mess}{Messwerte}
\CDEintragImTOC{lit}{Literatur und Datenblätter}
\chapter{Verzeichnisbaum CD}
Hier kommt der Verzeichnisbaum der CD.
\end{document}


Edit: für CD-ROM Eintrag pagenumberbox statt pagenumberformat anpassen

Zuletzt bearbeitet von esdd am 06.12.2017, 22:21, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen

senf_topf
Forum-Newbie
Forum-Newbie

Beiträge: 3
Anmeldedatum: 06.12.17
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 06.12.2017, 14:39     Titel:
  Antworten mit Zitat      
Vielen vielen Dank für deine Mühen!

In der Überschrift habe ich mich tatsächlich leider vertan und meinte tocloft. Sollte eine Änderung des Titels möglich sein, dann werde ich es ändern.

Die Warnungen (insbes. halfparskip) sind mir aufgefallen, allerdings hatte ich diese erst einmal ignoriert da ich sonst keine Probleme mit dem Dokument hatte. Aber danke für die Anpassung dieser!

Nochmal ein riesiges Dankeschön für deine Mühen, es ist so ziemlich exakt das was ich wollte. Leider verstehe ich einige, aber nicht alle Zeilen. Zwei Fragen haben sich nämlich aufgetan:
1. Warum wird "Anhang" im Inhaltsverzeichnis in einer größeren Schriftgröße dargestellt, als die restlichen Inhaltspunkte?
2. Wie kann ich die Punkte zwischen Inhaltspunkt und Seitenzahl einfügen?
Private Nachricht senden Benutzer-Profile anzeigen

esdd
Forum-Meister
Forum-Meister

Beiträge: 2237
Anmeldedatum: 07.02.10
Wohnort: Stutensee
Version: MiKTeX 2.9
     Beitrag Verfasst am: 06.12.2017, 15:14     Titel:
  Antworten mit Zitat      
senf_topf hat Folgendes geschrieben:
Eine Frage hat sich nämlich aufgetan: Warum wird "Anhang" im Inhaltsverzeichnis in einer größeren Schriftgröße dargestellt, als die restlichen Inhaltspunkte? Was müsste hierfür geändert werden?


In dem Beispiel wird mit \part eine Seite mit der Überschrift Anhang auf einer eigenen Seite gesetzt. Deren Eintrag ist im Inhaltsverzeichnis dann anders formatiert. Wenn Du die Seite nicht möchtest/brauchst, dann kannst Du vor \useappendixtocs noch einen Eintrag in das Hauptinhaltsverzeichnis vornehmen, der genauso wie die Kapiteleinträge formatiert ist. Das relevante Codestück wäre:

Code • Öffne in Overleaf
\xapptocmd\appendix{%
  \cleardoublepage
  \addchaptertocentry{}{\appendixname}%
  \useappendixtocs
  \listofatocs
  %\listofalofs
  %\listofalots
}{}{}
Private Nachricht senden Benutzer-Profile anzeigen

esdd
Forum-Meister
Forum-Meister

Beiträge: 2237
Anmeldedatum: 07.02.10
Wohnort: Stutensee
Version: MiKTeX 2.9
     Beitrag Verfasst am: 06.12.2017, 22:18     Titel:
  Antworten mit Zitat      
Die zweite Frage habe ich vorhin gar nicht gesehen. Die Füllpunkte auch für Kapiteleinträge bekommst Du mit einer der beiden Klassenoptionen chapterentrydots bzw. toc=chapterentrywithdots.

Allerdings zeigt sich dann, dass CD-ROM breiter ist als der für Seitenzahlen vorgesehene Platz. Deshalb ist es sinnvoller der Eintrag dieser speziellen "Seitenzahl" über die Option pagenumberbox statt pagenumberformat vorzunehmen. Also:

Code • Öffne in Overleaf
\DeclareTOCStyleEntry[
  level=\chaptertocdepth,
  indent=0pt,
  numwidth=1.5em,
  pagenumberbox=\cd
]{chapter}{cd}
\newcommand\cd[1]{{%
  \usekomafont{chapterentry}\usekomafont{chapterentrypagenumber}
  CD-ROM%
}}


Oder nochmal als vollständiges Beispiel mit beiden Änderungen:

Code • Öffne in Overleaf
\documentclass[pdftex,a4paper,12pt,
  parskip=half,% aktuelle Syntax verwenden!!
  listof=totoc,bibliography=totoc,
  twoside=false,% einseitig
  chapterentrydots% Füllpunkte auch für Kapiteleinträge
  ]{scrbook}% um \frontmatter und \mainmatter nutzen zu können

\usepackage[english,main=ngerman]{babel}
\usepackage[utf8]{inputenc}% Overleaf nutzt utf8
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{xpatch}% zum patchen von \appendix

\usepackage[colorlinks,hidelinks]{hyperref}% in der Regel als letztes Paket laden
\usepackage{bookmark}% verbessert noch den Umgang mit Lesezeichen

% basierend auf https://komascript.de/comment/5578#comment-5578
\DeclareNewTOC[%
  owner=\jobname,
  listname={Inhalt des Anhangs},% Titel des Verzeichnisses
]{atoc}% Dateierweiterung (a=appendix, toc=table of contents)
\DeclareNewTOC[%
  listname={Abbildungen im Anhang},% Titel des Verzeichnisses
]{alof}% Dateierweiterung (a=appendix, lof=list of figures)
\DeclareNewTOC[%
  listname={Tabellen im Anhang},% Titel des Verzeichnisses
]{alot}% Dateierweiterung (a=appendix, lot=list of tables)

\DeclareTOCStyleEntry[
  level=\chaptertocdepth,
  indent=0pt,
  numwidth=1.5em,
  pagenumberbox=\cd
]{chapter}{cd}
\newcommand\cd[1]{{%
  \usekomafont{chapterentry}\usekomafont{chapterentrypagenumber}
  CD-ROM%
}}

\makeatletter
\newcommand\CDEintragImTOC[2]{%
  \refstepcounter{chapter}\label{app:#1}%
  \addxcontentsline{\ext@toc}{cd}[\thechapter]{#2}
}
\newcommand*{\useappendixtocs}{%
  \renewcommand*{\ext@toc}{atoc}%
  \scr@ifundefinedorrelax{hypersetup}{}{% damit es auch ohne hyperref funktioniert
    \hypersetup{bookmarkstype=atoc}%
  }%
  \renewcommand*{\ext@figure}{alof}%
  \renewcommand*{\ext@table}{alot}%
}
\newcommand*{\usestandardtocs}{%
  \renewcommand*{\ext@toc}{toc}%
  \scr@ifundefinedorrelax{hypersetup}{}{% damit es auch ohne hyperref funktioniert
    \hypersetup{bookmarkstype=toc}%
  }%
  \renewcommand*{\ext@figure}{lof}%
  \renewcommand*{\ext@table}{lot}%
}
\ifundefinedorrelax{ext@toc}{%
  \newcommand*{\ext@toc}{toc}
  \renewcommand{\addtocentrydefault}[3]{%
    \expandafter\tocbasic@addxcontentsline\expandafter{\ext@toc}{#1}{#2}{#3}%
  }
}{}
\makeatother

\xapptocmd\appendix{%
  \cleardoublepage
  \addchaptertocentry{}{\appendixname}%
  \useappendixtocs
  \listofatocs
  %\listofalofs
  %\listofalots
}{}{}

\begin{document
}
\frontmatter
\tableofcontents
\listoffigures

\mainmatter
\chapter{Einleitung}
Ein Text für die Einleitung mit erster
\chapter{Zweites Kapitel}
Ein zweites Kapitel mit zweiter
\begin{figure}[h]
   \centering
   \caption{picture}
   \label{fig:picture}
\end{figure}
\chapter{Fazit}
Ein Fazit.
\appendix
\CDEintragImTOC{mess}{Messwerte}
\CDEintragImTOC{lit}{Literatur und Datenblätter}
\chapter{Verzeichnisbaum CD}
Hier kommt der Verzeichnisbaum der CD.
\end{document}
Private Nachricht senden Benutzer-Profile anzeigen

senf_topf
Forum-Newbie
Forum-Newbie

Beiträge: 3
Anmeldedatum: 06.12.17
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 07.12.2017, 08:44     Titel:
  Antworten mit Zitat      
Ich bin wirklich begeistert von deiner Hilfsbereitschaft. Surprised
Durch die kleinen Änderungen wird mir dein Code jetzt auch um einiges klarer.

Jetzt ist es wirklich exakt so wie ich es benötige, vielen Dank nochmal!
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2017 goLaTeX.de