diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/doc/scrhack-de.tex')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/doc/scrhack-de.tex | 313 |
1 files changed, 313 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/doc/scrhack-de.tex b/Master/texmf-dist/source/latex/koma-script/doc/scrhack-de.tex new file mode 100644 index 00000000000..a426a28a6fb --- /dev/null +++ b/Master/texmf-dist/source/latex/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 |