summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/koma-script/doc/scrhack-de.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/koma-script/doc/scrhack-de.tex')
-rw-r--r--macros/latex/contrib/koma-script/doc/scrhack-de.tex313
1 files changed, 313 insertions, 0 deletions
diff --git a/macros/latex/contrib/koma-script/doc/scrhack-de.tex b/macros/latex/contrib/koma-script/doc/scrhack-de.tex
new file mode 100644
index 0000000000..a426a28a6f
--- /dev/null
+++ b/macros/latex/contrib/koma-script/doc/scrhack-de.tex
@@ -0,0 +1,313 @@
+% ======================================================================
+% scrhack-de.tex
+% Copyright (c) Markus Kohm, 2001-2022
+%
+% This file is part of the LaTeX2e KOMA-Script bundle.
+%
+% This work may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3c of the license.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later and of this work.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% The Current Maintainer and author of this work is Markus Kohm.
+%
+% This work consists of all files listed in MANIFEST.md.
+% ======================================================================
+%
+% Chapter about scrhack of the KOMA-Script guide
+% Maintained by Markus Kohm
+%
+% ============================================================================
+
+\KOMAProvidesFile{scrhack-de.tex}
+ [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ KOMA-Script guide (chapter: scrhack)]
+
+\chapter{Fremdpakete verbessern mit \Package{scrhack}}
+\labelbase{scrhack}
+
+\BeginIndexGroup
+\BeginIndex{Package}{scrhack}
+Einige Pakete außerhalb von \KOMAScript{} arbeiten nicht sehr gut mit
+\KOMAScript{} zusammen. Für den \KOMAScript-Autor ist es dabei oftmals sehr
+mühsam, die Autoren der jeweiligen Pakete von einer Verbesserung zu
+überzeugen. Das betrifft auch Pakete, deren Entwicklung eingestellt
+wurde. Deshalb wurde das Paket \Package{scrhack} begonnen. Dieses Paket ändert
+Anweisungen und Definitionen anderer Pakete, damit sie besser mit
+\KOMAScript{} zusammenarbeiten. Einige Änderungen sind auch bei
+Verwendung anderer Klassen nützlich.
+
+Es wird empfohlen, das Paket \Package{scrhack} so früh wie möglich zu
+laden. Insbesondere sollte das Laden vor den betroffenen Paketen erfolgen.
+
+\section{Entwicklungsstand}
+\seclabel{draft}
+
+Obwohl das Paket bereits seit längerer Zeit Teil von \KOMAScript{} ist und
+von vielen Anwendern genutzt wird, hat es auch ein Problem: Bei
+der Umdefinierung von Makros fremder Pakete ist es von der genauen Definition
+und Verwendung dieser Makros abhängig. Damit ist es gleichzeitig auch von
+bestimmten Versionen dieser Pakete abhängig. Wird eine unbekannte Version
+eines der entsprechenden Pakete verwendet, kann \Package{scrhack} den
+notwendigen Patch eventuell nicht ausführen. Im Extremfall kann aber umgekehrt
+der Patch einer unbekannten Version auch zu einem Fehler führen.
+
+Da also \Package{scrhack} immer wieder an neue Versionen fremder Pakete
+angepasst werden muss, kann es niemals als fertig angesehen werden. Daher
+existiert von \Package{scrhack} dauerhaft nur eine Beta-Version. Obwohl die
+Benutzung in der Regel einige Vorteile mit sich bringt, kann die Funktion
+nicht dauerhaft garantiert werden.
+
+\LoadCommonFile{options}
+
+\section{Verwendung von \Package{tocbasic}}
+\seclabel{improvement}
+
+In den Anfängen von \KOMAScript{} gab es von Anwenderseite den Wunsch, dass
+Verzeichnisse von Gleitumgebungen, die mit dem Paket
+\Package{float}\IndexPackage{float}\important{\Package{float}} erzeugt werden,
+genauso behandelt werden wie das Abbildungsverzeichnis oder das
+Tabellenverzeichnis, das von den \KOMAScript-Klassen selbst angelegt
+wird. Damals setzte sich der \KOMAScript-Autor mit dem Autor von
+\Package{float} in Verbindung, um diesem eine Schnittstelle für entsprechende
+Erweiterungen zu unterbreiten. In etwas abgewandelter Form wurde diese in
+Gestalt der beiden Anweisungen
+\Macro{float@listhead}\IndexCmd[indexmain]{float@listhead} und
+\Macro{float@addtolists}\IndexCmd[indexmain]{float@addtolists} realisiert.
+
+Später zeigte sich, dass diese beiden Anweisungen nicht genug Flexibilität für
+eine umfangreiche Unterstützung aller \KOMAScript-Möglichkeiten boten. Leider
+hatte der Autor von \Package{float} die Entwicklung aber bereits eingestellt,
+so dass hier keine Änderungen mehr zu erwarten sind.
+
+Andere Paketautoren haben die beiden Anweisungen ebenfalls übernommen. Dabei
+zeigte sich, dass die Implementierung in einigen Paketen, darunter auch
+\Package{float}, dazu führt, dass all diese Pakete nur in einer bestimmten
+Reihenfolge geladen werden können, obwohl sie ansonsten in keinerlei Beziehung
+zueinander stehen.
+
+Um all diese Nachteile und Probleme zu beseitigen, unterstützt \KOMAScript{}
+diese alte Schnittstelle offiziell nicht mehr. Stattdessen wird bei Verwendung
+dieser Schnittstelle von \KOMAScript{} gewarnt. Gleichzeitig wurde in
+\KOMAScript{} das Paket
+\Package{tocbasic}\IndexPackage{tocbasic}\important{\Package{tocbasic}} (siehe
+\autoref{cha:tocbasic}) als zentrale Schnittstelle für die Verwaltung von
+Verzeichnissen entworfen und realisiert. Die Verwendung dieses Pakets bietet
+\iffalse weit \fi % Umbruchkorrektur
+mehr Vorteile und Möglichkeiten als die
+\iffalse beiden \fi % Umbruchkorrektur
+alten Anweisungen.
+
+Obwohl der Aufwand zur Verwendung dieses Pakets gering ist, haben bisher
+die Autoren der Pakete, die auf die veralteten Anweisungen gesetzt haben,
+keine Anpassung vorgenommen. Daher bietet \Package{scrhack}
+entsprechende Anpassungen für die Pakete
+\Package{float}\IndexPackage{float}\important{\Package{float},
+ \Package{floatrow}, \Package{listings}},
+\Package{floatrow}\IndexPackage{floatrow} und
+\Package{listings}\IndexPackage{listings}. Allein durch das Laden von
+\Package{scrhack} reagieren diese Pakete dann nicht nur auf die Einstellungen
+von Option
+\DescRef{maincls.option.listof}\IndexOption{listof~=\PName{Einstellung}},
+sondern beachten auch Sprachumschaltungen durch
+\Package{babel}\IndexPackage{babel}. Näheres zu den Möglichkeiten, die
+durch die Umstellung der Pakete auf \Package{tocbasic} zur Verfügung
+stehen, ist \autoref{sec:tocbasic.toc} zu entnehmen.
+
+Sollte diese Änderung für eines der Pakete nicht erwünscht sein oder zu
+Problemen führen, so kann sie selektiv mit den Einstellungen
+\OptionValue{float}{false}\IndexOption[indexmain]{float~=\textKValue{false}},
+\OptionValue{floatrow}{false}%
+\IndexOption[indexmain]{floatrow~=\textKValue{false}} und
+\OptionValue{listings}{false}%
+\IndexOption[indexmain]{listings~=\textKValue{false}} abgeschaltet
+werden. Wichtig\textnote{Achtung!} dabei ist, dass eine Änderung der Optionen
+nach dem Laden des zugehörigen Pakets keinen Einfluss mehr hat!
+
+
+\section{Falsche Erwartungen an \Macro{@ptsize}}
+\seclabel{ptsize}
+
+Einige Pakete gehen \iffalse grundsätzlich \fi % Umbruchkorrektur
+davon aus, dass das klasseninterne Makro \Macro{@ptsize}\IndexCmd{@ptsize}
+sowohl definiert ist als auch zu einer ganzen Zahl expandiert. Aus
+Kompatibilitätsgründen definiert \KOMAScript{} \Macro{@ptsize} auch bei
+anderen Grundschriftgrößen als 10\Unit{pt}, 11\Unit{pt} oder 12\Unit{pt}. Da
+\KOMAScript{} außerdem auch gebrochene Schriftgrößen erlaubt, kann
+\iffalse dabei \fi % Umbruchkorrektur
+\Macro{@ptsize} natürlich auch zu einem Dezimalbruch expandieren.
+
+Eines\ChangedAt{v3.17}{\Package{scrhack}} der Pakete, die damit nicht zurecht
+kommen, ist das Paket \Package{setspace}\IndexPackage[indexmain]{setspace}%
+\important{\Package{setspace}}. Darüber hinaus sind die von diesem Paket
+eingestellten Werte immer von der Grundschriftgröße abhängig, auch wenn die
+Einstellung im Kontext einer anderen Schriftgröße erfolgt. Paket
+\Package{scrhack} löst beide Probleme, indem es die Einstellungen von
+\Macro{onehalfspacing} und \Macro{doublespacing} immer relativ zur aktuellen,
+tatsächlichen Schriftgröße vornimmt.
+
+Sollte diese Änderung nicht erwünscht sein oder zu Problemen führen, so kann
+sie selektiv mit der Einstellung
+\OptionValue{setspace}{false}\IndexOption[indexmain]{setspace~=\textKValue{false}}
+abgeschaltet werden. Wichtig\textnote{Achtung!} dabei ist, dass eine Änderung
+der Option nach dem Laden von \Package{setspace} keinen Einfluss mehr hat!
+Ebenso muss \Package{scrhack} vor \Package{setspace} geladen werden, falls
+\Package{setspace} mit einer der Optionen \Option{onehalfspacing} oder
+\Option{doublespacing} geladen wird und dieser Hack sich bereits darauf
+auswirken soll.
+
+
+\section{Sonderfall \Package{hyperref}}
+\seclabel{hyperref}
+
+Ältere Versionen von
+\Package{hyperref}\IndexPackage{hyperref}\important{\Package{hyperref}} vor
+6.79h haben bei den Sternformen der Gliederungsbefehle hinter statt vor oder
+auf die Gliederungsüberschriften verlinkt. Inzwischen ist dieses Problem auf
+Vorschlag des \KOMAScript-Autors beseitigt. Da die entsprechende Änderung aber
+über ein Jahr auf sich warten ließ, wurde in \Package{scrhack} ein
+entsprechender Patch aufgenommen. Zwar kann dieser ebenfalls durch
+\OptionValue{hyperref}{false} deaktiviert werden, empfohlen wird jedoch
+stattdessen die aktuelle Version von \Package{hyperref} zu verwenden. In
+diesem Fall wird die Änderung durch \Package{scrhack} automatisch verhindert.
+
+
+\section{Inkonsistente Behandlung von \Length{textwidth} und \Length{textheight}}
+\seclabel{lscape}
+
+Das\ChangedAt{v3.18}{\Package{scrhack}} Paket
+\Package{lscape}\IndexPackage[indexmain]{lscape}%
+\important{\Package{lscape}} definiert eine Umgebung
+\Environment{landscape}\IndexEnv{landscape}, um den Inhalt einer Seite aber
+nicht deren Kopf und Fuß quer zu setzen. Innerhalb dieser Umgebung wird
+\Length{textheight}\IndexLength{textheight} auf den Wert von
+\Length{textwidth} gesetzt. Umgekehrt wird jedoch \Length{textwidth} nicht auf
+den vorherigen Wert von \Length{textheight} gesetzt. Das ist
+inkonsistent. Meines Wissens wird \Length{textwidth} nicht entsprechend
+geändert, weil andere Pakete oder Anwenderanweisungen gestört werden
+könnten. Jedoch hat auch die Änderung von \Length{textheight} dieses Potential
+und in der Tat beschädigt sie die Funktion beispielsweise der Pakete
+\Package{showframe}\IndexPackage{showframe} und
+\Package{scrlayer}\IndexPackage{scrlayer}. Daher wäre es am besten, wenn
+\Length{textheight} ebenfalls unverändert bliebe. \Package{scrhack} verwendet
+Paket \Package{xpatch} (siehe \cite{package:xpatch}), um die Startanweisung
+\Macro{landscape} der gleichnamigen Umgebung entsprechend zu ändern.
+
+Falls diese Änderung nicht gewünscht wird oder Probleme verursacht, kann sie
+mit Option
+\OptionValue{lscape}{false}\IndexOption[indexmain]{lscape~=\textKValue{false}}
+deaktiviert werden. Es ist zu beachten\textnote{Achtung!}, dass eine
+nachträgliche Zuweisung an Option \Option{lscape} mit
+\DescRef{\LabelBase.cmd.KOMAoption}\IndexCmd{KOMAoption} oder
+\DescRef{\LabelBase.cmd.KOMAoptions}\IndexCmd{KOMAoptions} nur eine Wirkung
+hat, wenn sie während des Ladens von \Package{lscape} nicht \PValue{false}
+war.
+
+Im übrigens wird \Package{lscape} auch von dem Paket
+\Package{pdflscape}\IndexPackage[indexmain]{pdflscape}%
+\important{\Package{pdflscape}} verwendet, so dass \Package{scrhack} sich auch
+auf die Funktion dieses Pakets auswirkt.%
+
+
+\section{Sonderfall \Package{nomencl}}
+\seclabel{nomencl}
+
+Eine\ChangedAt{v3.23}{\Package{scrhack}} Besonderheit stellt der Hack für das
+Paket
+\Package{nomencl}\IndexPackage[indexmain]{nomencl}\important{\Package{nomencl}}
+dar. Dieser rüstet einerseits nach, dass der optionale
+Inhaltsverzeichniseintrag für die Nomenklatur Option
+\OptionValueRef{maincls}{toc}{indentunnumbered} beachtet. Quasi nebenbei
+werden über das Paket \Package{tocbasic} auch gleich die Endungen \File{nlo}
+und \File{nls} für den Besitzer \PValue{nomencl} reserviert (siehe
+\DescRef{tocbasic.cmd.addtotoclist}, \autoref{sec:tocbasic.basics},
+\DescPageRef{tocbasic.cmd.addtotoclist}).
+
+Außerdem wird die Umgebung
+\Environment{thenomenclature}\IndexEnv{thenomenclature} so geändert,
+dass \DescRef{tocbasic.cmd.tocbasic@listhead}\IndexCmd{tocbasic@listhead} für
+die Überschrift verwendet wird (siehe \autoref{sec:tocbasic.internals},
+\DescPageRef{tocbasic.cmd.tocbasic@listhead}). Dadurch können mit dem Hack
+diverse Attribute für die Endung \File{nls} über
+\DescRef{tocbasic.cmd.setuptoc}\IndexCmd{setuptoc}%
+\important{\DescRef{tocbasic.cmd.setuptoc}} gesetzt werden. So ist es
+beispielsweise möglich, mit
+\DescRef{tocbasic.cmd.setuptoc}\PParameter{nls}\PParameter{numbered} die
+Nomenklatur nicht nur ins Inhaltsverzeichnis einzutragen, sondern auch gleich
+zu nummerieren. Näheres zu \DescRef{tocbasic.cmd.setuptoc} und den damit
+möglichen Einstellungen ist in \autoref{sec:tocbasic.toc}, ab
+\DescPageRef{tocbasic.cmd.setuptoc} zu finden. Als kleiner aber wichtiger
+Nebeneffekt erhält die Nomenklatur mit diesem Patch außerdem einen passenden
+Kolumnentitel, falls lebende Kolumnentitel beispielsweise durch Verwendung von
+Seitenstil \DescRef{maincls.pagestyle.headings} aktiviert wurden.
+
+Dieser eher simple Patch ist damit ein Beispiel dafür, wie auch Pakete, die
+keine Gleitumgebungen definieren, Nutzen aus der Verwendung von
+\Package{tocbasic} ziehen könnten. Falls diese Änderung jedoch nicht
+gewünscht wird oder Probleme verursacht, kann sie mit Option
+\OptionValue{nomencl}{false}\IndexOption[indexmain]{nomencl~=\textKValue{false}}
+deaktiviert werden. Entscheidend\textnote{Achtung!} ist dabei die Einstellung
+der Option zum Zeitpunkt, zu dem \Package{nomencl} geladen wird! Spätere
+Änderungen der Option mit \DescRef{\LabelBase.cmd.KOMAoption} oder
+\DescRef{\LabelBase.cmd.KOMAoptions} haben also keinen Einfluss und führen zu
+einer entsprechenden Warnung.%
+
+
+\section{Sonderfall Überschriften}
+\seclabel{sections}
+
+Diverse\ChangedAt{v3.27}{\Package{scrhack}} Pakete gehen davon aus, dass
+Überschriften auf eine ganz bestimmte Weise definiert sind, die weitgehend den
+Definitionen der Standardklassen entsprechen. Dies ist jedoch nicht bei allen
+Klassen der Fall. Beispielsweise sind bei den \KOMAScript-Klassen die
+Überschriften komplett anders definiert, um viele zusätzliche Möglichkeiten zu
+bieten. Das kann einige wenige Pakete aus dem Tritt bringen. Ab Version~3.27
+bietet \Package{scrhack} daher die Möglichkeit, zwangsweise die
+Überschriftenbefehle \DescRef{maincls.cmd.part}\IndexCmd{part},
+\DescRef{maincls.cmd.chapter}\IndexCmd{chapter},
+\DescRef{maincls.cmd.section}\IndexCmd{section},
+\DescRef{maincls.cmd.subsection}\IndexCmd{subsection},
+\DescRef{maincls.cmd.subsubsection}\IndexCmd{subsubsection},
+\DescRef{maincls.cmd.paragraph}\IndexCmd{paragraph} und
+\DescRef{maincls.cmd.subparagraph}\IndexCmd{subparagraph} kompatibel zu den
+Standardklassen zu definieren. Dabei werden im Fall, dass
+\DescRef{maincls.cmd.chapter} definiert ist, die Definitionen von \Class{book}
+zugrunde gelegt. Ist \DescRef{maincls.cmd.chapter} nicht definiert, so werden
+die Definitionen von \Class{article} herangezogen.
+
+Bei Verwendung einer \KOMAScript-Klasse werden als Seiteneffekt zusätzlich
+diverse Möglichkeiten dieser Klassen deaktviert. Beispielsweise stehen dann
+die Befehle zur Neudefinition oder Änderung der Gliederungsbefehle aus
+\autoref{sec:maincls-experts.sections} oder Option
+\DescRef{maincls.option.headings} nicht mehr zur Verfügung und Befehle wie
+\DescRef{maincls.cmd.partformat} erhalten eine neue Voreinstellung.
+
+Da dieser Hack häufig mehr Schaden als Nutzen bringt, erzeugt er eine größere
+Anzahl an Warnungen. Außerdem ist er nicht bereits durch das Laden von Paket
+\Package{scrhack} aktiv, sondern muss beim Laden des Pakets mit Option
+\Option{standardsections}\IndexOption[indexmain]{standardsections} explizit
+aktiviert werden. Eine nachträgliche Aktivierung oder Deaktivierung ist nicht
+möglich.
+
+Da es für die eingangs erwähnten Probleme oft weniger invasive Lösungen gibt,
+wird die Verwendung des Hacks ausdrücklich nicht empfohlen, sondern lediglich
+als letzte Rettungschance für Notfälle angeboten.%
+\EndIndexGroup
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "scrguide-en.tex"
+%%% coding: utf-8
+%%% ispell-local-dictionary: "en_GB"
+%%% eval: (flyspell-mode 1)
+%%% End:
+
+% LocalWords: Eindateiensystem Schreibdatei Zieldatei Zielendung Quellendung
+% LocalWords: Verzeichnisüberschrift Dateiendung Zielendungen Verzeichnisdatei
+% LocalWords: Benutzeranweisungen Dokumentpräambel Kapitelebene Sternformen
+% LocalWords: Sprachumschaltungen Gliederungsüberschriften Gliederungsbefehle
+% LocalWords: Paketautoren