Class scr… Warning: Usage of package `minitoc' … not recommended
Beim Laden von Paket minitoc
geben die KOMA-Script-Klassen die Warnung:
Class scr… Warning: Usage of package `minitoc' together
(scr…) with a KOMA-Script class is not recommended.
(scr…) Nevertheless, using requested
(scr…) package `minitoc' on input line 10.
aus. Der Grund für diese Warnung liegt in erster Linie darin, dass das Paket eigentlich diverse Möglichkeiten von KOMA-Script beschädigt. Um das zu verhindern, muss KOMA-Script seinerseits min. das interne Macro \stc@sect
von minitoc
quasi "zurückdrehen". Darüber hinaus enthält die Definition von minitoc
(dort als Neudefinition von \@sect
) einige Bugs, beispielsweise ein fehlendes \expandafter
for \ifx\csname #1\endcsname\starsection
. Selbstverständlich hat der KOMA-Script-Autor schon vor über 10 Jahren auf diesen Fehler hingewiesen.
Da nicht sichergestellt werden kann, dass die interne Definition sich in minitoc
nicht irgendwann ändert, werden die Änderungen daran innerhalb von KOMA-Script nur ausgeführt, wenn die Definition aus minitoc
v62 vorgefunden wird. Anderenfalls versagt KOMA-Script mit seinem Rettungsversuch. Die Verwendung von minitoc
mit KOMA-Script-Klassen ist daher immer riskant.
Die minitoc
-Warnung W0024:
Package minitoc(hints) Warning: W0049
(minitoc(hints)) You have attempted to insert
(minitoc(hints)) empty secttocs.
beispielsweise bei Verwendung von KOMA-Script-Option listof=totoc
ist übrigens kein Grund für obige Warnung der KOMA-Script-Klassen. Um sie zu beseitigen wird in der \minitoc
-Anleitung die Verwendung von \mtcaddchapter
bzw. \mtcaddsection
nach \listoffigures
, \listoftables
etc. empfohlen. Man kann das bei KOMA-Script aber auch bereits in der Dokumentpräambel lösen:
\documentclass[listof=totoc]{scrartcl}
\AfterStartingTOC{%
\Iftocfeature{\csname @currext\endcsname}{totoc}
{\csname mtcaddsection\endcsname}% bei scrbook/scrreprt stattdessen mtcaddchapter
{}%
}
\usepackage{minitoc}
\begin{document}
\dosecttoc
\tableofcontents
\listoftables
\listoffigures
\section{Section}
\secttoc
\subsection{Subsection}
\end{document}
Hier wird also mittels \AfterStartingTOC
nach dem Einlesen jeder ToC-Datei, für die das Feature totoc
gesetzt ist, automatisch \mtcaddsection
ausgeführt. \csname mtcaddsection\endcsname
wird übrigens statt \mtcaddsection
im Code verwendet, damit der Code keinen Fehler produziert, falls jemand minitoc
rauswirft.
Da explizit auf das Feature totoc
getestet wird, funktioniert das auch, wenn dieses Feature nicht per Option listof=totoc
gesetzt wird, sondern nur für einzelne TOC-Dateien oder für gar keine. Im letzteren Fall wird dann kein \mtcaddsection
mehr ausgeführt.
Nicht berücksichtigt wird im Beispiel das Feature leveldown
, auf das natürlich ebenfalls per \Iftocfeature
zusätzlich getestet werden könnte. So könnte man beispielsweise für scrbook
oder scrreprt
den folgenden Code verwenden:
\AfterStartingTOC{%
\Iftocfeature{\csname @currext\endcsname}{totoc}
{%
\Iftocfeature{\csname @currext\endcsname}{leveldown}
{\csname mtcaddsection\endcsname}{\csname mtcaddchapter\endcsname}%
}{}%
}
Dass KOMA-Script das nicht automatisch selbst \mtcaddsection
bzw. \mtcaddchapter
ausführt, liegt daran, dass dann alle Dokumente, die sich an die minitoc
-Anleitung halten, fehlerhaft würden.
Bei Verwendung von bibliography=totoc
oder index=totoc
ist ggf. ebenfalls eine \mtcaddsection
bzw. \mtcaddchapter
notwendig.