Sectionnummer ohne abschl. Punkt bei appendixtoc.sty

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


MoonKid
Forum-Meister
Forum-Meister
Beiträge: 690
Registriert: Sa 30. Jun 2012, 11:56

Sectionnummer ohne abschl. Punkt bei appendixtoc.sty

Beitrag von MoonKid »

Ich möchte die Überschriftennummerierung aller Ebenen ohne abschließenden Punkt haben. Das funktioniert auch, solange ich das Anhangsverzeichnis mit appendixtoc.sty nicht nutze.

Im folgenden Code ist das Anhangsverzeichnis am Ende auskommentiert. In dem Fall ist kein Punkt hinter der Überschriftennummerierung.
Nutze ich das Verzeichnis (Aufruf \appendix) passiert irgendwas (?), was dieses Verhalten ändert. Es hat schon ewig gedauert diesen relevanten Code zu isolieren.

(Bitte beachten, dass mind. zwei Läufe notwendig sind und ggf. output-files gelöscht werden müssen.)

Der appendixtoc-Code stammt von Markus Kohm und ist in aktuellester Version hier zu finden.
http://www.komascript.de/comment/3447#comment-3447
%% ----- APPENDIXTOC file -----
\begin{filecontents}{appendixtoc.sty}
%
% appendixtoc.sty
% Copyright (c) Markus Kohm, 2013-2014
% See `appendixtocexample.tex' for license informations. Distribution without
% `appendixtocexample.tex' is forbidden!
% See <http://www.komascript.de/comment/3447#comment-3447> for more information.
\ProvidesPackage{appendixtoc}[2014/01/22 unsupported LaTeX2e package]
\RequirePackage{scrbase}[2013/12/19]% frühere Versionen unterstützen keine Sprachliste bei \providecaptionname
\RequirePackage{tocstyle}
\usetocstyle{KOMAlike}
% 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.
\BeforeClosingMainAux{%
  \addtocontents{toc}{\string\end{tocconditional}}%
}
 
% 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}{main}}%
  \begingroup
    \@ifundefined{tocbasic@listhead}{% Falls \tocbasic@listhead (wird von
                               % KOMA-Script-Klassen verwendet) nicht
                               % definiert ist
      \@ifundefined{chapter}{% und falls \chapter nicht definiert ist,
        \section*{\listofappendixname}% \section* verwenden
      }{% aber falls \chapter definiert ist,
        \chapter*{\listofappendixname}% \chapter* verwenden
      }%
      % und noch die Kolumnentitel passend setzen.
      \@mkboth{\csname MakeMarkcase\endcsname{\listofappendixname}}%
              {\csname MakeMarkcase\endcsname{\listofappendixname}}%
    }{% Falls \toc@heading definiert ist,
      \def\@currext{appendix}% initialisieren
      \tocbasic@listhead{\listofappendixname}% und verwenden
    }%
  \endgroup
  \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}}%
}
 
% Den Namen definieren:
\newcommand*{\listofappendixname}{Table of appendices}
\AtBeginDocument{%
  \providecaptionname{american,australien,british,canadian,english,UKenglish,USenglish}\listofappendixname{Table of appendices}%
  \providecaptionname{german,ngerman,austrian,naustrian,swissgerman,nswissgerman}\listofappendixname{Anhangsverzeichnis}%
}%
\end{filecontents}

%
\documentclass{scrartcl}

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

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

% Wir wollen das Anhangsverzeichnis im Inhaltsverzeichnis, also sorgen wir
% dafür, dass das Paket tocbasic geladen ist (auch, wenn keine
% KOMA-Script-Klasse verwendet wird). Das muss unbedingt _vor_ dem Laden von
% appendixtoc passieren!
\usepackage{tocbasic}
\usepackage{appendixtoc}
\setuptoc{appendix}{totoc}% dank tocbasic geht das jetzt so einfach

% -- Blindtext --
\usepackage{blindtext}

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

% -- Dokument --
\section{Ebene Eins}
\subsection{Ebene Zwei}
\subsubsection{Ebene Drei}
\blindtext

% -- Anhang(sverzeichnis) --
%\newpage\appendix
%\section{Erster Anhang}
%\postappendix
 
\end{document}
Vermutlich läuft hier irgendwas mit den tocstyles ab. Verstehe es aber zu wenig.
Die tocstyle doku hat leider zu wenig Beispiele. Daher weiß ich auch gar nicht, wie man diesen abschließenden Punkt ein- bzw. ausschalten könnte. Also ich weiß nicht wonach ich suchen muss.
Zuletzt geändert von MoonKid am Mi 22. Jan 2014, 20:08, insgesamt 1-mal geändert.
XeLaTeX, TeX Live, vim-latexsuite

Besserwisser

Beitrag von Besserwisser »

Da du eine KOMA-Script-Klasse verwendest, solltest du einmal Option numbers in der KOMA-Script-Anleitung nachlesen.

BTW: Statt den Code von appendixtoc.sty ständig in irgendwelchen Foren zu posten, wäre es besser, auf die Originalseite von Markus zu verlinken. Dann würde sich nämlich veralteter Code nicht viral weiter verbreiten, falls Markus am Originalcode Verbesserungen vornimmt …

Besserwisser

Beitrag von Besserwisser »

Besserwisser hat geschrieben:falls Markus am Originalcode Verbesserungen vornimmt …
Genau das ist auf einen Bugreport hin übrigens gerade geschehen …

MoonKid
Forum-Meister
Forum-Meister
Beiträge: 690
Registriert: Sa 30. Jun 2012, 11:56

Beitrag von MoonKid »

Besserwisser hat geschrieben:BTW: Statt den Code von appendixtoc.sty ständig in irgendwelchen Foren zu posten, wäre es besser, auf die Originalseite von Markus zu verlinken. Dann würde sich nämlich veralteter Code nicht viral weiter verbreiten, falls Markus am Originalcode Verbesserungen vornimmt …
Stimmt, sorry.
http://www.komascript.de/comment/3447#comment-3447
Ich werd den Code im Ursprungsposte gleich updaten und auch den Link einfügen. Und den besagten Blog solte ich auch mal abonnieren.

Ein simples
\KOMAoption{numbers}{noendperiod}
löst das Problem.

Vermutlich ändern der Code von Markus Kohm oder irgendwas innerhalb vom tocstyle-Packet diese Option? Oder der autodot-Mechanismus von KOMA wirkt aus irgendeinem Grund dann nicht mehr.

Kann man sich die Werte einer solchen Option irgendwie anzeigen lassen? Nur so aus Neugier würde ich gerne checken, ob der Wert tatsächlich geändert wird oder autodot einfach nur nicht mehr greift (warum auch immer).

Vielen Dank.
XeLaTeX, TeX Live, vim-latexsuite

Besserwisser

Beitrag von Besserwisser »

Gerade weil der autodot-Mechanismus wirkt, bekommst Du den Punkt. Dabei ist das Anhangsverzeichnis ganz unwichtig, entscheidend ist der Anhang selbst.

Man kann die Optionen nicht allgemein abfragen. Es gibt ja sogar Optionen, die gleichzeitig mehrere Werte haben können. Die Wirkung von Optionen kann man abfragen, muss dazu aber auf die internen Einstellungen zurück greifen, die von den Optionen beeinflusst werden.

Antworten