goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


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


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Mehrere verschachtelte Inhaltsverzeichnisse

 

MoonKid
Forum-Meister
Forum-Meister

Beiträge: 684
Anmeldedatum: 30.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2017, 12:08     Titel: Mehrere verschachtelte Inhaltsverzeichnisse
  Antworten mit Zitat      
Der unten stehende Code basiert auf einer Anleitung von Markus Kohm, wie man für den Anhang ein eigenes Inhaltsverzeichnis anlegen kann. Es ist schon länger her und ich frage mich daher auch, ob der code noch aktuell ist, oder ob es mitlerweile elegantere Lösungen dafür gibt. Interessanterweise spuckt das Paket auf CTANtocstyle Paket immer noch eine ALPHA-Warnung aus.

Ich habe es (ohne Erfolg) etwas erweitert: Ich möchte drei Inhaltsverzeichnisse (IV), wobei zwei auch noch verschachtelt sind.
  • klassisches IV des Hauptdokuments, wobei für "Anhang" dort nur ein Eintrag auftaucht.
  • IV des Anhangs zu Beginn des Anhangs
  • Ein Abschnitt (nicht jeder!) des Anhangs bekommt nochmal ein eigenes IV. Dieser Abschnitt taucht im IV des Anhangs nur einmal auf und dessen Unterpunkte aber nicht. Die Unterpunkte sind hier in diesem dritten IV extra aufgeführt.


Letzteres ist eine Art Studienprotokoll oder -planung. D.h. das Dokument zur ursprünglichen Projektplanung wird (bis auf Seitenzahlen) unverändert in den Anhang des Projektberichts übernommen.

Der Code:
Code • Öffne in Overleaf

%% ------------------------------------------------------------------
%% | Beispiel für ein mehrere (verschachtelte) Inhaltsverzeichnisse |
%% | XeLaTeX                                                        |
%% basiert auf LPPL-lizensierten Beispielcode: <https://komascript.de/comment/3447#comment-3447>
%% ------------------------------------------------------------------

%%% -- Preamble --
\documentclass[man,
               donotrepeattitle
] % \title nicht im Inhaltsverzeichnis
               {apa6}

\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}

%
\usepackage{hyperref} % \AfterLastShipout

% Workaround damit \nameref mit apa6 wieder funktioniert
% ein bekannter APA6-Bug
% apa6-maintainer ist informiert; bisher ohne Reaktion
\makeatletter
\g@addto@macro{\appendix}{%
    \let\apasection\section
    \long\def\section#1{\apasection{#1}\def\@currentlabelname{#1}}
}
\makeatother

% Sprache
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}

% deutsches APA
\DeclareLanguageMapping{german}{german-apa}

%%% -- Code fürs Anhangsverzeichnis --
%%% der folgende Code stammt nicht von mir selbst
%%% direkter Urheber ist unbekannt
\usepackage{tocstyle}

\makeatletter
% Die folgende Anweisung wird vermutlich irgendwann in scrlfile.sty eingebaut.
% Bis dahin ist es notwendig, sie selbst zu definieren, damit man innerhalb
% von \BeforeClosingMainAux \addtocontents verwenden kann:
\providecommand{\protected@immediate@write}[3]{%
  \begingroup
    \let\thepage\relax
    #2%
    \let\protect\@unexpandable@protect
    \edef\reserved@a{\immediate\write#1{#3}}%
    \reserved@a
  \endgroup
  \if@nobreak\ifvmode\nobreak\fi\fi
}
 
% Die folgende Umgebung wird verwendet, um innerhalb der toc-Datei einzelne
% Bereiche ein- und ausschalten zu können. In die toc-Datei wird die Umgebung
% dabei jeweils als \begin{tocconditional}{BEREICH}...\end{tocconditional}
% eingefügt.
\newenvironment*{tocconditional}[1]{%
  \expandafter\ifx\csname if@toccond@#1\expandafter\endcsname
                  \csname iftrue\endcsname
  \else
    \value{tocdepth}=-10000\relax
  \fi
  \typeout{tocdepth in `#1': \the\c@tocdepth}%
}{%
}
 
% Gleich nach dem Öffnen der toc-Datei beginnen wir den Haupt-Bereich "main":
\AtBeginDocument{%
  \addtocontents{toc}{\string\begin{tocconditional}{main}}
}
% Und der letzte Bereich endet am Ende der toc-Datei.
\AfterLastShipout {%
  \begingroup
    \let\protected@write\protected@immediate@write
    \addtocontents{toc}{\string\end{tocconditional}}%
  \endgroup
}
 
% Hier können nun neue Bereiche definiert (wie man das
% macht zeigen wir gleich im Anschluss) ...
\newcommand*{\newtocconditional}[2][false]{%
  \expandafter\newif\csname if@toccond@#2\endcsname
  \csname @toccond@#2#1\endcsname
}
% ... und ein- oder ausgeschaltet werden.
% (Beispiele für die Verwendung von \settocconditional sind
% weiter unten bei der Definition von \appendixtableofcontents
% zu finden.)
\newcommand*{\settocconditional}[2]{%
  \csname @toccond@#1#2\endcsname
}
 
% Neben dem (bereits aktivierten) Hauptbereich ...
\newtocconditional[true]{main}
% ... definieren wir noch einen (noch nicht aktivierten)
% Bereich für den Anhang.
\newtocconditional{appendix}
 
% Mit dem Anhang geben wir einerseits das Anhangsverzeichnis aus,
% andererseits beenden wir den aktuellen Bereich in der toc-Datei und beginnen
% den neuen Bereich "appendix". Damit im Haupt-Inhaltsverzeichnis ein Eintrag
% für das Anhangsverzeichnis erscheint, verwenden wir \addchap und zwar noch
% bevor der letzte Bereich geschlossen wird. Wenn wir es ganz sicher machen
% wollten, müssten wir die auskommentierten Zeilen noch aktivieren. So
% verlassen wir uns einfach darauf, dass vor dem appendix-Bereich der
% main-Bereich lag.
\g@addto@macro\appendix{%
  \addtocontents{toc}{\string\end{tocconditional}^^J
    \string\begin{tocconditional}{appendix}}%
  \appendixtableofcontents
}
 
% Jetzt definieren wir das Anhangsverzeichnis selbst als Alias für die
% toc-Datei. Dabei wird aber der Hauptbereich "main" deaktiviert und der
% Anhangsbereich "appendix" aktiviert.
\newcommand*{\appendixtableofcontents}{%
  \showtoc[{ %
    \aliastoc{\tocstyleTOC}{toc}%
    \settocconditional{main}{false}%
    \settocconditional{appendix}{true}%
  }]{toc}%
}
 
% Auch wenn man einen Anhang normalerweise nicht beenden kann, so ist es
% ggf. erwünscht, dass Literaturverzeichnis, Index etc. zwar nach den Kapiteln
% des Anhangs kommen, aber dem Hauptverzeichnis zugeordnet werden sollen. Also
% benötigen wir eine Anweisung, um in der toc-Datei den aktuellen Bereich zu
% beenden und wieder einen Hauptbereich einzuschalten:
\newcommand*{\postappendix}{%
  \addtocontents{toc}{\string\end{tocconditional}^^J%
      \string\begin{tocconditional}{main}}%
  \clearpage
}

\newtocconditional{protocol}
\g@addto@macro\protocol{%
  \addtocontents{toc}{\string\end{tocconditional}^^J
    \string\begin{tocconditional}{protocol}}%
  \protocoltableofcontents
}
\newcommand*{\protocoltableofcontents}{%
  \showtoc[{ %
    \aliastoc{\tocstyleTOC}{toc}%
    \settocconditional{main}{false}%
    %\settocconditional{appendix}{false}%
    \settocconditional{protocol}{true}%
  }]{toc}%
}
\newcommand*{\postprotocol}{%
  \addtocontents{toc}{\string\end{tocconditional}^^J%
      %\string\begin{tocconditional}{main}}%
      }%
  \clearpage
}

%%% -- Titelseite --
\title{T}
\shorttitle{ST}
\author{A}

\begin{document}
\maketitle
%%% -- Inhaltsverzeichnis --
\tableofcontents

%%% -- Document --
\newpage
\section{Section}
\subsection{SubSection}
xxx \cite{Beispiel2010}

%%% -- Bibliography --
%newpage
%\defbibheading{all}{\section{Literaturverzeichnis}}
%printbibliography[heading=all]

%%% -- Anhangsverzeichnis --
\newpage
\section[Anhang]{Verzeichnis der Anhänge}
%% Sorgt dafür, dass alles mit A, B, C, etc. nummeriert wird
\renewcommand{\thesubsection}{Anhang~\Alph{subsection}}

\appendix

% Als Überschrift je Anhang muss \subsection verwendet werden
% da diese im Layout aber eigentlich Überschriften 1. Ebene
% also \section sein sollten, müssen diese auch so aussehen
% folgender Code überschreibt die apa6.cls Definition für \subsection
% entsprechend
\makeatletter
\renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
    {\b@level@two@skip}{\e@level@two@skip}%
    {\centering\normalfont\normalsize\bfseries}}
\makeatother

\newpage
\subsection{Erster Anhang}
xxx

\newpage
\protocol
\subsection{Protocol - Zweiter Anhang}
xxx
\postprotocol

\subsection{Dritter Anhang}
xxx

\postappendix
\end{document}
 

_________________

XeLaTeX, TeX Live, vim-latexsuite aus Siduction (Debian GNU/Linux unstable)

Zuletzt bearbeitet von MoonKid am 30.07.2017, 10:29, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2017, 09:31     Titel:
  Antworten mit Zitat      
Wenn Du schon vermutest, dass es von Markus ist, warum suchst Du dann nicht auf komascript.de danach? Im Original heißt es übrigens:
Zitat:
Code • Öffne in Overleaf
%
% appendixtoc.sty
% Copyright (c) Markus Kohm, 2013-2017
% See `appendixtocexample.tex' for license informations. Distribution without
% `appendixtocexample.tex' is forbidden!
% See <http://www.komascript.de/comment/3447#comment-3447> for more information.
Du dürftest mit Deinem Posting also gegen die Lizenz verstoßen haben.

Auf der angegebenen Seite gibt es auch diverse weitere Hinweise dazu, wie das ganze funktioniert. Es gibt dort auch alternative Lösungen bzw. Abwandlungen.

Es gibt auf komascript.de auch noch: Mit einem aktuellen KOMA-Script geht alles viel einfacher

Und was Paket auf CTANtocstyle anbelangt. Lies mal Abschnitt 1 der aktuellen Dokumentationtocstyle-Anleitung. Dann wird klar, dass das eher aus KOMA-Script entfernt werden dürfte als je offizieller Bestandteil zu werden.

MoonKid
Forum-Meister
Forum-Meister

Beiträge: 684
Anmeldedatum: 30.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2017, 10:40     Titel:
  Antworten mit Zitat      
Vielen Dank! Ich schau es mir an.

Das komascript-Forum akzeptiert derzeit scheinbar keine Registrierungen.
_________________

XeLaTeX, TeX Live, vim-latexsuite aus Siduction (Debian GNU/Linux unstable)
Private Nachricht senden Benutzer-Profile anzeigen

Stefan Kottwitz
Admin
Admin


Beiträge: 1934
Anmeldedatum: 07.07.08
Wohnort: Hamburg
Version: TeX Live 2016
     Beitrag Verfasst am: 30.07.2017, 12:31     Titel:
  Antworten mit Zitat      
Sind die Lizenz-Bedenken jetzt behoben, nachdem ganz oben ein Link auf Originalquellen eingefügt ist? Dort kann man ja die Lizenztexte lesen.

Stefan
Private Nachricht senden Benutzer-Profile anzeigen

MoonKid
Forum-Meister
Forum-Meister

Beiträge: 684
Anmeldedatum: 30.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2017, 13:27     Titel:
  Antworten mit Zitat      
Stefan Kottwitz hat Folgendes geschrieben:
Sind die Lizenz-Bedenken jetzt behoben

Die Frage wollte ich an Markus Kohm direkt stellen. Verständlicherweise ist es aber schwierig ihn direkt zu kontaktieren. Ihr habt da vielleicht interne Kanäle. Wink

Bei Lizenzen bin ich auch pingelig, aber im TeX-Umfeld bin ich mit den Details nicht so vertraut, wie im sonstigen FOSS-Feld.
_________________

XeLaTeX, TeX Live, vim-latexsuite aus Siduction (Debian GNU/Linux unstable)
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2017, 07:33     Titel:
  Antworten mit Zitat      
Das KOMA-Script-Forum akzeptiert Registrierungen. Man muss natürlich die Registrierungsbedingungen erfüllen. Wenn man eine Wartemeldung bekommt, muss man die schlicht befolgen. Habe ich gerade ausprobiert. Geht. Da das jetzt ein zweiter Account von mir ist, muss ich allerdings die Administratoren bitten, den wieder zu löschen. Kontaktaufnahme zu Administratoren ist einfach, schließlich gibt es ein Impressum. Kontaktaufnahme zu Markus ist ebenfalls einfach, schließlich steht seine E-Mail-Adresse in der KOMA-Script-Anleitung und ist auch via Google nicht schwer zu finden.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2017, 07:41     Titel:
  Antworten mit Zitat      
Anonymous hat Folgendes geschrieben:
Habe ich gerade ausprobiert. Geht. Da das jetzt ein zweiter Account von mir ist, muss ich allerdings die Administratoren bitten, den wieder zu löschen.

Und dafür habe ich jetzt gleich eine milde Form eines Rüffels kassiert: Ich solle nächstes Mal einfach fragen, ob es stimme, dass keine Anmeldungen möglich seien. Vor ein paar Monaten gab es wohl auch tatsächlich einmal ein Problem, das aber lange beseitigt sei – wie ich selbst gesehen habe.

Stefan Kottwitz hat Folgendes geschrieben:
Sind die Lizenz-Bedenken jetzt behoben, nachdem ganz oben ein Link auf Originalquellen eingefügt ist?

Ich habe einen Link auf die Seite mal an Markus geschickt.

MoonKid
Forum-Meister
Forum-Meister

Beiträge: 684
Anmeldedatum: 30.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2017, 12:54     Titel:
  Antworten mit Zitat      
Also die Reaktivierung des Passworts, sowie auch die Registrierung funktionieren bei mir nicht mit Firefox und Opera. Bei beidem kommt diese Meldung.


Daher muss ich meine Frage hier stellen. Hab jetzt das offizielle Beispiel versucht meinen Bedürfnissen anzupassen.
Es lässt sich bauen, aber Mangels Verständnis sieht es nicht so aus, wie erwartet. Auf die Kleinigkeiten will ich jetzt noch gar nicht eingehen. Gröbstes Problem ist die "Verschachtelung": Das "Protokol" ist Teil des Anhangs und taucht dort mitten drin auf. Das heißt die Textteile vor und nach dem Protokoll sind "Anhang" und sollten auch im Anhangsverzeichnis auftauchen. Der Teil nach dem Protokoll taucht derzeit aber im Protokoll-Verzeichnis auf.
Code • Öffne in Overleaf
%% ------------------------------------------------------------------
%% | Beispiel für ein multiple verschachtelte Verzeichnisse         |
%% | Inhalt, Appendix-Inhalt, Protokoll-Inhalt                      |
%% | basiert auf <https://komascript.de/comment/5578#comment-5578>  |
%% ------------------------------------------------------------------

%%% -- Preamble --
\documentclass[listof=totoc]{scrartcl}

\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}

\usepackage{mwe}% minimal working example

\usepackage{hyperref}%
\usepackage{bookmark}% verbessert „angeblich“ hyperref

\DeclareNewTOC[%
    owner=\jobname,
    listname={Inhalt des Anhangs},% Titel des Verzeichnisses
]{atoc}% Dateierweiterung (a=appendix, toc=table of contents)
\DeclareNewTOC[%
    listname={Inhalt des Protokols},
]{ptoc}% Dateierweiterung (p=protocol, top=table of contents)

\makeatletter
\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*{\useprotocoltocs}{%
  \renewcommand*{\ext@toc}{ptoc}%
  \scr@ifundefinedorrelax{hypersetup}{}{% damit es auch ohne hyperref funktioniert
    \hypersetup{bookmarkstype=ptoc}%
  }%
  %\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

\usepackage{xpatch
}
\xapptocmd\appendix{%
  \addpart{\appendixname}
  \useappendixtocs
}{}{}

\begin{document
}
% Hauptdokument
\tableofcontents
\blinddocument % #1
% Anhang
\appendix
\listofatocs
\blinddocument % #2
% Protokol im Anhang
% vorübergehend Abschalten??? \useappendixtocs
\useprotocoltocs
\section{Protocol}
\listofptocs
\blinddocument % #3
\section{Letzte Section im Protokol}
% mehr Anhang
% Abschalten??? \useprotocoltocs
% wieder Einschalten??? \useappendixtocs
\section{Section im Anhang (zweiter Teil)}
\blinddocument % #4

\usestandardtocs
\bookmarksetup{startatroot}% siehe bookmark-docu
\end{document}


Mein Wunsch wäre es, dass das Protokoll als einzelner Eintrag im Anhangsverzeichnis mit aufgeführt wird. so wie der Anhang selbst ja auch im Hauptinhaltsverzeichnis mit einem einzigen Eintrag aufgeführt wird.
_________________

XeLaTeX, TeX Live, vim-latexsuite aus Siduction (Debian GNU/Linux unstable)

Zuletzt bearbeitet von MoonKid am 04.08.2017, 16:02, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2017, 14:08     Titel: Off-Topic: Account-Reactivierung auf komascript.de
  Antworten mit Zitat      
Du hast offensichtlich versucht ein neues Passwort anzufordern und dabei einen Benutzernamen bzw. eine E-Mail-Adresse angegeben, die nicht registriert sind. Das kann natürlich dann nicht funktionieren. Wenn Du dagegen einen existierenden Benutzer angibst oder – was in dem Fall ggf. sinnvoll gewesen wäre – einen neuen anlegst, dann wird es auch funktionieren. Ggf. ist dann natürlich die angegebene Wartezeit zu beachten.

Das hat hier aber alles nichts verloren. Wenn Du Anmeldeprobleme hast, dann wende Dich entsprechend Markus provozierter Stellungnahme an die zuständigen Stellen.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2017, 14:12     Titel:
  Antworten mit Zitat      
Kannst Du bitte genau angeben, welche Überschrift in welchem Verzeichnis landen soll? Ich werde bisher aus Deinen Erklärungen nicht so ganz schlau.

Neues Thema eröffnen Neue Antwort erstellen Gehe zu Seite 1, 2  Weiter



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