texlive[72204] Master: scrhack (5sep24)
commits+karl at tug.org
commits+karl at tug.org
Thu Sep 5 22:38:40 CEST 2024
Revision: 72204
https://tug.org/svn/texlive?view=revision&revision=72204
Author: karl
Date: 2024-09-05 22:38:40 +0200 (Thu, 05 Sep 2024)
Log Message:
-----------
scrhack (5sep24)
Modified Paths:
--------------
trunk/Master/tlpkg/bin/tlpkg-ctan-check
trunk/Master/tlpkg/libexec/ctan2tds
trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
Added Paths:
-----------
trunk/Master/texmf-dist/doc/latex/scrhack/
trunk/Master/texmf-dist/doc/latex/scrhack/LICENSE.md
trunk/Master/texmf-dist/doc/latex/scrhack/README.md
trunk/Master/texmf-dist/doc/latex/scrhack/float.hak
trunk/Master/texmf-dist/doc/latex/scrhack/floatrow.hak
trunk/Master/texmf-dist/doc/latex/scrhack/hyperref.hak
trunk/Master/texmf-dist/doc/latex/scrhack/listings.hak
trunk/Master/texmf-dist/doc/latex/scrhack/lscape.hak
trunk/Master/texmf-dist/doc/latex/scrhack/nomencl.hak
trunk/Master/texmf-dist/doc/latex/scrhack/scrhack-2023-07-07.pdf
trunk/Master/texmf-dist/doc/latex/scrhack/scrhack.pdf
trunk/Master/texmf-dist/doc/latex/scrhack/setspace.hak
trunk/Master/texmf-dist/doc/latex/scrhack/standardsections.hak
trunk/Master/texmf-dist/source/latex/scrhack/
trunk/Master/texmf-dist/source/latex/scrhack/scrhack-2023-07-07.dtx
trunk/Master/texmf-dist/source/latex/scrhack/scrhack.dtx
trunk/Master/texmf-dist/tex/latex/scrhack/
trunk/Master/texmf-dist/tex/latex/scrhack/scrhack-2023-07-07.sty
trunk/Master/texmf-dist/tex/latex/scrhack/scrhack.sty
trunk/Master/tlpkg/tlpsrc/scrhack.tlpsrc
Added: trunk/Master/texmf-dist/doc/latex/scrhack/LICENSE.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrhack/LICENSE.md (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/scrhack/LICENSE.md 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,19 @@
+----------------------------------------------------------------------------
+
+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 2005/12/01
+or later. This work has the LPPL maintenance status “maintained”.
+The current maintainer and author of this work is Markus Kohm.
+
+----------------------------------------------------------------------------
+
+Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+oder später. Dieses Werk hat den LPPL-Verwaltungs-Status „maintained”.
+Der aktuelle Verwalter und Autor dieses Werks ist Markus Kohm.
+
+----------------------------------------------------------------------------
Property changes on: trunk/Master/texmf-dist/doc/latex/scrhack/LICENSE.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/scrhack/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrhack/README.md (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/scrhack/README.md 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,207 @@
+# Package `scrhack`
+
+Copyright © 2008–2024 Markus Kohm
+
+Release: 2024-09-04 v3.42
+
+License: LPPL 1.3c
+
+KOMA presents the compatibility package to emulate the former
+[KOMA-Script](https://www.ctan.org/pkg/koma-script) package `scrhack` as part
+of the *third-party enhancements* project.
+
+------------------------------------------------------------------------------
+
+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.
+
+This work has the LPPL maintenance status "maintained".
+
+The Current Maintainer and author of this work is Markus Kohm.
+
+------------------------------------------------------------------------------
+
+# Abstract
+
+For several years
+[KOMA-Script](https://www.sourceforge.net/project/koma-script) provided a
+package `scrhack`, that has been made not only to improve the compatibility of
+third-party packages with [KOMA-Script](https://www.ctan.org/pkg/koma-script)
+classes, but also to generally improve third-party packages. The package
+consisted not only in the package file `scrhack.sty` but also in several so
+called hacks as separate files with extension `.hak`. In the course of
+splitting off former [KOMA-Script](https://www.ctan.org/pkg/koma-script)
+packages from the [KOMA-Script](https://www.ctan.org/pkg/koma-script)
+collection, it was decided to create independent packages from the individual
+hacks. These new independent packages then serve as replacements for the
+original packages they were intended to improve. In addition, to preserve the
+functionality of loading the enhancements only when the corresponding original
+package is loaded, a new `scrhack` was created to do just that.
+
+# Installation for Users
+
+If you are a user, you should wait until all the packages of the third-party
+enhancement project have been added to your preferred TeX distribution. Then
+you can use the package manager of your TeX distribution to install all the
+packages at once.
+
+Note: If you have installed a
+ [KOMA-Script](https://www.ctan.org/pkg/koma-script) before version 3.42,
+ you should also update
+ [KOMA-Script](https://www.ctan.org/pkg/koma-script) using the package
+ manager of your TeX distribution as soon as such an update is
+ availiabe. Otherwise it could happen, that the old integrated `scrhack`
+ of [KOMA-Script](https://www.ctan.org/pkg/koma-script) is used instead
+ of the new installed version. On the one hand, KOMA-Script 3.41 works
+ with both the integrated `scrhack` and the new standalone `scrhack`. On
+ the other hand, KOMA-Script from version 3.42 does not provide an
+ integrated `scrhack`. So installing the new standalone `scrhack` before
+ or at least with KOMA-Script version 3.42 is the best option.
+
+# Unpacking for Distributors
+
+Distributors should download [the distribution from
+CTAN](https://www.ctan.org/pkg/scrhack). This consists in:
+
+* `scrhack.dtx`
+* `scrhack-2023-07-07.dtx`
+* `README.md`
+* `LICENSE.md`
+* `scrhack.pdf`
+* `scrhack-2023-07-07.pdf`
+
+If distributors also want to distribute `scrhack.sty`,
+`scrhack-2023-07-07.sty`, `float.hak`, `floatrow.hak`, `hyperref.hak`,
+`listings.hak`, `lscape.hak`, `nomencl.hak`, `setspace.hak`, and
+`standardsectioning.hak` they can unpack these using:
+
+ tex scrhack.dtx
+ tex scrhack-2023-07-07.dtx
+
+Note, that you have to use `tex` not `latex`, `pdflatex`, `xelatex` or
+`lualatex`!
+
+Note also, that a legal distribution consists at least in:
+
+* `scrhack.dtx`
+* `scrhack-2023-07-07.dtx`
+* `README.md`
+
+The following files are optionally, but must not be distributed without the
+previous ones:
+
+* `LICENSE.md`
+* `scrhack.sty`
+* `scrhack.pdf`
+* `scrhack-2023-07-07.sty`
+* `scrhack-2023-07-07.pdf`
+* `float.hak`
+* `floatrow.hak`
+* `hyperref.hak`
+* `listings.hak`
+* `lscape.hak`
+* `nomencl.hak`
+* `setspace.hak`
+* `standardsectioning.hak`
+
+
+# Unpacking and Installation for Developers
+
+Developers who want the current developer version of the code to be installed
+for testing, should clone [the `third-party-enhancements`
+repository](https://github.com/komascript/third-party-enhancements), e.g.,
+using
+
+ git clone https://github.com/komascript/third-party-enhancements.git
+
+You can than either unpack and install all the third-party enhancements using:
+
+ l3build install --full
+
+from within the main directory of the cloned respository. For installation of
+`scrhack` only you could run the same command from within the
+`scrhack` subdirectory. For installation without the manual omit
+option `--full`, but this is not recommended for developers.
+
+Note: Installation of `scrhack` does make sense only if all other packages of
+ the third-party enhancement project are also installed. The new
+ `scrhack` does not work without these packages.
+
+Note: If you have already an installation of
+ [KOMA-Script](https://www.ctan.org/pkg/koma-script) before version 3.42
+ in the user's texmf tree (`TEXMFHOME`), kpathsearch will usually find
+ the old integrated version of `scrhack`. Therefore LaTeX also will use
+ that old integrated version of `scrhack`. To prioritize the new
+ standalone version of `scrhack`, you would either have to remove
+ [KOMA-Script](https://www.ctan.org/pkg/koma-script) from the user's
+ texmf tree or copy `scrhack.sty` to the working directory from within
+ you are running LaTeX. Instead of the
+ [KOMA-Script](https://www.ctan.org/pkg/koma-script) version before 3.42
+ you can, after removing that installation, also install a
+ [KOMA-Script](https://www.ctan.org/pkg/koma-script) version from 3.42,
+ e.g., [the current pre-release](https://komascript.de/current) or [the
+ developer version from
+ SourceForge](https://sourceforge.net/p/koma-script/code/HEAD/tree/trunk/).
+
+# How to get the Manual
+
+After installation you should get the user manual using:
+
+ texdoc scrhack
+
+See the manual of your TeX distribution for more information.
+
+Developers or distributors can also build the manual from the source using:
+
+ l3build doc
+
+# How to Contribute
+
+To become a contributor, e.g., do heavy testing. If you find an issue, please
+report it using [the issue
+tracker](https://github.com/komascript/third-party-enhancements/issues).
+
+You can also become a developer and, e.g., make new test files to the
+packages. See the [`l3build`](https://ctan.org/pkg/l3build) manual for more
+information about tests. If you've created a new test and think that it would
+be useful. Please either do a pull request or [add a new
+issue](https://github.com/komascript/third-party-enhancements/issues/new/choose)
+and include your test file.
+
+Another kind of contribution would be to contact an author of one of the
+third-party packages and convince her or him to integrate the code of the
+corresponding enhancement package from this project into her or his package.
+
+# How to Report Issues
+
+If you think you have found a bug (or another kind of issue) using
+`scrhack` you should use [the issue
+tracker](https://github.com/komascript/third-party-enhancements/issues). Please
+first search for similar issues already reported and maybe also already fixed
+and closed. Maybe the replies to such a similar report would help you too.
+
+If your issue is new, you should report it also using [the issue
+tracker](https://github.com/komascript/third-party-enhancements/issues). Please
+be kind, not only when writing the report but also when reading replies and
+commenting or answering. And please always add a minimal working example and
+usually the relevant parts of the `log`-file to your report. Please use the
+[markdown for
+code](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks)
+to add such files into the text of your report. The correct language
+identifier for LaTeX code would be `latex`. For `log`-files you won't need any
+language identifier. Usually you should not use attachments for code or
+`log`-files unless you've been asked to do so. And please note, reports should
+always be self-containing. External links often break and so the report become
+useles.
+
+# How to Say Thank You for my Work
+
+Hey, I'm doing this as a hobby. So no need to say thank you. But I'm a vain
+fop, so I'm certainly up for a quick thank you by email. On komascript.de you
+can find an [explanation of my wishes](https://komascript.de/wunschliste) if
+you want to give more. If you don't understand German, just click to links at
+that page.
Property changes on: trunk/Master/texmf-dist/doc/latex/scrhack/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/scrhack/float.hak
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrhack/float.hak (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/scrhack/float.hak 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,121 @@
+%%
+%% This is file `float.hak',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scrhack-2023-07-07.dtx (with options: `hack,float,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,float,body')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from float.hak.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+\ProvidesFile{float.hak}[%
+ 2024-04-17 v3.42
+ scrhack part
+ (hacking package
+ float)%
+]
+\scr at ifexpected{\newfloat}{%
+ \long\def\newfloat#1#2#3{\@namedef{ext@#1}{#3}
+ \let\float at do=\relax
+ \xdef\@tempa{\noexpand\float at exts{\the\float at exts \float at do{#3}}}%
+ \@tempa
+ \floatplacement{#1}{#2}%
+ \@ifundefined{fname@#1}{\floatname{#1}{#1}}{}
+ \expandafter\edef\csname ftype@#1\endcsname{\value{float at type}}%
+ \addtocounter{float at type}{\value{float at type}}
+ \restylefloat{#1}%
+ \expandafter\edef\csname fnum@#1\endcsname%
+ {\expandafter\noexpand\csname fname@#1\endcsname{}
+ \expandafter\noexpand\csname the#1\endcsname}
+ \@ifnextchar[%]
+ {\float at newx{#1}}%
+ {\@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}%
+ {}}}%
+}{%
+ \scr at ifexpected{\listof}{%
+ \def\listof#1#2{%
+ \@ifundefined{ext@#1}{\float at error{#1}}{%
+ \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}%
+ \float at listhead{#2}%
+ \begingroup\setlength{\parskip}{\z@}%
+ \@starttoc{\@nameuse{ext@#1}}%
+ \endgroup}}%
+ }{%
+ \RequirePackage{tocbasic}%
+ \PackageInfo{scrhack}{redefining \string\newfloat}%
+ \renewcommand\newfloat[3]{%
+ \Ifattoclist{#3}{%
+ \PackageError{scrhack}{extension `#3' already in use}{%
+ Each extension may be used only once.\MessageBreak
+ You, the class, or another package already uses extension
+ `#3'.\MessageBreak
+ \string\newfloat\space command will be ignored!}%
+ }{%
+ \addtotoclist[float]{#3}%
+ \setuptoc{#3}{chapteratlist}%
+ \@namedef{ext@#1}{#3}%
+ \let\float at do=\relax
+ \xdef\@tempa{\noexpand\float at exts{\the\float at exts \float at do{#3}}}%
+ \@tempa
+ \floatplacement{#1}{#2}%
+ \@ifundefined{fname@#1}{\floatname{#1}{#1}}{}%
+ \expandafter\edef\csname ftype@#1\endcsname{\value{float at type}}%
+ \addtocounter{float at type}{\value{float at type}}
+ \restylefloat{#1}%
+ \expandafter\edef\csname fnum@#1\endcsname%
+ {\expandafter\noexpand\csname fname@#1\endcsname{}
+ \expandafter\noexpand\csname the#1\endcsname}%
+ \@ifnextchar[%]
+ {\float at newx{#1}}%
+ {\@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}%
+ {}}}%
+ }%
+ \PackageInfo{scrhack}{redefining \string\listof}%
+ \renewcommand*\listof[2]{%
+ \@ifundefined{ext@#1}{\float at error{#1}}{%
+ \@ifundefined{l@#1}{\expandafter\let\csname l@#1\endcsname\l at figure
+ \@ifundefined{l@#1}{%
+ \DeclareTOCStyleEntry[level=1,numwidth=2.3em,indent=1.5em]
+ {default}{#1}%
+ }{}%
+ }{}%
+ \listoftoc[{#2}]{\csname ext@#1\endcsname}%
+ }%
+ }%
+ \scr at ifexpected{\float at addtolists}{%
+ \long\def\float at addtolists#1{%
+ \def\float at do##1{\addtocontents{##1}{#1}} \the\float at exts}%
+ }{%
+ \PackageInfo{scrhack}{undefining \string\float at addtolists}%
+ \let\float at addtolists\relax
+ }{%
+ \PackageWarningNoLine{scrhack}{unkown \string\float at addtolists\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported float version}%
+ }%
+ }{%
+ \PackageWarningNoLine{scrhack}{unknown \string\listof\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported float version}%
+ }%
+}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\newfloat\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported float version}%
+}
+\endinput
+%%
+%% End of file `float.hak'.
Added: trunk/Master/texmf-dist/doc/latex/scrhack/floatrow.hak
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrhack/floatrow.hak (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/scrhack/floatrow.hak 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,108 @@
+%%
+%% This is file `floatrow.hak',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scrhack-2023-07-07.dtx (with options: `hack,floatrow,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,floatrow,body')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from floatrow.hak.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+\ProvidesFile{floatrow.hak}[%
+ 2024-04-17 v3.42
+ scrhack part
+ (hacking package
+ floatrow)%
+]
+\scr at ifexpected{\DeclareNewFloatType}{%
+ \long\def\DeclareNewFloatType#1#2{\def\FB at captype{#1}%
+ \expandafter\edef\csname ftype@#1\endcsname{\the\c at float@type}%
+ \addtocounter{float at type}{\value{float at type}}%
+ \@namedef{#1name}{#1}\newcounter{#1}%
+ \expandafter\edef\csname fnum@#1\endcsname
+ {\expandafter\noexpand\csname #1name\endcsname\nobreakspace
+ \expandafter\noexpand\csname the#1\endcsname}%
+ \@namedef{the#1}{\arabic{#1}}\flnew at ext{lo#1}\@namedef{fps@#1}{tbp}%
+ \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}%
+ \caption at setkeys[floatrow]{newfloat}{#2}\let\FR at tmp=\relax
+ \xdef\@tempa{\noexpand\flrow at types{\the\flrow at types \FR at tmp{#1}}}%
+ \@tempa}%
+}{%
+ \scr at ifexpected{\listof}{%
+ \def\listof#1#2{%
+ \@ifundefined{ext@#1}{\flrow at error{Unknown float style `#1'}}{%
+ \expandafter\providecommand\csname l@#1\endcsname
+ {\@dottedtocline{1}{1.5em}{2.3em}}%
+ \float at listhead{#2}%
+ \begingroup\setlength{\parskip}{\z@}%
+ \@starttoc{\@nameuse{ext@#1}}%
+ \endgroup}}%
+ }{%
+ \RequirePackage{tocbasic}%
+ \PackageInfo{scrhack}{redefining \string\DeclareNewFloatType}%
+ \renewcommand\DeclareNewFloatType[2]{\def\FB at captype{#1}%
+ \expandafter\edef\csname ftype@#1\endcsname{\the\c at float@type}%
+ \addtocounter{float at type}{\value{float at type}}%
+ \@namedef{#1name}{#1}\newcounter{#1}%
+ \expandafter\edef\csname fnum@#1\endcsname
+ {\expandafter\noexpand\csname #1name\endcsname\nobreakspace
+ \expandafter\noexpand\csname the#1\endcsname}%
+ \@namedef{the#1}{\arabic{#1}}\flnew at ext{lo#1}\@namedef{fps@#1}{tbp}%
+ \DeclareTOCStyleEntry[level=1,numwidth=2.3em,indent=1.5em]{default}{#1}%
+ \caption at setkeys[floatrow]{newfloat}{#2}\let\FR at tmp=\relax
+ \xdef\@tempa{\noexpand\flrow at types{\the\flrow at types \FR at tmp{#1}}}%
+ \@tempa
+ \xdef\@tempa{\noexpand\addtotoclist[float]{\@nameuse{ext@\FB at captype}}%
+ \noexpand\setuptoc{\@nameuse{ext@\FB at captype}}{chapteratlist}%
+ }%
+ \@tempa
+ }%
+ \PackageInfo{scrhack}{redefining \string\listof}%
+ \renewcommand*\listof[2]{%
+ \@ifundefined{ext@#1}{\flrow at error{Unknown float style `#1'}}{%
+ \@ifundefined{l@#1}{\expandafter\let\csname l@#1\endcsname\l at figure
+ \@ifundefined{l@#1}{%
+ \DeclareTOCStyleEntry[level=1,numwidth=2.3em,indent=1.5em]
+ {default}{#1}%
+ }{}%
+ }{}%
+ \listoftoc[{#2}]{\csname ext@#1\endcsname}%
+ }%
+ }%
+ \scr at ifexpected{\float at addtolists}{%
+ \long\def\float at addtolists#1{%
+ \def\float at do##1{\addtocontents{##1}{#1}} \the\float at exts}%
+ }{%
+ \PackageInfo{scrhack}{undefining \string\float at addtolists}%
+ \let\float at addtolists\relax
+ }{%
+ \PackageWarningNoLine{scrhack}{unkown \string\float at addtolists\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported floatrow version}%
+ }%
+ }{%
+ \PackageWarningNoLine{scrhack}{unknown \string\listof\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported floatrow version}%
+ }%
+}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\DeclareNewFloatType\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported floatrow version}%
+}
+\endinput
+%%
+%% End of file `floatrow.hak'.
Added: trunk/Master/texmf-dist/doc/latex/scrhack/hyperref.hak
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrhack/hyperref.hak (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/scrhack/hyperref.hak 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,132 @@
+%%
+%% This is file `hyperref.hak',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scrhack-2023-07-07.dtx (with options: `hack,hyperref,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,hyperref,body')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from hyperref.hak.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+\ProvidesFile{hyperref.hak}[%
+ 2024-04-17 v3.42
+ scrhack part
+ (hacking package
+ hyperref)%
+]
+\scr at ifexpected\@schapter{%
+ \def\@schapter#1{%
+ \H at old@schapter{#1}%
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \Hy at GlobalStepCount\Hy at linkcounter
+ \xdef\@currentHref{\Hy at chapapp*.\the\Hy at linkcounter}%
+ \Hy at raisedlink{%
+ \hyper at anchorstart{\@currentHref}\hyper at anchorend
+ }%
+ \endgroup
+ }%
+}{%
+ \PackageInfo{scrhack}{redefining \string\@schapter}%
+ \def\@schapter#1{%
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \Hy at GlobalStepCount\Hy at linkcounter
+ \xdef\@currentHref{\Hy at chapapp*.\the\Hy at linkcounter}%
+ \Hy at raisedlink{%
+ \hyper at anchorstart{\@currentHref}\hyper at anchorend
+ }%
+ \endgroup
+ \H at old@schapter{#1}%
+ }%
+}{%
+ \scr at ifexpected\@schapter{%
+ \def\@schapter#1{%
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \Hy at GlobalStepCount\Hy at linkcounter
+ \xdef\@currentHref{\Hy at chapapp*.\the\Hy at linkcounter}%
+ \Hy at raisedlink{%
+ \hyper at anchorstart{\@currentHref}\hyper at anchorend
+ }%
+ \endgroup
+ \H at old@schapter{#1}%
+ }%
+ }{}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\@schapter\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported hyperref version}%
+ }%
+}
+\scr at ifexpected\@spart{%
+ \def\@spart#1{%
+ \H at old@spart{#1}%
+ \Hy at GlobalStepCount\Hy at linkcounter
+ \xdef\@currentHref{part*.\the\Hy at linkcounter}%
+ \Hy at raisedlink{%
+ \hyper at anchorstart{\@currentHref}\hyper at anchorend
+ }%
+ }%
+}{%
+ \PackageInfo{scrhack}{redefining \string\@spart}%
+ \def\@spart#1{%
+ \Hy at GlobalStepCount\Hy at linkcounter
+ \xdef\@currentHref{part*.\the\Hy at linkcounter}%
+ \Hy at raisedlink{%
+ \hyper at anchorstart{\@currentHref}\hyper at anchorend
+ }%
+ \H at old@spart{#1}%
+ }%
+}{%
+ \scr at ifexpected\@spart{%
+ \def\@spart#1{%
+ \Hy at GlobalStepCount\Hy at linkcounter
+ \xdef\@currentHref{part*.\the\Hy at linkcounter}%
+ \Hy at raisedlink{%
+ \hyper at anchorstart{\@currentHref}\hyper at anchorend
+ }%
+ \H at old@spart{#1}%
+ }%
+ }{}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\@spart\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported hyperref version}%
+ }%
+}
+\scr at ifexpected\@ssect{%
+ \def\@ssect#1#2#3#4#5{%
+ \H at old@ssect{#1}{#2}{#3}{#4}{#5}%
+ \phantomsection
+ }%
+}{%
+ \PackageInfo{scrhack}{redefining \string\@ssect}%
+ \def\@ssect#1#2#3#4#5{%
+ \H at old@ssect{#1}{#2}{#3}{#4}{\phantomsection\ignorespaces#5}%
+ }%
+}{%
+ \scr at ifexpected\@ssect{%
+ \def\@ssect#1#2#3#4#5{%
+ \H at old@ssect{#1}{#2}{#3}{#4}{\phantomsection\ignorespaces#5}%
+ }%
+ }{}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\@ssect\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported hyperref version}%
+ }%
+}
+\endinput
+%%
+%% End of file `hyperref.hak'.
Added: trunk/Master/texmf-dist/doc/latex/scrhack/listings.hak
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrhack/listings.hak (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/scrhack/listings.hak 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,115 @@
+%%
+%% This is file `listings.hak',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scrhack-2023-07-07.dtx (with options: `hack,listings,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,listings,body')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from listings.hak.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+\ProvidesFile{listings.hak}[%
+ 2024-04-17 v3.42
+ scrhack part
+ (hacking package
+ listings)%
+]
+\newcommand*{\scr at do@hack at listings}{%
+ \RequirePackage{tocbasic}%
+ \addtotoclist[float]{lol}%
+ \setuptoc{lol}{chapteratlist}%
+ \PackageInfo{scrhack}{redefining \string\lstlistoflistings}%
+ \renewcommand*{\lstlistoflistings}{\listoftoc[{\lstlistlistingname}]{lol}}%
+ \providecommand*{\ext at lstlisting}{lol}%
+ \@tempswafalse
+ \xpatchcmd\lst at MakeCaption
+ {\addcontentsline{lol}}%
+ {\addcontentsline{\ext at lstlisting}}%
+ {\PackageInfo{scrhack}{patching \string\lst at MakeCaption}\@tempswatrue}%
+ {\PackageWarning{scrhack}{cannot patch \string\lst at MakeCaption}}%
+ \@whilesw\if at tempswa\fi{%
+ \xpatchcmd\lst at MakeCaption
+ {\addcontentsline{lol}}%
+ {\addcontentsline{\ext at lstlisting}}%
+ {}%
+ {\@tempswafalse}%
+ }%
+ \AtBeginDocument{%
+ \scr at ifexpected{\float at addtolists}{%
+ \def\float at addtolists##1{\addtocontents{lol}{##1}}%
+ }{%
+ \PackageInfo{scrhack}{undefining \string\float at addtolists}%
+ \let\float at addtolists\relax
+ }{%
+ \scr at ifexpected{\float at addtolists}{%
+ \def\float at addtolists##1{\addtocontents{lol}{##1}%
+ \orig at float@addtolists{##1}}%
+ }{%
+ \PackageInfo{scrhack}{setting \string\float at addtolists\MessageBreak
+ to \string\orig at float@addtolists}%
+ \let\float at addtolists\orig at float@addtolists
+ }{%
+ \PackageWarningNoLine{scrhack}{unkown \string\float at addtolists\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported listings version}%
+ }%
+ }%
+ }%
+ \expandafter\def\expandafter\lst at makecaption\expandafter{%
+ \expandafter\def\expandafter\@captype\expandafter{%
+ \expandafter l\expandafter s\expandafter t\expandafter l%
+ \expandafter i\expandafter s\expandafter t\expandafter i%
+ \expandafter n\expandafter g\expandafter}\lst at makecaption
+ }%
+ \let\scr at do@hack at listings\relax
+}
+\scr at ifexpected{\lstlistoflistings}{%
+ \def\lstlistoflistings{\bgroup
+ \let\contentsname\lstlistlistingname
+ \let\lst at temp\@starttoc \def\@starttoc##1{\lst at temp{lol}}%
+ \tableofcontents \egroup}%
+}{%
+ \scr at do@hack at listings
+}{%
+ \scr at ifexpected{\lstlistoflistings}{%
+ \def\lstlistoflistings{%
+ \begingroup
+ \@ifundefined{@restonecoltrue}{}{%
+ \if at twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ }%
+ \float at listhead{\lstlistlistingname}%
+ \parskip\z@\parindent\z@\parfillskip \z@ \@plus 1fil%
+ \@starttoc{lol}%
+ \@ifundefined{@restonecoltrue}{}{%
+ \if at restonecol\twocolumn\fi
+ }%
+ \endgroup
+ }%
+ }{%
+ \scr at do@hack at listings
+ }{%
+ \PackageWarningNoLine{scrhack}{unknown \string\lstlistoflistings\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported listings version}%
+ }%
+}
+\endinput
+%%
+%% End of file `listings.hak'.
Added: trunk/Master/texmf-dist/doc/latex/scrhack/lscape.hak
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrhack/lscape.hak (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/scrhack/lscape.hak 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,49 @@
+%%
+%% This is file `lscape.hak',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scrhack-2023-07-07.dtx (with options: `hack,lscape,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,lscape,body')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from lscape.hak.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+\ProvidesFile{lscape.hak}[%
+ 2024-04-17 v3.42
+ scrhack part
+ (hacking package
+ lscape)%
+]
+\xpatchcmd{\landscape}{\textheight=\vsize}{%
+ \if at scrhack@lscape
+ \scrh at LT@textheight=\vsize
+ \let\scrh at LT@outputpage\@outputpage
+ \def\@outputpage{\scrh at LT@outputpage\global\@colht\scrh at LT@textheight}%
+ \else
+ \textheight=\vsize
+ \fi
+}{%
+ \PackageInfo{scrhack}{\string\landscape\space patched to make
+ \string\textheight\space change optional}%
+}{%
+ \PackageWarning{scrhack}{Cannot patch \string\landscape!\MessageBreak
+ Maybe you are using a unsupported lscape version}%
+ \@scrhack at lscapefalse
+}
+\newlength{\scrh at LT@textheight}
+\endinput
+%%
+%% End of file `lscape.hak'.
Added: trunk/Master/texmf-dist/doc/latex/scrhack/nomencl.hak
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrhack/nomencl.hak (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/scrhack/nomencl.hak 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,118 @@
+%%
+%% This is file `nomencl.hak',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scrhack-2023-07-07.dtx (with options: `hack,nomencl,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,nomencl,body')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from nomencl.hak.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+\ProvidesFile{nomencl.hak}[%
+ 2024-04-17 v3.42
+ scrhack part
+ (hacking package
+ nomencl)%
+]
+\RequirePackage{tocbasic}
+\@ifpackagelater{nomencl}{2019/01/01}{%
+ \PackageInfo{scrhack}{only `tocbasic' loaded for `nomencl'}%
+ \expandafter\endinput
+}{}
+\addtotoclist[nomencl]{nlo}
+\addtotoclist[nomencl]{nls}
+\xpatchcmd{\thenomenclature}{%
+ \@ifundefined{chapter}%
+ {
+ \section*{\nomname}
+ \if at intoc\addcontentsline{toc}{section}{\nomname}\fi%
+ }%
+ {
+ \chapter*{\nomname}
+ \if at intoc\addcontentsline{toc}{chapter}{\nomname}\fi%
+ }%
+}{%
+ \scr at hack@nomencl at head
+}{%
+ \PackageInfo{scrhack}{\string\thenomenclature\space successfully patched}%
+}{%
+ \xpatchcmd{\thenomenclature}{%
+ \@ifundefined{chapter}%
+ {
+ \section*{\nomname}
+ \if at intoc\addcontentsline{toc}{section}{\nomname}\fi%
+ }%
+ {
+ \chapter*{\nomname}
+ \markboth{\nomname}{\nomname}%
+ \if at intoc\addcontentsline{toc}{chapter}{\nomname}\fi%
+ }%
+ }{%
+ \scr at hack@nomencl at head
+ }{%
+ \PackageInfo{scrhack}{\string\thenomenclature\space successfully patched}%
+ }{%
+ \xpatchcmd{\thenomenclature}{%
+ \@ifundefined{chapter}%
+ {
+ \section*{\nomname}
+ \if at intoc\addcontentsline{toc}{section}{\nomname}\fi%
+ }%
+ {
+ \chapter*{\nomname}
+ \@mkboth{\nomname}{\nomname}%
+ \if at intoc\addcontentsline{toc}{chapter}{\nomname}\fi%
+ }%
+ }{%
+ \scr at hack@nomencl at head
+ }{%
+ \PackageInfo{scrhack}{\string\thenomenclature\space successfully patched}%
+ }{%
+ \xpatchcmd{\thenomenclature}{%
+ \@ifundefined{chapter}%
+ }{%
+ \scr at hack@nomencl at head
+ \@gobbletwo
+ }{%
+ \PackageWarning{scrhack}{%
+ using emergency patch of \string\thenomenclature.\MessageBreak
+ This could happen if you are using an unknown\MessageBreak
+ release of package `nomencl'.\MessageBreak
+ Mostly this patch does work too, but it also could\MessageBreak
+ break `nomencl`. If this happens, please deactivate\MessageBreak
+ the `nomencl` hack of `scrhack`%
+ }%
+ }{%
+ \PackageWarning{scrhack}{%
+ cannot patch \string\thenomenclature.\MessageBreak
+ This could happen if you are using an unknown\MessageBreak
+ release of package `nomencl'%
+ }%
+ }%
+ }%
+ }%
+}
+\newcommand*{\scr at hack@nomencl at head}{%
+ \providecommand*{\listofnlsname}{\nomname}%
+ \def\@currext{nls}%
+ \tocbasic at listhead{\nomname}%
+}
+\if at intoc
+ \setuptoc{nls}{totoc}
+\fi
+\endinput
+%%
+%% End of file `nomencl.hak'.
Added: trunk/Master/texmf-dist/doc/latex/scrhack/scrhack-2023-07-07.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/scrhack/scrhack-2023-07-07.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrhack/scrhack-2023-07-07.pdf 2024-09-05 20:36:52 UTC (rev 72203)
+++ trunk/Master/texmf-dist/doc/latex/scrhack/scrhack-2023-07-07.pdf 2024-09-05 20:38:40 UTC (rev 72204)
Property changes on: trunk/Master/texmf-dist/doc/latex/scrhack/scrhack-2023-07-07.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/scrhack/scrhack.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/scrhack/scrhack.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrhack/scrhack.pdf 2024-09-05 20:36:52 UTC (rev 72203)
+++ trunk/Master/texmf-dist/doc/latex/scrhack/scrhack.pdf 2024-09-05 20:38:40 UTC (rev 72204)
Property changes on: trunk/Master/texmf-dist/doc/latex/scrhack/scrhack.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/scrhack/setspace.hak
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrhack/setspace.hak (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/scrhack/setspace.hak 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,118 @@
+%%
+%% This is file `setspace.hak',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scrhack-2023-07-07.dtx (with options: `hack,setspace,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,setspace,body')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from setspace.hak.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+\ProvidesFile{setspace.hak}[%
+ 2024-04-17 v3.42
+ scrhack part
+ (hacking package
+ setspace)%
+]
+\scr at ifexpected{\onehalfspacing}{%
+ \long\def\onehalfspacing{%
+ \setstretch{1.25}% default
+ \ifcase \@ptsize \relax % 10pt
+ \setstretch {1.25}%
+ \or % 11pt
+ \setstretch {1.213}%
+ \or % 12pt
+ \setstretch {1.241}%
+ \fi
+ }%
+}{%
+ \renewcommand*{\onehalfspacing}{%
+ \@tempdima=\dimexpr (\f at size pt)*1500/
+ (\dimexpr \f at baselineskip\relax)*\p@/1000\relax
+ \expandafter\setstretch\expandafter{\strip at pt\@tempdima}%
+ }%
+}{%
+ \scr at ifexpected{\onehalfspacing}{%
+ \long\def\onehalfspacing{%
+ \setstretch{1.25}% default
+ \ifx\@ptsize\@undefined\else
+ \ifcase \@ptsize \relax % 10pt
+ \setstretch {1.25}%
+ \or % 11pt
+ \setstretch {1.213}%
+ \or % 12pt
+ \setstretch {1.241}%
+ \fi
+ \fi
+ }%
+ }{%
+ \renewcommand*{\onehalfspacing}{%
+ \@tempdima=\dimexpr (\f at size pt)*1500/
+ (\dimexpr \f at baselineskip\relax)*\p@/1000\relax
+ \expandafter\setstretch\expandafter{\strip at pt\@tempdima}%
+ }%
+ }{%
+ \PackageWarning{scrhack}{unknown \string\onehalfspacing\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported setpace version}%
+ }%
+}
+\scr at ifexpected{\doublespacing}{%
+ \long\def\doublespacing{%
+ \setstretch{1.667}% default
+ \ifcase \@ptsize \relax % 10pt
+ \setstretch {1.667}%
+ \or % 11pt
+ \setstretch {1.618}%
+ \or % 12pt
+ \setstretch {1.655}%
+ \fi
+ }%
+}{%
+ \renewcommand*{\doublespacing}{%
+ \@tempdima=\dimexpr (\f at size pt)*2000/
+ (\dimexpr \f at baselineskip\relax)*\p@/1000\relax
+ \expandafter\setstretch\expandafter{\strip at pt\@tempdima}%
+ }%
+}{%
+ \scr at ifexpected{\doublespacing}{%
+ \long\def\doublespacing{%
+ \setstretch {1.667}% default
+ \ifx\@ptsize\@undefined\else
+ \ifcase \@ptsize \relax % 10pt
+ \setstretch {1.667}%
+ \or % 11pt
+ \setstretch {1.618}%
+ \or % 12pt
+ \setstretch {1.655}%
+ \fi
+ \fi
+ }%
+ }{%
+ \renewcommand*{\doublespacing}{%
+ \@tempdima=\dimexpr (\f at size pt)*2000/
+ (\dimexpr \f at baselineskip\relax)*\p@/1000\relax
+ \expandafter\setstretch\expandafter{\strip at pt\@tempdima}%
+ }%
+ }{%
+ \PackageWarning{scrhack}{unknown \string\doublespacing\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported setpace version}%
+ }%
+}
+\endinput
+%%
+%% End of file `setspace.hak'.
Added: trunk/Master/texmf-dist/doc/latex/scrhack/standardsections.hak
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrhack/standardsections.hak (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/scrhack/standardsections.hak 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,568 @@
+%%
+%% This is file `standardsections.hak',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scrhack-2023-07-07.dtx (with options: `hack,standardsections,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,standardsections,body')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from standardsections.hak.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+\ProvidesFile{standardsections.hak}[%
+ 2024-04-17 v3.42
+ scrhack part
+ (defining standard LaTeX class section headings)%
+]
+\PackageWarningNoLine{scrhack}{%
+ You are loosing every kind of support because of\MessageBreak
+ using the dangerous standard classes sections hack!\MessageBreak
+ This hack can break several classes and packages.\MessageBreak
+ However, sometimes it is needed to make a\MessageBreak
+ package work%
+}%
+\PackageInfo{scrhack}{%
+ Using code from the standard LaTeX classes.\MessageBreak
+ For more information about this code and the\MessageBreak
+ license of this code, please see:\MessageBreak
+ https://ctan.org/tex-archive/macros/latex/base/classes.dtx
+}%
+\@ifpackageloaded{hyperref}{%
+ \PackageWarning{scrhack}{this hack should not be loaded after `hyperref'}%
+}{}
+\@ifpackageloaded{titlesec}{%
+ \PackageWarning{scrhack}{this hack should not be loaded after `titlesec'}%
+}{}
+\@ifpackageloaded{sectsty}{%
+ \PackageWarning{scrhack}{this hack should not be loaded after `sectsty'}%
+}{}
+\scr at ifundefinedorrelax{chapter}{%
+ \scr at ifundefinedorrelax{c at part}{\newcounter{part}}{}%
+ \scr at ifundefinedorrelax{c at section}{\newcounter{section}}{}%
+ \scr at ifundefinedorrelax{c at subsection}{\newcounter{subsection}[section]}{}%
+ \scr at ifundefinedorrelax{c at subsubsection}{%
+ \newcounter{subsubsection}[subsection]}{}%
+ \scr at ifundefinedorrelax{c at paragraph}{%
+ \newcounter{paragraph}[subsubsection]}{}%
+ \scr at ifundefinedorrelax{c at subparagraph}{%
+ \newcounter{subparagraph}[paragraph]}{}%
+ \renewcommand\thepart {\@Roman\c at part}%
+ \renewcommand\thesection {\@arabic\c at section}%
+ \renewcommand\thesubsection {\thesection.\@arabic\c at subsection}%
+ \renewcommand\thesubsubsection{\thesubsection.\@arabic\c at subsubsection}%
+ \renewcommand\theparagraph {\thesubsubsection.\@arabic\c at paragraph}%
+ \renewcommand\thesubparagraph {\theparagraph.\@arabic\c at subparagraph}%
+ \def\part{%
+ \if at noskipsec \leavevmode \fi
+ \par
+ \addvspace{4ex}%
+ \@afterindentfalse
+ \secdef\@part\@spart}%
+ \def\@part[#1]#2{%
+ \ifnum \c at secnumdepth >\m at ne
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c at secnumdepth >\m at ne
+ \Large\bfseries \partname\nobreakspace\thepart
+ \par\nobreak
+ \fi
+ \huge \bfseries #2%
+ \markboth{}{}\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}%
+ \def\@spart#1{%
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \huge \bfseries #1\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}%
+ \def\section{\@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\Large\bfseries}}%
+ \def\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\bfseries}}%
+ \def\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+}{%
+ \scr at ifundefinedorrelax{c at part}{\newcounter{part}}{}%
+ \scr at ifundefinedorrelax{c at chapter}{\newcounter{chapter}}{}%
+ \scr at ifundefinedorrelax{c at section}{\newcounter{section}[chapter]}{}%
+ \scr at ifundefinedorrelax{c at subsection}{\newcounter{subsection}[section]}{}%
+ \scr at ifundefinedorrelax{c at subsubsection}{%
+ \newcounter{subsubsection}[subsection]}{}%
+ \scr at ifundefinedorrelax{c at paragraph}{%
+ \newcounter{paragraph}[subsubsection]}{}%
+ \scr at ifundefinedorrelax{c at subparagraph}{%
+ \newcounter{subparagraph}[paragraph]}{}%
+ \def\@chapapp{\chaptername}%
+ \scr at ifundefinedorrelax{frontmatter}{%
+ \def\part{%
+ \if at openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ \thispagestyle{plain}%
+ \if at twocolumn
+ \onecolumn
+ \@tempswatrue
+ \else
+ \@tempswafalse
+ \fi
+ \null\vfil
+ \secdef\@part\@spart}
+
+ \def\@part[#1]#2{%
+ \ifnum \c at secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c at secnumdepth >-2\relax
+ \huge\bfseries \partname\nobreakspace\thepart
+ \par
+ \vskip 20\p@
+ \fi
+ \Huge \bfseries #2\par}%
+ \@endpart}
+ \def\@spart#1{%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \Huge \bfseries #1\par}%
+ \@endpart}
+ \def\@endpart{\vfil\newpage
+ \if at twoside
+ \if at openright
+ \null
+ \thispagestyle{empty}%
+ \newpage
+ \fi
+ \fi
+ \if at tempswa
+ \twocolumn
+ \fi}
+ \def\chapter{\if at openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{plain}%
+ \global\@topnum\z@
+ \@afterindentfalse
+ \secdef\@chapter\@schapter}
+ \def\@chapter[#1]#2{\ifnum \c at secnumdepth >\m at ne
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter}#1}%
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \if at twocolumn
+ \@topnewpage[\@makechapterhead{#2}]%
+ \else
+ \@makechapterhead{#2}%
+ \@afterheading
+ \fi}
+ \def\@makechapterhead#1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright \normalfont
+ \ifnum \c at secnumdepth >\m at ne
+ \huge\bfseries \@chapapp\space \thechapter
+ \par\nobreak
+ \vskip 20\p@
+ \fi
+ \interlinepenalty\@M
+ \Huge \bfseries #1\par\nobreak
+ \vskip 40\p@
+ }}
+ \def\@schapter#1{\if at twocolumn
+ \@topnewpage[\@makeschapterhead{#1}]%
+ \else
+ \@makeschapterhead{#1}%
+ \@afterheading
+ \fi}
+ \def\@makeschapterhead#1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright
+ \normalfont
+ \interlinepenalty\@M
+ \Huge \bfseries #1\par\nobreak
+ \vskip 40\p@
+ }}
+ \def\section{\@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\Large\bfseries}}%
+ \def\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\bfseries}}%
+ \def\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+ }{%
+ \scr at ifundefinedorrelax{if at mainmatter}{%
+ \expandafter\newif\csname if at mainmatter\endcsname
+ }{}%
+ \def\frontmatter{%
+ \cleardoublepage
+ \@mainmatterfalse
+ \pagenumbering{roman}}%
+ \def\mainmatter{%
+ \cleardoublepage
+ \@mainmattertrue
+ \pagenumbering{arabic}}%
+ \def\backmatter{%
+ \if at openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ \@mainmatterfalse}%
+ \def\part{%
+ \if at openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ \thispagestyle{plain}%
+ \if at twocolumn
+ \onecolumn
+ \@tempswatrue
+ \else
+ \@tempswafalse
+ \fi
+ \null\vfil
+ \secdef\@part\@spart}%
+
+ \def\@part[#1]#2{%
+ \ifnum \c at secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c at secnumdepth >-2\relax
+ \huge\bfseries \partname\nobreakspace\thepart
+ \par
+ \vskip 20\p@
+ \fi
+ \Huge \bfseries #2\par}%
+ \@endpart}%
+ \def\@spart#1{%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \Huge \bfseries #1\par}%
+ \@endpart}%
+ \def\@endpart{\vfil\newpage
+ \if at twoside
+ \if at openright
+ \null
+ \thispagestyle{empty}%
+ \newpage
+ \fi
+ \fi
+ \if at tempswa
+ \twocolumn
+ \fi}%
+ \def\chapter{\if at openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{plain}%
+ \global\@topnum\z@
+ \@afterindentfalse
+ \secdef\@chapter\@schapter}%
+ \def\@chapter[#1]#2{\ifnum \c at secnumdepth >\m at ne
+ \if at mainmatter
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter}#1}%
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \if at twocolumn
+ \@topnewpage[\@makechapterhead{#2}]%
+ \else
+ \@makechapterhead{#2}%
+ \@afterheading
+ \fi}%
+ \def\@makechapterhead#1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright \normalfont
+ \ifnum \c at secnumdepth >\m at ne
+ \if at mainmatter
+ \huge\bfseries \@chapapp\space \thechapter
+ \par\nobreak
+ \vskip 20\p@
+ \fi
+ \fi
+ \interlinepenalty\@M
+ \Huge \bfseries #1\par\nobreak
+ \vskip 40\p@
+ }}%
+ \def\@schapter#1{\if at twocolumn
+ \@topnewpage[\@makeschapterhead{#1}]%
+ \else
+ \@makeschapterhead{#1}%
+ \@afterheading
+ \fi}%
+ \def\@makeschapterhead#1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright
+ \normalfont
+ \interlinepenalty\@M
+ \Huge \bfseries #1\par\nobreak
+ \vskip 40\p@
+ }}%
+ \def\section{\@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\Large\bfseries}}%
+ \def\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\bfseries}}%
+ \def\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+ }%
+}% End of the derived code.
+\scr at ifundefinedorrelax{scr at saved@startsection}{}{%
+ \ifx\@startsection\scr at saved@startsection\else
+ \PackageWarningNoLine{scrhack}{%
+ Resetting \string\@startsection,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \let\@startsection\scr at saved@startsection
+ \fi
+}
+\scr at ifundefinedorrelax{scr at latex@sect}{}{%
+ \ifx\@sect\scr at latex@sect\else
+ \PackageWarningNoLine{scrhack}{%
+ Resetting \string\@sect,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \let\@sect\scr at latex@sect
+ \fi
+}
+\scr at ifundefinedorrelax{scr at latex@ssect}{}{%
+ \ifx\@ssect\scr at latex@ssect\else
+ \PackageWarningNoLine{scrhack}{%
+ Resetting \string\@ssect,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \let\@ssect\scr at latex@ssect
+ \fi
+}
+\scr at ifundefinedorrelax{scr at latex@xsect}{}{%
+ \ifx\@xsect\scr at latex@xsect\else
+ \PackageWarningNoLine{scrhack}{%
+ Resetting \string\@xsect,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \let\@xsect\scr at latex@xsect
+ \fi
+}
+\scr at ifundefinedorrelax{DeclareSectionCommand}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ \string\DeclareSectionCommand\space
+ and all derivates deactivated,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \let\DeclareSectionCommand\undefined
+ \let\DeclareSectionCommands\undefined
+ \let\RedeclareSectionCommand\undefined
+ \let\RedeclareSectionCommands\undefined
+ \let\DeclareNewSectionCommand\undefined
+ \let\DeclareNewSectionCommands\undefined
+ \let\ProvideSectionCommand\undefined
+ \let\ProvideSectionCommands\undefined
+}
+\let\scr at chapter@before at hyperref@patch\relax
+\let\scr at chapter@after at hyperref@patch\relax
+\scr at ifundefinedorrelax{scr at osectarg}{}{%
+ \def\reserved at a{0}%
+ \ifx\scr at osectarg\reserved at a\else
+ \let\scr at osectarg\reserved at a
+ \PackageWarningNoLine{scrhack}{%
+ Extended option handling for section commands deactivated,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \fi
+}%
+\scr at ifundefinedorrelax{scr at activate@xsection}{}{%
+ \renewcommand*{\scr at activate@xsection}[1]{%
+ \edef\scr at osectarg{#1}\def\reserved at a{0}%
+ \ifx\scr at osectarg\reserved at a
+ \else
+ \let\scr at osectarg\reserved at a
+ \PackageWarning{scrhack}{%
+ Because of loading the standard classes\MessageBreak
+ sections hack, the extended option handling\MessageBreak
+ of section commands failed%
+ }%
+ \fi
+ }%
+}
+\scr at ifundefinedorrelax{partformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ Usage of \string\partformat\space
+ deactivated,\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+}
+\scr at ifundefinedorrelax{chapterformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ Usage of \string\chapterformat\space
+ deactivated,\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+}
+\scr at ifundefinedorrelax{sectionformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ \string\sectionformat\space set to
+ `\string\thesection\string\quad',\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+ \renewcommand*{\sectionformat}{\thesection\quad}%
+}
+\scr at ifundefinedorrelax{subsectionformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ \string\subsectionformat\space set to
+ `\string\thesubsection\string\quad'\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+ \renewcommand*{\subsectionformat}{\thesubsection\quad}%
+}
+\scr at ifundefinedorrelax{subsubsectionformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ \string\subsubsectionformat\space set to
+ `\string\thesubsubsection\string\quad'\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+ \renewcommand*{\subsubsectionformat}{\thesubsubsection\quad}%
+}
+\scr at ifundefinedorrelax{paragraphformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ \string\paragraphformat\space set to
+ `\string\theparagraph\string\quad'\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+ \renewcommand*{\paragraphformat}{\theparagraph\quad}%
+}
+\scr at ifundefinedorrelax{subparagraphformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ \string\subparagraphformat\space set to
+ `\string\thesubparagraph\string\quad'\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+ \renewcommand*{\subparagraphformat}{\thesubparagraph\quad}%
+}
+\scr at ifundefinedorrelax{partlineswithprefixformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ Usage of \string\partlineswithprefixformat\space deactivated,\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+}
+\scr at ifundefinedorrelax{chapterlineswithprefixformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ Usage of \string\chapterlineswithprefixformat\space and\MessageBreak
+ \string\chapterlinesformat\space deactivated,\MessageBreak
+ because of using standard classes sections hack%
+ }%
+}
+\scr at ifundefinedorrelax{sectionlinesformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ Usage of \string\sectionlinesformat\space and\MessageBreak
+ \string\sectioncatchphraseformat\space deactivated,\MessageBreak
+ because of using standard classes sections hack%
+ }%
+}
+\scr at ifundefinedorrelax{KOMAClassName}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ KOMA-Script option `headings' removed,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \RelaxFamilyKey[.\KOMAClassFileName]{KOMA}{headings}%
+ \KOMA at kav@removekey{\KOMAClassFileName}{headings}%
+}
+\def\scr at class@titlesec at warning{%
+ \PackageWarning{scrhack}{%
+ Usage of `titlesec' should work, because of\MessageBreak
+ loading the standard classes sections hack.\MessageBreak
+ However, you should know, there is not any\MessageBreak
+ support for this combination by the\MessageBreak
+ KOMA-Script author%
+ }%
+}
+\endinput
+%%
+%% End of file `standardsections.hak'.
Added: trunk/Master/texmf-dist/source/latex/scrhack/scrhack-2023-07-07.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/scrhack/scrhack-2023-07-07.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/scrhack/scrhack-2023-07-07.dtx 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,2057 @@
+% \iffalse meta-comment
+% ======================================================================
+% scrhack-2023-07-07.dtx
+% Copyright © 2008–2023 Markus Kohm
+%
+% This work is a KOMA-Script spin-off. For the original sources of
+% KOMA-Script's `scrhack.sty' see file `scrhack.dtx' in the KOMA-Script
+% sources at <https://sourceforge.net/p/koma-script/code/>.
+%
+% Development is taking place as part of `scrhack' at
+% <https://github.com/komascript/third-party-enhancements>. New issues
+% should be reported there as well as known issues can be found.
+%
+% 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 the file `scrhack.dtx',
+% `scrhack-2023-07-07,dtx', and `README.md'.
+%
+% The recommended way to install `scrhack' is to use
+% the package manager of your TeX distribution.
+% ======================================================================
+%
+%<package&identify>%%% using: package,identify
+%<package&option>%%% using: package,option
+%<package&body>%%% using: package,body
+%<package&identity>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2023-06-28 10:28:26 +0200 (Mi, 28 Jun 2023) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 4063 $
+\endgroup
+\ProvidesFile{scrhack-2023-07-07.dtx}[\filedate\space\filerevision\space
+%</dtx>
+%<package&identify>\ProvidesPackage{scrhack}[%
+%<hyperref&identify>\ProvidesFile{hyperref.hak}[%
+%<float&identify>\ProvidesFile{float.hak}[%
+%<floatrow&identify>\ProvidesFile{floatrow.hak}[%
+%<listings&identify>\ProvidesFile{listings.hak}[%
+%<setspace&identify>\ProvidesFile{setspace.hak}[%
+%<lscape&identify>\ProvidesFile{lscape.hak}[%
+%<nomencl&identify>\ProvidesFile{nomencl.hak}[%
+%<standardsections&identify>\ProvidesFile{standardsections.hak}[%
+%<*dtx|identify>
+ 2024-04-17 v3.42
+%<*dtx>
+ source of
+%</dtx>
+%<*dtx|package>
+ legacy version of package scrhack%
+%</dtx|package>
+%<*hack>
+%<hack> scrhack part
+%<!standardsections> (hacking package
+%<hyperref&identify> hyperref)%
+%<float&identify> float)%
+%<floatrow&identify> floatrow)%
+%<listings&identify> listings)%
+%<setspace&identify> setspace)%
+%<lscape&identify> lscape)%
+%<nomencl&identify> nomencl)%
+%<standardsections&identify> (defining standard LaTeX class section headings)%
+%</hack>
+]
+%</dtx|identify>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input docstrip.tex
+ \generate{%
+ \file{scrhack-2023-07-07.sty}{%
+ \from{scrhack-2023-07-07.dtx}{package,identify}%
+ \from{scrhack-2023-07-07.dtx}{package,option}%
+ \from{scrhack-2023-07-07.dtx}{package,body}%
+ }%
+ \file{hyperref.hak}{%
+ \from{scrhack-2023-07-07.dtx}{hack,hyperref,identify}%
+ \from{scrhack-2023-07-07.dtx}{hack,hyperref,body}%
+ }%
+ \file{float.hak}{%
+ \from{scrhack-2023-07-07.dtx}{hack,float,identify}%
+ \from{scrhack-2023-07-07.dtx}{hack,float,body}%
+ }%
+ \file{floatrow.hak}{%
+ \from{scrhack-2023-07-07.dtx}{hack,floatrow,identify}%
+ \from{scrhack-2023-07-07.dtx}{hack,floatrow,body}%
+ }%
+ \file{listings.hak}{%
+ \from{scrhack-2023-07-07.dtx}{hack,listings,identify}%
+ \from{scrhack-2023-07-07.dtx}{hack,listings,body}%
+ }%
+ \file{setspace.hak}{%
+ \from{scrhack-2023-07-07.dtx}{hack,setspace,identify}%
+ \from{scrhack-2023-07-07.dtx}{hack,setspace,body}%
+ }%
+ \file{lscape.hak}{%
+ \from{scrhack-2023-07-07.dtx}{hack,lscape,identify}%
+ \from{scrhack-2023-07-07.dtx}{hack,lscape,body}%
+ }%
+ \file{nomencl.hak}{%
+ \from{scrhack-2023-07-07.dtx}{hack,nomencl,identify}%
+ \from{scrhack-2023-07-07.dtx}{hack,nomencl,body}%
+ }%
+ \file{standardsections.hak}{%
+ \from{scrhack-2023-07-07.dtx}{hack,standardsections,identify}%
+ \from{scrhack-2023-07-07.dtx}{hack,standardsections,body}%
+ }%
+ }
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+\documentclass[USenglish]{koma-script-source-doc}
+\usepackage{babel}
+\setcounter{StandardModuleDepth}{2}
+\begin{document}
+ \DocInput{scrhack-2023-07-07.dtx}
+\end{document}
+%</dtx>
+%\fi
+%
+% \changes{v3.03}{2009/03/12}{first version ever}
+% \changes{v3.36}{2022/02/08}{switch over from \cls*{scrdoc} to
+% \cls*{koma-script-source-doc}}
+% \changes{v3.36}{2022/02/08}{require package \pkg*{scrlogo} instead of
+% defining \cs{KOMAScript}}
+% \changes{v3.36}{2022/02/08}{whole implementation documentation in English}
+% \changes{v3.40}{2023/04/17}{guide names changed}
+%
+% \GetFileInfo{scrhack.dtx}
+% \title{Legacy Version of Package \pkg*{scrhack}}
+% \author{\href{mailto:komascript at gmx.info}{Markus Kohm}}
+% \date{2023-07-15}
+% \maketitle
+% \tableofcontents
+%
+% \section{User Manual}
+%
+% You can find the user manual of the legacy version in
+% \href{file:scrhack.pdf}{the manual of \pkg*{scrhack}}.
+%
+% \MaybeStop{\PrintIndex}
+%
+% \section{Implementation of the Legacy Version of
+% \texorpdfstring{\pkg*{scrhack}}{scrhack}}
+%
+% \changes{v3.04b}{2009/08/05}{order of commands/macros and options changed}
+%
+% \subsection{Options}
+%
+% The package uses \cs{KOMAoptions} of \pkg*{scrkbase} and needs at least the
+% one of \KOMAScript{} v3.39:
+% \begin{macrocode}
+%<*package&option>
+\RequirePackage{scrkbase}[2022-11-11]
+\@ifpackagelater{scrkbase}{2023-07-14}{%
+ \PackageInfo{scrhack}{KOMA-Script >= 3.42 detected.\MessageBreak
+ In this case you should not use this legacy version of\MessageBreak
+ scrhack, but should be able to use the current version\MessageBreak
+ or even replace loading scrhack by loading really\MessageBreak
+ needed third-party patches, e.g., floatbytocbasic.\MessageBreak
+ But you are the boss ..}%
+}{%
+ \@ifpackagelater{scrkbase}{2022-11-11}{%
+ \PackageWarningNoLine{scrhack}{KOMA-Script < 3.42 detected.\MessageBreak
+ In this case the original scrhack of that version\MessageBreak
+ should also be installed and used instead of this\MessageBreak
+ legacy package}%
+ }{%
+ \PackageError{scrhack}{incompatible KOMA-Script < v3.39 detected}{%
+ This error is fatal!\MessageBreak
+ Loading of scrhack will be aborted!}%
+ \expandafter\let\csname ver at scrhack.sty\endcsname\undefined
+ \endinput
+ }%
+}
+%</package&option>
+% \end{macrocode}
+% The options allow the selection of the used manipulations of other
+% packages. But all these options are valid only until both \pkg*{scrhack} and
+% the other package has been loaded. Later settings are invalid.
+%
+%
+% \subsection{Used Macros and Commands}
+% \label{sec:macros}
+% \begin{macrocode}
+%<*package&body>
+% \end{macrocode}
+%
+% \begin{macro}{\scr at ifexpected}
+% Mentioned to do (re)definitions only, if local execution of code does not
+% change a command. Concrete, if (local) execution of \marg{test code} of
+% \begin{quote}
+% \cs{scr at ifexpected}\marg{command}\marg{test code}\marg{then
+% code}\marg{else code}
+% \end{quote}
+% would not result in a change of \cs{\meta{command}}, the \marg{then code}
+% will be executed, otherwise the \marg{else code}.
+% \begin{description}\item[Note:] \meta{test code} must not have any global
+% side effect!\end{description}
+% \begin{macrocode}
+\newcommand{\scr at ifexpected}[2]{%
+ \begingroup
+ \let\@tempa#1
+ #2
+ \ifx\@tempa#1
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scr at hack@load}
+% Conditionally loading of a hack file.
+% \begin{quote}
+% \cs{scr at hack@load}\marg{extension}\marg{basename}\marg{hack}%
+% \marg{true code}\marg{false code}
+% \end{quote}
+% The first two arguments \marg{} and \marg{extension} and \marg{basename} are
+% same to the internal\LaTeX{} kernel command \cs{@ifl at aded}. With \LaTeX{}
+% from 2021/11/15 we even could use \cs{@ifl at aded} for the test, because it is
+% not restricted to the preamble any more. But because it is restricted with
+% older \LaTeX{} kernels, we test the definition of
+% \cs{ver@}\meta{basename}\texttt{.}\meta{extension}. If it is defined, we
+% also test the definition of \cs{ver@}\meta{basename}\texttt{.hak}. If this
+% is not defined, \file{\meta{hack}.hak} is loaded and \meta{true code} is
+% executed. Otherwise \meta{false code} is executed. This means: A hack file
+% is only loaded, if a class or package (or other file with version) has
+% already been loaded, but the hack file has not already been loaded.
+% \begin{macrocode}
+\newcommand*{\scr at hack@load}[2]{%
+ \expandafter\ifx\csname ver@#2.#1\endcsname\relax
+ \expandafter\@secondoftwo
+ \else
+% \end{macrocode}
+% Load a hack only once.
+% \begin{macrocode}
+ \expandafter\ifx\csname ver@#2.hak\endcsname\relax
+ \expandafter\expandafter\expandafter\@firstoftwo
+ \else
+ \expandafter\expandafter\expandafter\@secondoftwo
+ \fi
+ \fi
+ {%
+ \PackageInfo{scrhack}{loading #2 hack}%
+ \edef\reserved at a{%
+ \noexpand\makeatletter\noexpand\input{#2.hak}%
+ \noexpand\catcode`\noexpand\@\the\catcode`\@\relax
+ }\reserved at a
+ }{%
+ \PackageInfo{scrhack}{ignorring #2 hack}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package&body>
+% \end{macrocode}
+%
+% \subsection{The \texorpdfstring{\pkg*{hyperref}}{hyperref} hack}
+%
+% Package \pkg{hyperref} places the anchor of the star variant of a heading
+% after the heading, but the anchor of the normal variant before the heading
+% even if the heading is not numbered because of the value of
+% \cnt{secnumdepth}. The hack changes this to more consistent placing always
+% before the heading.
+%
+% \begin{option}{hyperref}
+% \changes{v3.12}{2013/03/05}{using \cs{FamilyKeyStateProcessed}}
+% \changes{v3.17}{2015/03/09}{defaults by \cs{KOMAExecuteOptions}}
+% \begin{macrocode}
+%<*package&option>
+\KOMA at ifkey{hyperref}{@scrhack at hyperref}%
+\KOMAExecuteOptions{hyperref=true}%
+%</package&option>
+% \end{macrocode}
+% \changes{v3.04b}{2009/11/09}{loading \pkg{hyperref} hack earlier}
+% \changes{v3.17}{2015/03/09}{auto deactivation for newer versions of
+% \pkg{hyperref}}
+% \changes{v3.18}{2015/05/22}{newer versions of \KOMAScript{} classes also
+% deactivate the the hack}
+% \changes{v3.39}{2022/11/11}{initial dot in member argument of \cs{KOMA at key}
+% and \cs{KOMAExecuteOptions} removed}
+% This is a little bit tricky, because \pkg{hyperref} loads the driver file
+% via \cs{AtEndOfPackage} and the hack cannot be loaded before loading the
+% driver file. Using \cs{AfterPackage*} would not be good enough therefore,
+% because it would load the hack before the driver file. But using
+% \cs{AtEndOfPackage} inside \cs{AfterPackage*} should delay the loading
+% enough. This also works, if \pkg{hyperref} has already been loaded. In this
+% case the code will be executed at the end of \pkg*{scrhack} instead of
+% \pkg{hyperref}. This is no problem.
+% \begin{macrocode}
+%<*package&body>
+\BeforePackage{hyperref}{%
+ \scr at ifundefinedorrelax{hy at insteadofrefstepcounter}{}{%
+ \PackageInfo{scrhack}{hyperref hack deactivated because of\MessageBreak
+ detection of KOMA-Script class, that doesn't\MessageBreak
+ need that hack,}%
+ \KOMAExecuteOptions[scrhack.sty]{hyperref=false}%
+ }%
+}
+\AfterPackage*{hyperref}{%
+ \if at scrhack@hyperref
+ \@ifpackagelater{hyperref}{2009/11/24}{%
+ \PackageInfo{scrhack}{hyperref hack deactivated because of\MessageBreak
+ detection of hyperref version, that doesn't\MessageBreak
+ need that hack,}%
+ \KOMAExecuteOptions[scrhack.sty]{hyperref=false}%
+ }{%
+ \AtEndOfPackage{%
+ \KOMA at key[scrhack.sty]{hyperref}[true]{%
+ \PackageWarning{scrhack}{option `hyperref=#1' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if at scrhack@hyperref\scr at hack@load\@pkgextension{hyperref}\fi
+ }%
+ }%
+ \fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}
+%
+%
+% \begin{macro}{\@schapter,\@spart,\@ssect}
+% We do not hack \pkg{hyperref} itself, but the driver files. After loading
+% \pkg{hyperref} the driver file is also loaded. Moreover, all driver files
+% that re-define these commands have to be patched also. So the patch is
+% related to the loading of \pkg{hyperref} instead of every single driver
+% file. This have already been tested by \cs{scr at hack@load}. So we just have
+% to test, whether the definition of these commands are the expected one.
+% derzeit den erwarteten Inhalt haben.
+% \begin{macrocode}
+%<*hyperref&body>
+\scr at ifexpected\@schapter{%
+ \def\@schapter#1{%
+ \H at old@schapter{#1}%
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \Hy at GlobalStepCount\Hy at linkcounter
+ \xdef\@currentHref{\Hy at chapapp*.\the\Hy at linkcounter}%
+ \Hy at raisedlink{%
+ \hyper at anchorstart{\@currentHref}\hyper at anchorend
+ }%
+ \endgroup
+ }%
+}{%
+ \PackageInfo{scrhack}{redefining \string\@schapter}%
+ \def\@schapter#1{%
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \Hy at GlobalStepCount\Hy at linkcounter
+ \xdef\@currentHref{\Hy at chapapp*.\the\Hy at linkcounter}%
+ \Hy at raisedlink{%
+ \hyper at anchorstart{\@currentHref}\hyper at anchorend
+ }%
+ \endgroup
+ \H at old@schapter{#1}%
+ }%
+}{%
+ \scr at ifexpected\@schapter{%
+ \def\@schapter#1{%
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \Hy at GlobalStepCount\Hy at linkcounter
+ \xdef\@currentHref{\Hy at chapapp*.\the\Hy at linkcounter}%
+ \Hy at raisedlink{%
+ \hyper at anchorstart{\@currentHref}\hyper at anchorend
+ }%
+ \endgroup
+ \H at old@schapter{#1}%
+ }%
+ }{}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\@schapter\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported hyperref version}%
+ }%
+}
+\scr at ifexpected\@spart{%
+ \def\@spart#1{%
+ \H at old@spart{#1}%
+ \Hy at GlobalStepCount\Hy at linkcounter
+ \xdef\@currentHref{part*.\the\Hy at linkcounter}%
+ \Hy at raisedlink{%
+ \hyper at anchorstart{\@currentHref}\hyper at anchorend
+ }%
+ }%
+}{%
+ \PackageInfo{scrhack}{redefining \string\@spart}%
+ \def\@spart#1{%
+ \Hy at GlobalStepCount\Hy at linkcounter
+ \xdef\@currentHref{part*.\the\Hy at linkcounter}%
+ \Hy at raisedlink{%
+ \hyper at anchorstart{\@currentHref}\hyper at anchorend
+ }%
+ \H at old@spart{#1}%
+ }%
+}{%
+ \scr at ifexpected\@spart{%
+ \def\@spart#1{%
+ \Hy at GlobalStepCount\Hy at linkcounter
+ \xdef\@currentHref{part*.\the\Hy at linkcounter}%
+ \Hy at raisedlink{%
+ \hyper at anchorstart{\@currentHref}\hyper at anchorend
+ }%
+ \H at old@spart{#1}%
+ }%
+ }{}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\@spart\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported hyperref version}%
+ }%
+}
+\scr at ifexpected\@ssect{%
+ \def\@ssect#1#2#3#4#5{%
+ \H at old@ssect{#1}{#2}{#3}{#4}{#5}%
+ \phantomsection
+ }%
+}{%
+ \PackageInfo{scrhack}{redefining \string\@ssect}%
+ \def\@ssect#1#2#3#4#5{%
+ \H at old@ssect{#1}{#2}{#3}{#4}{\phantomsection\ignorespaces#5}%
+ }%
+}{%
+ \scr at ifexpected\@ssect{%
+ \def\@ssect#1#2#3#4#5{%
+ \H at old@ssect{#1}{#2}{#3}{#4}{\phantomsection\ignorespaces#5}%
+ }%
+ }{}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\@ssect\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported hyperref version}%
+ }%
+}
+%</hyperref&body>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{The \texorpdfstring{\pkg*{floatrow}}{floatrow} hack}
+%
+% Package \pkg{floatrow} insists in using \cs{float at listhead} for the setting
+% of the headings. This is not recommended any longer since \KOMAScript~2.95
+% from July 2006! The \KOMAScript{} classes will remove the support for
+% this very limited approach. Recommended is the usage of \pkg*{tocbasic}. The
+% effort to do so, it very small and I do not understand, why package authors
+% are not willing to use it. Because the benefit would be a lot.
+%
+% This hack adds \pkg*{tocbasic} usage to \pkg{floatrow}. Nevertheless it is
+% more complicated than adding \pkg*{tocbasic} support into \pkg{floatrow}.
+%
+% \begin{option}{floatrow}
+% \changes{v3.12}{2013/03/05}{using \cs{FamilyKeyStateProcessed}}
+% \changes{v3.17}{2015/03/09}{using \cs{KOMAExecuteOptions}}
+% \changes{v3.34}{2021/06/03}{deactivation of the \pkg{float} hack}
+% \changes{v3.39}{2022/11/11}{initial dot in member argument of \cs{KOMA at key}
+% removed}
+% \begin{macrocode}
+%<*package&option>
+\KOMA at ifkey{floatrow}{@scrhack at floatrow}
+\KOMAExecuteOptions{floatrow=true}
+%</package&option>
+%<*package&body>
+\AfterPackage*{floatrow}{%
+ \KOMAoptions{float=false}%
+ \PackageInfo{scrhack}{option `float' deactivated}%
+ \KOMA at key[scrhack.sty]{floatrow}{%
+ \PackageWarning{scrhack}{option `floatrow' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if at scrhack@floatrow\scr at hack@load\@pkgextension{floatrow}\fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}
+%
+%
+% \begin{command}{\DeclareNewFloatType,\listof}
+% \changes{v3.25}{2018/03/16}{using \cs{DeclareTOCStyleEntry}}
+% Command \cs{DeclareNewFloatType} is used to define a new float
+% environment. We have to add registration of the file extension (third
+% argument) with \pkg*{tocbasic}.
+% Command \cs{listof} outputs the list of the float environments. Here we
+% just use the corresponding macro of \pkg*{tocbasic}.
+% \begin{macro}{\float at addtolists}
+% The deprecated macro \cs{float at addtolists} is not needed any longer an will
+% be reset to the original definition.
+% \begin{macrocode}
+%<*floatrow&body>
+\scr at ifexpected{\DeclareNewFloatType}{%
+ \long\def\DeclareNewFloatType#1#2{\def\FB at captype{#1}%
+ \expandafter\edef\csname ftype@#1\endcsname{\the\c at float@type}%
+ \addtocounter{float at type}{\value{float at type}}%
+ \@namedef{#1name}{#1}\newcounter{#1}%
+ \expandafter\edef\csname fnum@#1\endcsname
+ {\expandafter\noexpand\csname #1name\endcsname\nobreakspace
+ \expandafter\noexpand\csname the#1\endcsname}%
+ \@namedef{the#1}{\arabic{#1}}\flnew at ext{lo#1}\@namedef{fps@#1}{tbp}%
+ \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}%
+ \caption at setkeys[floatrow]{newfloat}{#2}\let\FR at tmp=\relax
+ \xdef\@tempa{\noexpand\flrow at types{\the\flrow at types \FR at tmp{#1}}}%
+ \@tempa}%
+}{%
+ \scr at ifexpected{\listof}{%
+ \def\listof#1#2{%
+ \@ifundefined{ext@#1}{\flrow at error{Unknown float style `#1'}}{%
+ \expandafter\providecommand\csname l@#1\endcsname
+ {\@dottedtocline{1}{1.5em}{2.3em}}%
+ \float at listhead{#2}%
+ \begingroup\setlength{\parskip}{\z@}%
+ \@starttoc{\@nameuse{ext@#1}}%
+ \endgroup}}%
+ }{%
+ \RequirePackage{tocbasic}%
+ \PackageInfo{scrhack}{redefining \string\DeclareNewFloatType}%
+% \end{macrocode}
+% \begin{description}
+% \item[Note:] It would be better to first test, if the new extension is
+% already in use like done at the \pkg{float} hack. But I don't know the
+% \pkg{floatrow} code good enough to make such a change!
+% \end{description}
+% \begin{macrocode}
+ \renewcommand\DeclareNewFloatType[2]{\def\FB at captype{#1}%
+ \expandafter\edef\csname ftype@#1\endcsname{\the\c at float@type}%
+ \addtocounter{float at type}{\value{float at type}}%
+ \@namedef{#1name}{#1}\newcounter{#1}%
+ \expandafter\edef\csname fnum@#1\endcsname
+ {\expandafter\noexpand\csname #1name\endcsname\nobreakspace
+ \expandafter\noexpand\csname the#1\endcsname}%
+ \@namedef{the#1}{\arabic{#1}}\flnew at ext{lo#1}\@namedef{fps@#1}{tbp}%
+ \DeclareTOCStyleEntry[level=1,numwidth=2.3em,indent=1.5em]{default}{#1}%
+ \caption at setkeys[floatrow]{newfloat}{#2}\let\FR at tmp=\relax
+ \xdef\@tempa{\noexpand\flrow at types{\the\flrow at types \FR at tmp{#1}}}%
+ \@tempa
+ \xdef\@tempa{\noexpand\addtotoclist[float]{\@nameuse{ext@\FB at captype}}%
+ \noexpand\setuptoc{\@nameuse{ext@\FB at captype}}{chapteratlist}%
+ }%
+ \@tempa
+ }%
+ \PackageInfo{scrhack}{redefining \string\listof}%
+ \renewcommand*\listof[2]{%
+ \@ifundefined{ext@#1}{\flrow at error{Unknown float style `#1'}}{%
+ \@ifundefined{l@#1}{\expandafter\let\csname l@#1\endcsname\l at figure
+ \@ifundefined{l@#1}{%
+ \DeclareTOCStyleEntry[level=1,numwidth=2.3em,indent=1.5em]
+ {default}{#1}%
+ }{}%
+ }{}%
+ \listoftoc[{#2}]{\csname ext@#1\endcsname}%
+ }%
+ }%
+ \scr at ifexpected{\float at addtolists}{%
+ \long\def\float at addtolists#1{%
+ \def\float at do##1{\addtocontents{##1}{#1}} \the\float at exts}%
+ }{%
+ \PackageInfo{scrhack}{undefining \string\float at addtolists}%
+ \let\float at addtolists\relax
+ }{%
+ \PackageWarningNoLine{scrhack}{unkown \string\float at addtolists\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported floatrow version}%
+ }%
+ }{%
+ \PackageWarningNoLine{scrhack}{unknown \string\listof\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported floatrow version}%
+ }%
+}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\DeclareNewFloatType\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported floatrow version}%
+}
+%</floatrow&body>
+% \end{macrocode}
+% \end{macro}
+% \end{command}
+%
+%
+% \subsection{The \texorpdfstring{\pkg*{float}}{float} hack}
+%
+% Package \pkg{float} insists in using \cs{float at listhead} for the setting
+% of the headings. This is not recommended any longer since \KOMAScript~2.95
+% from July 2006! The \KOMAScript{} classes will remove the support for
+% this very limited approach. Recommended is the usage of \pkg*{tocbasic}. The
+% effort to do so, it very small and I do not understand, why package authors
+% are not willing to use it. Because the benefit would be a lot.
+%
+% This hack adds \pkg*{tocbasic} usage to \pkg{float}. Nevertheless it is
+% more complicated than adding \pkg*{tocbasic} support into \pkg{float}.
+%
+% \begin{option}{float}
+% \changes{v3.12}{2013/03/05}{using \cs{FamilyKeyStateProcessed}}
+% \changes{v3.17}{2015/03/09}{using \cs{KOMAExecuteOptions}}
+% \changes{v3.39}{2022/11/11}{initial dot in member argument of \cs{KOMA at key}
+% removed}
+% \begin{macrocode}
+%<*package&option>
+\KOMA at ifkey{float}{@scrhack at float}%
+\KOMAExecuteOptions{float=true}%
+%</package&option>
+%<*package&body>
+\AfterPackage*{float}{%
+ \KOMA at key[scrhack.sty]{float}{%
+ \PackageWarning{scrhack}{option `float' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if at scrhack@float\scr at hack@load\@pkgextension{float}\fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}
+%
+%
+% \begin{command}{\newfloat}
+% \changes{v3.28}{2019/11/19}{\cs{ifattoclist} replaced by
+% \cs{Ifattoclist}}
+% \changes{v3.25}{2018/03/16}{using \cs{DeclareTOCStyleEntry}}
+% We have to add registration of the file extension (third argument of
+% \cs{newfloat}) with \pkg*{tocbasic}.
+% \begin{command}{\listof}
+% Command \cs{listof} outputs the list of the float environments. Here we
+% just use the corresponding macro of \pkg*{tocbasic}.
+% \begin{macro}{\float at addtolists}
+% The deprecated macro \cs{float at addtolists} is not needed any longer an will
+% be reset to the original definition.
+% \begin{macrocode}
+%<*float&body>
+\scr at ifexpected{\newfloat}{%
+ \long\def\newfloat#1#2#3{\@namedef{ext@#1}{#3}
+ \let\float at do=\relax
+ \xdef\@tempa{\noexpand\float at exts{\the\float at exts \float at do{#3}}}%
+ \@tempa
+ \floatplacement{#1}{#2}%
+ \@ifundefined{fname@#1}{\floatname{#1}{#1}}{}
+ \expandafter\edef\csname ftype@#1\endcsname{\value{float at type}}%
+ \addtocounter{float at type}{\value{float at type}}
+ \restylefloat{#1}%
+ \expandafter\edef\csname fnum@#1\endcsname%
+ {\expandafter\noexpand\csname fname@#1\endcsname{}
+ \expandafter\noexpand\csname the#1\endcsname}
+ \@ifnextchar[%]
+ {\float at newx{#1}}%
+ {\@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}%
+ {}}}%
+}{%
+ \scr at ifexpected{\listof}{%
+ \def\listof#1#2{%
+ \@ifundefined{ext@#1}{\float at error{#1}}{%
+ \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}%
+ \float at listhead{#2}%
+ \begingroup\setlength{\parskip}{\z@}%
+ \@starttoc{\@nameuse{ext@#1}}%
+ \endgroup}}%
+ }{%
+ \RequirePackage{tocbasic}%
+ \PackageInfo{scrhack}{redefining \string\newfloat}%
+ \renewcommand\newfloat[3]{%
+ \Ifattoclist{#3}{%
+ \PackageError{scrhack}{extension `#3' already in use}{%
+ Each extension may be used only once.\MessageBreak
+ You, the class, or another package already uses extension
+ `#3'.\MessageBreak
+ \string\newfloat\space command will be ignored!}%
+ }{%
+ \addtotoclist[float]{#3}%
+ \setuptoc{#3}{chapteratlist}%
+ \@namedef{ext@#1}{#3}%
+ \let\float at do=\relax
+ \xdef\@tempa{\noexpand\float at exts{\the\float at exts \float at do{#3}}}%
+ \@tempa
+ \floatplacement{#1}{#2}%
+ \@ifundefined{fname@#1}{\floatname{#1}{#1}}{}%
+ \expandafter\edef\csname ftype@#1\endcsname{\value{float at type}}%
+ \addtocounter{float at type}{\value{float at type}}
+ \restylefloat{#1}%
+ \expandafter\edef\csname fnum@#1\endcsname%
+ {\expandafter\noexpand\csname fname@#1\endcsname{}
+ \expandafter\noexpand\csname the#1\endcsname}%
+ \@ifnextchar[%]
+ {\float at newx{#1}}%
+ {\@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}%
+ {}}}%
+ }%
+ \PackageInfo{scrhack}{redefining \string\listof}%
+ \renewcommand*\listof[2]{%
+ \@ifundefined{ext@#1}{\float at error{#1}}{%
+ \@ifundefined{l@#1}{\expandafter\let\csname l@#1\endcsname\l at figure
+ \@ifundefined{l@#1}{%
+ \DeclareTOCStyleEntry[level=1,numwidth=2.3em,indent=1.5em]
+ {default}{#1}%
+ }{}%
+ }{}%
+ \listoftoc[{#2}]{\csname ext@#1\endcsname}%
+ }%
+ }%
+ \scr at ifexpected{\float at addtolists}{%
+ \long\def\float at addtolists#1{%
+ \def\float at do##1{\addtocontents{##1}{#1}} \the\float at exts}%
+ }{%
+ \PackageInfo{scrhack}{undefining \string\float at addtolists}%
+ \let\float at addtolists\relax
+ }{%
+ \PackageWarningNoLine{scrhack}{unkown \string\float at addtolists\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported float version}%
+ }%
+ }{%
+ \PackageWarningNoLine{scrhack}{unknown \string\listof\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported float version}%
+ }%
+}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\newfloat\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported float version}%
+}
+%</float&body>
+% \end{macrocode}
+% \end{macro}
+% \end{command}
+% \end{command}
+%
+%
+% \subsection{The \texorpdfstring{\pkg*{listings}}{listings} hack}
+%
+% Package \pkg{listing} insists in using \cs{float at listhead} for the setting
+% of the headings. This is not recommended any longer since \KOMAScript~2.95
+% from July 2006! The \KOMAScript{} classes will remove the support for
+% this very limited approach. Recommended is the usage of \pkg*{tocbasic}. The
+% effort to do so, it very small and I do not understand, why package authors
+% are not willing to use it. Because the benefit would be a lot.
+%
+% This hack adds \pkg*{tocbasic} usage to old versions of
+% \pkg{listings}. Nevertheless it is more complicated than adding
+% \pkg*{tocbasic} support into \pkg{listings}.
+%
+% \begin{option}{listings}
+% \changes{v3.12}{2013/03/05}{using \cs{FamilyKeyStateProcessed}}
+% \changes{v3.17}{2015/03/09}{using \cs{KOMAExecuteOptions}}
+% \changes{v3.39}{2022/11/11}{initial dot in member argument of \cs{KOMA at key}
+% removed}
+% \changes{v3.42}{2024/04/17}{automatic deactivation for new \pkg{listings}}
+% Note: The deactivation of the hack for new version of \pkg{listings} cannot
+% be done comparing the \pkg{listings} version, because \pkg{listings} version
+% 1.10 uses \cs{AtEndOfPackage} for \cs{ProvidesPackage} and therefore the
+% version is not defined when the after package hook is executed. So we test
+% instead the \pkg{lstmisc} version.
+% \begin{macrocode}
+%<*package&option>
+\KOMA at ifkey{listings}{@scrhack at listings}
+\KOMAExecuteOptions{listings=true}
+%</package&option>
+%<*package&body>
+\AfterPackage*{listings}{%
+ \@ifpackagelater{lstmisc}{2024/02/15}{%
+ \PackageInfo{scrhack}{listings hack deactivated because of\MessageBreak
+ detection of listings version, that doesn't\MessageBreak
+ need that hack,}%
+ \KOMAExecuteOptions[scrhack.sty]{listings=false}%
+ }{%
+ \if at scrhack@listings\scr at hack@load\@pkgextension{listings}\fi
+ }%
+ \KOMA at key[scrhack.sty]{listings}[true]{%
+ \PackageWarning{scrhack}{option `listings=#1' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}
+%
+%
+% \begin{macro}{\scr at do@hack at listings}
+% \changes{v3.41}{2023/06/28}{patching \cs{lst at MakeCaption} to use
+% \cs{ext at lstlisting}}
+% \begin{command}{\lstlistoflistings}
+% \cs{scr at do@hack at listings} patches \pkg{listings} to use \pkg*{tocbasic} for
+% the whole output of the list of listings. This adds several new features to
+% \pkg{listings}.
+% \begin{macro}{\ext at lstlisting,\lst at MakeCaption,\float at addtolists}
+% Macro \cs{ext at lstlisting} is defined, to make \cs{captionof} work with
+% argument \texttt{lstlisting}. Additionally \cs{lst at MakeCaption} is patched
+% to use the new macro. The deprecated macro \cs{float at addtolists} is not
+% needed any longer an will be reset to the original definition. But, because
+% \pkg{listings} delays the redefinition with \cs{AtBeginDocument} we have to
+% do the same here.
+% \begin{macrocode}
+%<*listings&body>
+\newcommand*{\scr at do@hack at listings}{%
+ \RequirePackage{tocbasic}%
+ \addtotoclist[float]{lol}%
+ \setuptoc{lol}{chapteratlist}%
+ \PackageInfo{scrhack}{redefining \string\lstlistoflistings}%
+ \renewcommand*{\lstlistoflistings}{\listoftoc[{\lstlistlistingname}]{lol}}%
+ \providecommand*{\ext at lstlisting}{lol}%
+ \@tempswafalse
+ \xpatchcmd\lst at MakeCaption
+ {\addcontentsline{lol}}%
+ {\addcontentsline{\ext at lstlisting}}%
+ {\PackageInfo{scrhack}{patching \string\lst at MakeCaption}\@tempswatrue}%
+ {\PackageWarning{scrhack}{cannot patch \string\lst at MakeCaption}}%
+ \@whilesw\if at tempswa\fi{%
+ \xpatchcmd\lst at MakeCaption
+ {\addcontentsline{lol}}%
+ {\addcontentsline{\ext at lstlisting}}%
+ {}%
+ {\@tempswafalse}%
+ }%
+ \AtBeginDocument{%
+ \scr at ifexpected{\float at addtolists}{%
+ \def\float at addtolists##1{\addtocontents{lol}{##1}}%
+ }{%
+ \PackageInfo{scrhack}{undefining \string\float at addtolists}%
+ \let\float at addtolists\relax
+ }{%
+ \scr at ifexpected{\float at addtolists}{%
+ \def\float at addtolists##1{\addtocontents{lol}{##1}%
+ \orig at float@addtolists{##1}}%
+ }{%
+ \PackageInfo{scrhack}{setting \string\float at addtolists\MessageBreak
+ to \string\orig at float@addtolists}%
+ \let\float at addtolists\orig at float@addtolists
+ }{%
+ \PackageWarningNoLine{scrhack}{unkown \string\float at addtolists\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported listings version}%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% \begin{macro}{\lst at makecaption}
+% \changes{v3.30}{2020/04/01}{setting of \cs{@captype} added}
+% From version~3.30 setting of \cs{@captype} to \texttt{lstlisting} is added
+% to \cs{lst at makecaption}. This adds support for usage of
+% \cs{raggedlstlistingcaption} (if the user or a package author defines
+% it). The change is a little bit dangerous, because it will break, if
+% \pkg{listings} would add an argument to \cs{lst at makecaption}.
+% \begin{macrocode}
+ \expandafter\def\expandafter\lst at makecaption\expandafter{%
+ \expandafter\def\expandafter\@captype\expandafter{%
+ \expandafter l\expandafter s\expandafter t\expandafter l%
+ \expandafter i\expandafter s\expandafter t\expandafter i%
+ \expandafter n\expandafter g\expandafter}\lst at makecaption
+ }%
+ \let\scr at do@hack at listings\relax
+}
+\scr at ifexpected{\lstlistoflistings}{%
+ \def\lstlistoflistings{\bgroup
+ \let\contentsname\lstlistlistingname
+ \let\lst at temp\@starttoc \def\@starttoc##1{\lst at temp{lol}}%
+ \tableofcontents \egroup}%
+}{%
+ \scr at do@hack at listings
+}{%
+ \scr at ifexpected{\lstlistoflistings}{%
+ \def\lstlistoflistings{%
+ \begingroup
+ \@ifundefined{@restonecoltrue}{}{%
+ \if at twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ }%
+ \float at listhead{\lstlistlistingname}%
+ \parskip\z@\parindent\z@\parfillskip \z@ \@plus 1fil%
+ \@starttoc{lol}%
+ \@ifundefined{@restonecoltrue}{}{%
+ \if at restonecol\twocolumn\fi
+ }%
+ \endgroup
+ }%
+ }{%
+ \scr at do@hack at listings
+ }{%
+ \PackageWarningNoLine{scrhack}{unknown \string\lstlistoflistings\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported listings version}%
+ }%
+}
+%</listings&body>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{command}
+% \end{macro}
+%
+%
+%
+% \subsection{The \texorpdfstring{\pkg*{nomencl}}{nomencl} hack}
+%
+% With package \pkg{nomencl} and the \KOMAScript{} classes there is only a
+% small disharmony between relating the ToC entry. Nevertheless the package
+% can benefit from using \pkg*{tocbasic}.
+%
+% This hack adds \pkg*{tocbasic} usage to \pkg{nomencl}. This is done using
+% \pkg{xpatch} Nevertheless it is much more complicated than adding real
+% \pkg*{tocbasic} support into \pkg{nomencl}. The mess is, that every new
+% release of \pkg{nomencl} changes the kind of ``support'' of
+% \pkg*{tocbasic}. For some versions there isn't any such support. Other
+% versions use \pkg*{tocbasic} if it has been loaded. Other versions need an
+% option to activate usage of \pkg*{tocbasic}. So don't expect that the
+% following hack does the correct thing for every version of \pkg{nomencl}!
+%
+% \begin{option}{nomencl}
+% \changes{v3.23}{2017/03/31}{added}
+% \changes{v3.39}{2022/11/11}{initial dot in member argument of \cs{KOMA at key}
+% removed}
+% \begin{macrocode}
+%<*package&option>
+\RequirePackage{xpatch}%
+\KOMA at ifkey{nomencl}{@scrhack at nomencl}
+\KOMAExecuteOptions{nomencl=true}
+%</package&option>
+%<*package&body>
+\AfterPackage*{nomencl}{%
+ \KOMA at key[scrhack.sty]{nomencl}{%
+ \PackageWarning{scrhack}{option `nomencl' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if at scrhack@nomencl\scr at hack@load\@pkgextension{nomencl}\fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}^^A nomencl
+%
+% \begin{command}{\thenomenclature}
+% \changes{v3.23}{2017/03/31}{added}
+% Instead of using the several definitions by cases of the several versions of
+% \pkg{nomencl} we use a patch, that should remove all such cases and use
+% \pkg*{tocbasic} always.
+% \begin{macrocode}
+%<*nomencl&body>
+\RequirePackage{tocbasic}
+% \end{macrocode}
+% With \pkg{nomencl} > 5.0 this should be all.
+% Unfortunately is isn't, because newer versions of \pkg{nomencl} need option
+% \opt{tocbasic} to be set. Good luck: It is the default. So the chances
+% are good, that with new versions of \pkg{nomencl} usage of \pkg*{tocbasic} is
+% the default.
+% \begin{macrocode}
+\@ifpackagelater{nomencl}{2019/01/01}{%
+ \PackageInfo{scrhack}{only `tocbasic' loaded for `nomencl'}%
+ \expandafter\endinput
+}{}
+% \end{macrocode}
+% Otherwise we have to patch it.
+% \begin{macrocode}
+\addtotoclist[nomencl]{nlo}
+\addtotoclist[nomencl]{nls}
+\xpatchcmd{\thenomenclature}{%
+ \@ifundefined{chapter}%
+ {
+ \section*{\nomname}
+ \if at intoc\addcontentsline{toc}{section}{\nomname}\fi%
+ }%
+ {
+ \chapter*{\nomname}
+ \if at intoc\addcontentsline{toc}{chapter}{\nomname}\fi%
+ }%
+}{%
+ \scr at hack@nomencl at head
+}{%
+ \PackageInfo{scrhack}{\string\thenomenclature\space successfully patched}%
+}{%
+% \end{macrocode}
+% \changes{v3.26b}{2019/01/23}{new \pkg{nomencl} 5.0}
+% From \pkg{nomencl} 5.0 another code is used if the nomenclature is a
+% chapter. So we need another patch:
+% \begin{macrocode}
+ \xpatchcmd{\thenomenclature}{%
+ \@ifundefined{chapter}%
+ {
+ \section*{\nomname}
+ \if at intoc\addcontentsline{toc}{section}{\nomname}\fi%
+ }%
+ {
+ \chapter*{\nomname}
+ \markboth{\nomname}{\nomname}%
+ \if at intoc\addcontentsline{toc}{chapter}{\nomname}\fi%
+ }%
+ }{%
+ \scr at hack@nomencl at head
+ }{%
+ \PackageInfo{scrhack}{\string\thenomenclature\space successfully patched}%
+ }{%
+% \end{macrocode}
+% \changes{v3.26b}{2019/01/23}{prepared for hoply comming \pkg{nomencl}}
+% But this code is also wrong, because it breaks manual running heads, e.g.,
+% of page style \texttt{myheadings}. So I hope, there will be another code,
+% that needs a somehow different patch:
+% \begin{macrocode}
+ \xpatchcmd{\thenomenclature}{%
+ \@ifundefined{chapter}%
+ {
+ \section*{\nomname}
+ \if at intoc\addcontentsline{toc}{section}{\nomname}\fi%
+ }%
+ {
+ \chapter*{\nomname}
+ \@mkboth{\nomname}{\nomname}%
+ \if at intoc\addcontentsline{toc}{chapter}{\nomname}\fi%
+ }%
+ }{%
+ \scr at hack@nomencl at head
+ }{%
+ \PackageInfo{scrhack}{\string\thenomenclature\space successfully patched}%
+ }{%
+% \end{macrocode}
+% \changes{v3.25}{2019/01/23}{emergency patch added}
+% \changes{v3.30}{2020/02/25}{spurious space in warning message removed}
+% If this also does not work, we try an emergency patch, that could break
+% things.
+% \begin{macrocode}
+ \xpatchcmd{\thenomenclature}{%
+ \@ifundefined{chapter}%
+ }{%
+ \scr at hack@nomencl at head
+ \@gobbletwo
+ }{%
+ \PackageWarning{scrhack}{%
+ using emergency patch of \string\thenomenclature.\MessageBreak
+ This could happen if you are using an unknown\MessageBreak
+ release of package `nomencl'.\MessageBreak
+ Mostly this patch does work too, but it also could\MessageBreak
+ break `nomencl`. If this happens, please deactivate\MessageBreak
+ the `nomencl` hack of `scrhack`%
+ }%
+ }{%
+ \PackageWarning{scrhack}{%
+ cannot patch \string\thenomenclature.\MessageBreak
+ This could happen if you are using an unknown\MessageBreak
+ release of package `nomencl'%
+ }%
+ }%
+ }%
+ }%
+}
+%</nomencl&body>
+% \end{macrocode}
+% \end{command}^^A \thenomenclature
+%
+% \begin{macro}{\scr at hack@nomencl at head}
+% \changes{v3.23}{2017/03/31}{heading of \env{thenomenclature} by
+% \pkg*{tocbasic}}
+% \changes{v3.31}{2020/07/08}{internal \cs{list at fname} eliminated}
+% We don't need an extra group, because \env{thenomenclature} already adds the
+% group.
+% \begin{macrocode}
+%<*nomencl&body>
+\newcommand*{\scr at hack@nomencl at head}{%
+ \providecommand*{\listofnlsname}{\nomname}%
+ \def\@currext{nls}%
+ \tocbasic at listhead{\nomname}%
+}
+%</nomencl&body>
+% \end{macrocode}
+% \begin{description}
+% \item[Note:] Only the heading hooks of \pkg*{tocbasic} are used. The other
+% hooks can be set, but would never be used!
+% \end{description}
+% \end{macro}^^A \scr at hack@nomencl at head
+%
+% \begin{macro}{\if at intoc}
+% \changes{3.23}{2017/03/31}{support of \cs{if at intoc}}
+% Generally we have to support \pkg{nomencl}'s option \opt{intoc} and the
+% switch \cs{if at intoc}. This is done by (un-)setting \pkg*{tocbasic} feature
+% \texttt{totoc}. So additional changes of the feature can be done at first
+% after loading both, \pkg{nomencl} and \pkg*{scrhack}. Moreover, later changes
+% of \cs{if at intoc} are not recognized.
+% \begin{macrocode}
+%<*nomencl&body>
+\if at intoc
+ \setuptoc{nls}{totoc}
+\fi
+%</nomencl&body>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{The \texorpdfstring{\pkg*{setspace}}{setspace} hack}
+%
+% Package \pkg{setspace} internally uses \cs{@ptsize} in a way, that only
+% works as long as \cs{@ptsize} is an integer. But because \KOMAScript{}
+% supports non integer font sizes, \cs{@ptsize} can also contain non-integer
+% values. Moreover for \opt{11pt}, \LaTeX{} does not use a 11\,pt font but
+% a 10.95\,pt font with a \len{baselineskip} of 13.6\,pt, the correct factor
+% for, e.g., \cs{onehalfspacing} would be:
+% \[ 10{,}95\,\mathrm{pt} \dot 1{,5} / 13{,}6\,\mathrm{pt} \equiv 1{,}208 \]
+% But \pkg{setspace} uses 1.213, which would be correct for 11\,pt. Moreover
+% the factor is always relative to the base font size and not the current font
+% size. Because of this
+% \begin{verbatim}
+% \documentclass[10pt]{article}
+% \usepackage{setspace}
+% \begin{document}
+% \large\onehalfspacing\raggedright
+% Fontsize: \csname f at size\endcsname pt\\
+% Normal baselineskip: \csname f at baselineskip\endcsname\\
+% baselineskip: \the\baselineskip
+% \end{document}
+% \end{verbatim}
+% results in another \len{baselineskip} than:
+% \begin{verbatim}
+% \documentclass[11pt]{article}
+% \usepackage{setspace}
+% \begin{document}
+% \large\onehalfspacing\raggedright
+% Fontsize: \csname f at size\endcsname pt\\
+% Normal baselineskip: \csname f at baselineskip\endcsname\\
+% baselineskip: \the\baselineskip
+% \end{document}
+% \end{verbatim}
+% despite both examples use the same font size. So, to make it absolutely
+% correct, the factor would have to change with every change of the font
+% size. But the hack also does not do so. It just calculates the factor
+% depending on the base font size an the current font size. This is enough to
+% have the same \len{baselineskip} with both of the examples above.
+%
+% \begin{option}{setspace}
+% \changes{v3.17}{2015/04/16}{added}
+% \changes{v3.39}{2022/11/11}{initial dot in member argument of \cs{KOMA at key}
+% removed}
+% \begin{macrocode}
+%<*package&option>
+\KOMA at ifkey{setspace}{@scrhack at setspace}
+\KOMAExecuteOptions{setspace=true}
+%</package&option>
+%<*package&body>
+\AfterPackage*{setspace}{%
+ \KOMA at key[scrhack.sty]{setspace}{%
+ \PackageWarning{scrhack}{option `setspace' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if at scrhack@setspace\scr at hack@load\@pkgextension{setspace}\fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}
+%
+%
+% \begin{command}{\onehalfspacing}
+% \changes{v3.17}{2015/04/16}{added}
+% This selects the one half line spacing. I think, a factor with three digits
+% for the decimals should be enough.
+% \begin{macrocode}
+%<*setspace&body>
+\scr at ifexpected{\onehalfspacing}{%
+ \long\def\onehalfspacing{%
+ \setstretch{1.25}% default
+ \ifcase \@ptsize \relax % 10pt
+ \setstretch {1.25}%
+ \or % 11pt
+ \setstretch {1.213}%
+ \or % 12pt
+ \setstretch {1.241}%
+ \fi
+ }%
+}{%
+ \renewcommand*{\onehalfspacing}{%
+ \@tempdima=\dimexpr (\f at size pt)*1500/
+ (\dimexpr \f at baselineskip\relax)*\p@/1000\relax
+ \expandafter\setstretch\expandafter{\strip at pt\@tempdima}%
+ }%
+}{%
+% \end{macrocode}
+% \changes{v3.39}{2023/03/15}{support for \pkg{setspace} 6.7b added}
+% \begin{macrocode}
+ \scr at ifexpected{\onehalfspacing}{%
+ \long\def\onehalfspacing{%
+ \setstretch{1.25}% default
+% DPC 6.7b guard \@ptsize
+ \ifx\@ptsize\@undefined\else
+ \ifcase \@ptsize \relax % 10pt
+ \setstretch {1.25}%
+ \or % 11pt
+ \setstretch {1.213}%
+ \or % 12pt
+ \setstretch {1.241}%
+ \fi
+ \fi
+ }%
+ }{%
+ \renewcommand*{\onehalfspacing}{%
+ \@tempdima=\dimexpr (\f at size pt)*1500/
+ (\dimexpr \f at baselineskip\relax)*\p@/1000\relax
+ \expandafter\setstretch\expandafter{\strip at pt\@tempdima}%
+ }%
+ }{%
+ \PackageWarning{scrhack}{unknown \string\onehalfspacing\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported setpace version}%
+ }%
+}
+% \end{macrocode}
+% \end{command}
+% \begin{command}{\doublespacing}
+% \changes{v3.17}{2015/04/16}{new}
+% This selects the double line spacing. I think, a factor with three digits
+% for the decimals should be enough.
+% \begin{macrocode}
+\scr at ifexpected{\doublespacing}{%
+ \long\def\doublespacing{%
+ \setstretch{1.667}% default
+ \ifcase \@ptsize \relax % 10pt
+ \setstretch {1.667}%
+ \or % 11pt
+ \setstretch {1.618}%
+ \or % 12pt
+ \setstretch {1.655}%
+ \fi
+ }%
+}{%
+ \renewcommand*{\doublespacing}{%
+ \@tempdima=\dimexpr (\f at size pt)*2000/
+ (\dimexpr \f at baselineskip\relax)*\p@/1000\relax
+ \expandafter\setstretch\expandafter{\strip at pt\@tempdima}%
+ }%
+}{%
+% \end{macrocode}
+% \changes{v3.39}{2023/03/15}{support for \pkg{setspace} 6.7b added}
+% \begin{macrocode}
+ \scr at ifexpected{\doublespacing}{%
+ \long\def\doublespacing{%
+ \setstretch {1.667}% default
+% DPC 6.7b guard \@ptsize
+ \ifx\@ptsize\@undefined\else
+ \ifcase \@ptsize \relax % 10pt
+ \setstretch {1.667}%
+ \or % 11pt
+ \setstretch {1.618}%
+ \or % 12pt
+ \setstretch {1.655}%
+ \fi
+ \fi
+ }%
+ }{%
+ \renewcommand*{\doublespacing}{%
+ \@tempdima=\dimexpr (\f at size pt)*2000/
+ (\dimexpr \f at baselineskip\relax)*\p@/1000\relax
+ \expandafter\setstretch\expandafter{\strip at pt\@tempdima}%
+ }%
+ }{%
+ \PackageWarning{scrhack}{unknown \string\doublespacing\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported setpace version}%
+ }%
+}
+%</setspace&body>
+% \end{macrocode}
+% \end{command}
+%
+%
+% \subsection{The \texorpdfstring{\pkg*{lscape}}{lscape} hack}
+% \changes{v3.18a}{2015/07/07}{\pkg{lscape} hack added}
+%
+% The package does change \len{textheight} inside \env{landscape} to the prior
+% value of \len{textwidth}, nevertheless is does not change \len{textwidth} to
+% the prior value of \len{textheight}. This is at least inconsistent. After
+% asking him, David~Carlisle answered, that he does not change
+% \len{textwidth}, because this could result in problems. Therefore it is very
+% strange, that he does change \cs{textheight}, despite this also to problems,
+% e.g., with packages \pkg{showframe} or \pkg*{scrlayer}. So the patch here
+% also keeps \len{textheight} unchanged. This also has to take care for
+% \pkg{pdflscape}. The patches are done using \pkg{xpatch}.
+%
+%
+% \begin{option}{lscape}
+% \changes{v3.18a}{2015/07/07}{added}
+% \changes{v3.20}{2016/05/07}{loading \pkg{xpatch} in option part already}
+% \changes{v3.39}{2022/11/11}{initial dot in member argument of \cs{KOMA at key}
+% removed}
+% \begin{macrocode}
+%<*package&option>
+\RequirePackage{xpatch}%
+\KOMA at ifkey{lscape}{@scrhack at lscape}%
+\KOMAExecuteOptions{lscape=true}%
+%</package&option>
+%<*package&body>
+\AfterPackage*{lscape}{%
+ \if at scrhack@lscape\scr at hack@load\@pkgextension{lscape}\else
+ \KOMA at key[scrhack.sty]{lscape}{%
+ \PackageWarning{scrhack}{option `lscape' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}
+%
+% \begin{command}{\landscape}
+% \changes{v3.18a}{2015/07/07}{added}
+% \changes{v3.20}{2016/05/07}{loading \pkg{xpatch} in option part already}
+% This command is the beginning of environment \env{landscape}. This has to be
+% patched using \pkg{xpatch}.
+% \begin{description}
+% \item[Note:] This is a load time option and cannot be changed after loading
+% the package!
+% \end{description}
+% \begin{macrocode}
+%<*lscape&body>
+\xpatchcmd{\landscape}{\textheight=\vsize}{%
+ \if at scrhack@lscape
+% \end{macrocode}
+% \begin{macro}{\@outputpage}
+% \changes{v3.18a}{2015/08/11}{added}
+% Here the changed value of \len{textheight} is needed for initialization of
+% \cs{@colht}. So we patch it to use the new internal \len{scr at LT@textheight}
+% instead of \len{textheight}.
+% \begin{macrocode}
+ \scrh at LT@textheight=\vsize
+ \let\scrh at LT@outputpage\@outputpage
+ \def\@outputpage{\scrh at LT@outputpage\global\@colht\scrh at LT@textheight}%
+ \else
+ \textheight=\vsize
+ \fi
+}{%
+ \PackageInfo{scrhack}{\string\landscape\space patched to make
+ \string\textheight\space change optional}%
+}{%
+ \PackageWarning{scrhack}{Cannot patch \string\landscape!\MessageBreak
+ Maybe you are using a unsupported lscape version}%
+ \@scrhack at lscapefalse
+}
+% \end{macrocode}
+% \begin{ilength}{\scrh at LT@textheight}
+% \changes{v3.18a}{2015/08/11}{new}
+% \begin{macrocode}
+\newlength{\scrh at LT@textheight}
+%</lscape&body>
+% \end{macrocode}
+% \end{ilength}^^A \scrh at LT@textheight
+% \end{macro}^^A \@outputpage
+% \end{command}^^A \landscape
+%
+%
+% \subsection{The standard classes sections hack}
+% \label{sec:standardsections}
+% The \emph{standard classes sections hack} differs from each other
+% hack. First of all it does not patch a specific package but the class
+% definitions of section commands from \cs{part} till
+% \cs{subparagraph}. Additionally it resets several internal \LaTeX{} macros
+% which are changed by \KOMAScript{} classes to their original
+% definition. Last but not least it is not activated by default, but the user
+% has to activate it, if he needs it. The hack has more potential to break
+% things than to make things better. Because of this, there is not any support
+% for using this hack and the hack shows several warning messages.
+%
+% \begin{option}{standardsections}
+% \begin{macrocode}
+%<*package&option>
+\KOMA at ifkey{standardsections}{@scrhack at standardsections}
+\KOMAExecuteOptions{standardsections=false}
+%</package&option>
+%<*package&body>
+\AtEndOfPackage{%
+ \if at scrhack@standardsections
+ \PackageInfo{scrhack}{loading standard classes sections hack}%
+ \input{standardsections.hak}%
+ \fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}^^A standardsections
+%
+% \begin{command}{\part,\chapter,
+% \section,\subsection,\subsubsection,
+% \paragraph,\subparagraph}
+% The hack redefines all these commands to a definition copied from the
+% standard \LaTeX{} classes version v1.4i. Copyright of this code is by the
+% \LaTeX3{} Project. The complete, unmodified code can be found on
+% \url{https://ctan.org/tex-archive/macros/latex/base/classes.dtx}.
+% \begin{macrocode}
+%<*standardsections&body>
+\PackageWarningNoLine{scrhack}{%
+ You are loosing every kind of support because of\MessageBreak
+ using the dangerous standard classes sections hack!\MessageBreak
+ This hack can break several classes and packages.\MessageBreak
+ However, sometimes it is needed to make a\MessageBreak
+ package work%
+}%
+\PackageInfo{scrhack}{%
+ Using code from the standard LaTeX classes.\MessageBreak
+ For more information about this code and the\MessageBreak
+ license of this code, please see:\MessageBreak
+ https://ctan.org/tex-archive/macros/latex/base/classes.dtx
+}%
+\@ifpackageloaded{hyperref}{%
+ \PackageWarning{scrhack}{this hack should not be loaded after `hyperref'}%
+}{}
+\@ifpackageloaded{titlesec}{%
+ \PackageWarning{scrhack}{this hack should not be loaded after `titlesec'}%
+}{}
+\@ifpackageloaded{sectsty}{%
+ \PackageWarning{scrhack}{this hack should not be loaded after `sectsty'}%
+}{}
+\scr at ifundefinedorrelax{chapter}{%
+% \end{macrocode}
+% It seems to be an article class, so we use the code from
+% \href{http://mirrors.ctan.org/macros/latex/base/classes.dtx}{\cls*{article}}.
+% \begin{macrocode}
+ \scr at ifundefinedorrelax{c at part}{\newcounter{part}}{}%
+ \scr at ifundefinedorrelax{c at section}{\newcounter{section}}{}%
+ \scr at ifundefinedorrelax{c at subsection}{\newcounter{subsection}[section]}{}%
+ \scr at ifundefinedorrelax{c at subsubsection}{%
+ \newcounter{subsubsection}[subsection]}{}%
+ \scr at ifundefinedorrelax{c at paragraph}{%
+ \newcounter{paragraph}[subsubsection]}{}%
+ \scr at ifundefinedorrelax{c at subparagraph}{%
+ \newcounter{subparagraph}[paragraph]}{}%
+ \renewcommand\thepart {\@Roman\c at part}%
+ \renewcommand\thesection {\@arabic\c at section}%
+ \renewcommand\thesubsection {\thesection.\@arabic\c at subsection}%
+ \renewcommand\thesubsubsection{\thesubsection.\@arabic\c at subsubsection}%
+ \renewcommand\theparagraph {\thesubsubsection.\@arabic\c at paragraph}%
+ \renewcommand\thesubparagraph {\theparagraph.\@arabic\c at subparagraph}%
+ \def\part{%
+ \if at noskipsec \leavevmode \fi
+ \par
+ \addvspace{4ex}%
+ \@afterindentfalse
+ \secdef\@part\@spart}%
+ \def\@part[#1]#2{%
+ \ifnum \c at secnumdepth >\m at ne
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c at secnumdepth >\m at ne
+ \Large\bfseries \partname\nobreakspace\thepart
+ \par\nobreak
+ \fi
+ \huge \bfseries #2%
+ \markboth{}{}\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}%
+ \def\@spart#1{%
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \huge \bfseries #1\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}%
+ \def\section{\@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\Large\bfseries}}%
+ \def\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\bfseries}}%
+ \def\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+}{%
+% \end{macrocode}
+% It seems to be either a book or report class.
+% \begin{macrocode}
+ \scr at ifundefinedorrelax{c at part}{\newcounter{part}}{}%
+ \scr at ifundefinedorrelax{c at chapter}{\newcounter{chapter}}{}%
+ \scr at ifundefinedorrelax{c at section}{\newcounter{section}[chapter]}{}%
+ \scr at ifundefinedorrelax{c at subsection}{\newcounter{subsection}[section]}{}%
+ \scr at ifundefinedorrelax{c at subsubsection}{%
+ \newcounter{subsubsection}[subsection]}{}%
+ \scr at ifundefinedorrelax{c at paragraph}{%
+ \newcounter{paragraph}[subsubsection]}{}%
+ \scr at ifundefinedorrelax{c at subparagraph}{%
+ \newcounter{subparagraph}[paragraph]}{}%
+ \def\@chapapp{\chaptername}%
+ \scr at ifundefinedorrelax{frontmatter}{%
+% \end{macrocode}
+% It seems not to be a book class.
+% \begin{macrocode}
+ \def\part{%
+ \if at openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ \thispagestyle{plain}%
+ \if at twocolumn
+ \onecolumn
+ \@tempswatrue
+ \else
+ \@tempswafalse
+ \fi
+ \null\vfil
+ \secdef\@part\@spart}
+
+ \def\@part[#1]#2{%
+ \ifnum \c at secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c at secnumdepth >-2\relax
+ \huge\bfseries \partname\nobreakspace\thepart
+ \par
+ \vskip 20\p@
+ \fi
+ \Huge \bfseries #2\par}%
+ \@endpart}
+ \def\@spart#1{%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \Huge \bfseries #1\par}%
+ \@endpart}
+ \def\@endpart{\vfil\newpage
+ \if at twoside
+ \if at openright
+ \null
+ \thispagestyle{empty}%
+ \newpage
+ \fi
+ \fi
+ \if at tempswa
+ \twocolumn
+ \fi}
+ \def\chapter{\if at openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{plain}%
+ \global\@topnum\z@
+ \@afterindentfalse
+ \secdef\@chapter\@schapter}
+ \def\@chapter[#1]#2{\ifnum \c at secnumdepth >\m at ne
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter}#1}%
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \if at twocolumn
+ \@topnewpage[\@makechapterhead{#2}]%
+ \else
+ \@makechapterhead{#2}%
+ \@afterheading
+ \fi}
+ \def\@makechapterhead#1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright \normalfont
+ \ifnum \c at secnumdepth >\m at ne
+ \huge\bfseries \@chapapp\space \thechapter
+ \par\nobreak
+ \vskip 20\p@
+ \fi
+ \interlinepenalty\@M
+ \Huge \bfseries #1\par\nobreak
+ \vskip 40\p@
+ }}
+ \def\@schapter#1{\if at twocolumn
+ \@topnewpage[\@makeschapterhead{#1}]%
+ \else
+ \@makeschapterhead{#1}%
+ \@afterheading
+ \fi}
+ \def\@makeschapterhead#1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright
+ \normalfont
+ \interlinepenalty\@M
+ \Huge \bfseries #1\par\nobreak
+ \vskip 40\p@
+ }}
+ \def\section{\@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\Large\bfseries}}%
+ \def\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\bfseries}}%
+ \def\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+ }{%
+% \end{macrocode}
+% It seems to be a book class.
+% \begin{macrocode}
+ \scr at ifundefinedorrelax{if at mainmatter}{%
+ \expandafter\newif\csname if at mainmatter\endcsname
+ }{}%
+ \def\frontmatter{%
+ \cleardoublepage
+ \@mainmatterfalse
+ \pagenumbering{roman}}%
+ \def\mainmatter{%
+ \cleardoublepage
+ \@mainmattertrue
+ \pagenumbering{arabic}}%
+ \def\backmatter{%
+ \if at openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ \@mainmatterfalse}%
+ \def\part{%
+ \if at openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ \thispagestyle{plain}%
+ \if at twocolumn
+ \onecolumn
+ \@tempswatrue
+ \else
+ \@tempswafalse
+ \fi
+ \null\vfil
+ \secdef\@part\@spart}%
+
+ \def\@part[#1]#2{%
+ \ifnum \c at secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c at secnumdepth >-2\relax
+ \huge\bfseries \partname\nobreakspace\thepart
+ \par
+ \vskip 20\p@
+ \fi
+ \Huge \bfseries #2\par}%
+ \@endpart}%
+ \def\@spart#1{%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \Huge \bfseries #1\par}%
+ \@endpart}%
+ \def\@endpart{\vfil\newpage
+ \if at twoside
+ \if at openright
+ \null
+ \thispagestyle{empty}%
+ \newpage
+ \fi
+ \fi
+ \if at tempswa
+ \twocolumn
+ \fi}%
+ \def\chapter{\if at openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{plain}%
+ \global\@topnum\z@
+ \@afterindentfalse
+ \secdef\@chapter\@schapter}%
+ \def\@chapter[#1]#2{\ifnum \c at secnumdepth >\m at ne
+ \if at mainmatter
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter}#1}%
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \if at twocolumn
+ \@topnewpage[\@makechapterhead{#2}]%
+ \else
+ \@makechapterhead{#2}%
+ \@afterheading
+ \fi}%
+ \def\@makechapterhead#1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright \normalfont
+ \ifnum \c at secnumdepth >\m at ne
+ \if at mainmatter
+ \huge\bfseries \@chapapp\space \thechapter
+ \par\nobreak
+ \vskip 20\p@
+ \fi
+ \fi
+ \interlinepenalty\@M
+ \Huge \bfseries #1\par\nobreak
+ \vskip 40\p@
+ }}%
+ \def\@schapter#1{\if at twocolumn
+ \@topnewpage[\@makeschapterhead{#1}]%
+ \else
+ \@makeschapterhead{#1}%
+ \@afterheading
+ \fi}%
+ \def\@makeschapterhead#1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright
+ \normalfont
+ \interlinepenalty\@M
+ \Huge \bfseries #1\par\nobreak
+ \vskip 40\p@
+ }}%
+ \def\section{\@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\Large\bfseries}}%
+ \def\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\bfseries}}%
+ \def\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+ }%
+}% End of the derived code.
+% \end{macrocode}
+% \end{command}
+%
+% \begin{macro}{\@startsection}
+% \KOMAScript{} classes redefine this internal \LaTeX{} kernel macro. In this
+% case \cs{scr at saved@startsection} is defined, differs from
+% \cs{@startsection} and has the definition found before redefining the
+% original macro. We do nothing else but resetting \cs{@startsection} to this
+% saved definition.
+% \begin{macrocode}
+\scr at ifundefinedorrelax{scr at saved@startsection}{}{%
+ \ifx\@startsection\scr at saved@startsection\else
+ \PackageWarningNoLine{scrhack}{%
+ Resetting \string\@startsection,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \let\@startsection\scr at saved@startsection
+ \fi
+}
+% \end{macrocode}
+% \end{macro}^^A \@startsection
+%
+% \begin{macro}{\@sect,\@ssect,\@xsect}
+% All these should be resetted to their original definitions stored in
+% \cs{scr at latex@\dots}.
+% \begin{macrocode}
+\scr at ifundefinedorrelax{scr at latex@sect}{}{%
+ \ifx\@sect\scr at latex@sect\else
+ \PackageWarningNoLine{scrhack}{%
+ Resetting \string\@sect,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \let\@sect\scr at latex@sect
+ \fi
+}
+\scr at ifundefinedorrelax{scr at latex@ssect}{}{%
+ \ifx\@ssect\scr at latex@ssect\else
+ \PackageWarningNoLine{scrhack}{%
+ Resetting \string\@ssect,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \let\@ssect\scr at latex@ssect
+ \fi
+}
+\scr at ifundefinedorrelax{scr at latex@xsect}{}{%
+ \ifx\@xsect\scr at latex@xsect\else
+ \PackageWarningNoLine{scrhack}{%
+ Resetting \string\@xsect,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \let\@xsect\scr at latex@xsect
+ \fi
+}
+% \end{macrocode}
+% \end{macro}^^A \@xsect,\@ssect,\@sect
+%
+% \begin{command}{\DeclareSectionCommand,\RedeclareSectionCommand,
+% \DeclareNewSectionCommand,\ProvideSectionCommand,
+% \DeclareSectionCommands,\RedeclareSectionCommands,
+% \DeclareNewSectionCommands,\ProvideSectionCommands}
+% These \KOMAScript{} commands do not make sense any longer after forced
+% redefinition of \cs{part} \dots{} \cs{subparagraph}. They even would not
+% work correctly after resetting, e.g., \cs{@startsection}. So best reaction
+% is to \emph{undefine} them.
+% \begin{macrocode}
+\scr at ifundefinedorrelax{DeclareSectionCommand}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ \string\DeclareSectionCommand\space
+ and all derivates deactivated,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \let\DeclareSectionCommand\undefined
+ \let\DeclareSectionCommands\undefined
+ \let\RedeclareSectionCommand\undefined
+ \let\RedeclareSectionCommands\undefined
+ \let\DeclareNewSectionCommand\undefined
+ \let\DeclareNewSectionCommands\undefined
+ \let\ProvideSectionCommand\undefined
+ \let\ProvideSectionCommands\undefined
+}
+% \end{macrocode}
+% \begin{macro}{\scr at chapter@before at hyperref@patch,
+% \scr at chapter@after at hyperref@patch}
+% Now, definitions without respecting \pkg{hyperref} are used, so
+% \pkg{hyperref} should again be able to patch them. So the hack should
+% deactivate the patch deactivation of the \KOMAScript{} classes.
+% \begin{macrocode}
+\let\scr at chapter@before at hyperref@patch\relax
+\let\scr at chapter@after at hyperref@patch\relax
+% \end{macrocode}
+% \end{macro}
+% \end{command}
+%
+% \begin{macro}{\scr at osectarg}
+% The \KOMAScript{} classes use this macro to store how to use the optional
+% argument of section commands. But with the standard class definition the
+% only possibility is to use it as running head and write it into the table of
+% contents without any extended handling. So the only value, that makes sense
+% is 0.
+% \begin{macrocode}
+\scr at ifundefinedorrelax{scr at osectarg}{}{%
+ \def\reserved at a{0}%
+ \ifx\scr at osectarg\reserved at a\else
+ \let\scr at osectarg\reserved at a
+ \PackageWarningNoLine{scrhack}{%
+ Extended option handling for section commands deactivated,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \fi
+}%
+% \end{macrocode}
+% \begin{macro}{\scr at activate@xsection}
+% Further changing of the value has to be deactivated.
+% \begin{macrocode}
+\scr at ifundefinedorrelax{scr at activate@xsection}{}{%
+ \renewcommand*{\scr at activate@xsection}[1]{%
+ \edef\scr at osectarg{#1}\def\reserved at a{0}%
+ \ifx\scr at osectarg\reserved at a
+ \else
+ \let\scr at osectarg\reserved at a
+ \PackageWarning{scrhack}{%
+ Because of loading the standard classes\MessageBreak
+ sections hack, the extended option handling\MessageBreak
+ of section commands failed%
+ }%
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr at activate@xsection
+% \end{macro}^^A \scr at osectarg
+%
+% \begin{command}{\partformat,\chapterformat}
+% Most \cs{\dots format} macros of \KOMAScript{} are still used, because of
+% the redefinition of \cs{@seccntformat}. But \cs{part} and \cs{chapter} are
+% defined without using them.
+% \begin{macrocode}
+\scr at ifundefinedorrelax{partformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ Usage of \string\partformat\space
+ deactivated,\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+}
+\scr at ifundefinedorrelax{chapterformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ Usage of \string\chapterformat\space
+ deactivated,\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+}
+% \end{macrocode}
+% \end{command}^^A \chapterformat,\partformat
+%
+% \begin{command}{\sectionformat,\subsectionformat,\subsubsectionformat,
+% \paragraphformat,\subparagraphformat}
+% All these commands have to be resetted to not use the automatic dot and to
+% add a \cs{quad} instead of an \cs{enskip}.
+% \begin{macrocode}
+\scr at ifundefinedorrelax{sectionformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ \string\sectionformat\space set to
+ `\string\thesection\string\quad',\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+ \renewcommand*{\sectionformat}{\thesection\quad}%
+}
+\scr at ifundefinedorrelax{subsectionformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ \string\subsectionformat\space set to
+ `\string\thesubsection\string\quad'\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+ \renewcommand*{\subsectionformat}{\thesubsection\quad}%
+}
+\scr at ifundefinedorrelax{subsubsectionformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ \string\subsubsectionformat\space set to
+ `\string\thesubsubsection\string\quad'\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+ \renewcommand*{\subsubsectionformat}{\thesubsubsection\quad}%
+}
+\scr at ifundefinedorrelax{paragraphformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ \string\paragraphformat\space set to
+ `\string\theparagraph\string\quad'\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+ \renewcommand*{\paragraphformat}{\theparagraph\quad}%
+}
+\scr at ifundefinedorrelax{subparagraphformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ \string\subparagraphformat\space set to
+ `\string\thesubparagraph\string\quad'\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+ \renewcommand*{\subparagraphformat}{\thesubparagraph\quad}%
+}
+% \end{macrocode}
+% \end{command}
+%
+% \begin{command}{\partlineswithprefixformat,
+% \chapterlineswithprefixformat,\chapterlinesformat,
+% \sectionlinesformat,\sectioncatchphraseformat}
+% These \KOMAScript{} commands are not used any longer.
+% \begin{macrocode}
+\scr at ifundefinedorrelax{partlineswithprefixformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ Usage of \string\partlineswithprefixformat\space deactivated,\MessageBreak
+ because of loading the standard classes sections hack%
+ }%
+}
+\scr at ifundefinedorrelax{chapterlineswithprefixformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ Usage of \string\chapterlineswithprefixformat\space and\MessageBreak
+ \string\chapterlinesformat\space deactivated,\MessageBreak
+ because of using standard classes sections hack%
+ }%
+}
+\scr at ifundefinedorrelax{sectionlinesformat}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ Usage of \string\sectionlinesformat\space and\MessageBreak
+ \string\sectioncatchphraseformat\space deactivated,\MessageBreak
+ because of using standard classes sections hack%
+ }%
+}
+% \end{macrocode}
+% \end{command}^^A \partlineswithprefixformat …
+%
+% \begin{option}{headings}
+% \changes{v3.39}{2022/11/11}{initial dot in member argument of option storage
+% commands removed}
+% The \KOMAScript{} option does not make sense any longer. So it is
+% deactivated and usage will throw an error.
+% \begin{macrocode}
+\scr at ifundefinedorrelax{KOMAClassName}{}{%
+ \PackageWarningNoLine{scrhack}{%
+ KOMA-Script option `headings' removed,\MessageBreak
+ because of loading standard classes sections hack%
+ }%
+ \RelaxFamilyKey[.\KOMAClassFileName]{KOMA}{headings}%
+ \KOMA at kav@removekey{\KOMAClassFileName}{headings}%
+}
+% \end{macrocode}
+% \end{option}^^A headings
+%
+% \begin{macro}{\scr at class@titlesec at warning}
+% The warning about loading \pkg{titlesec} has to be changes, because we do
+% not expect errors any longer.
+% \begin{macrocode}
+\def\scr at class@titlesec at warning{%
+ \PackageWarning{scrhack}{%
+ Usage of `titlesec' should work, because of\MessageBreak
+ loading the standard classes sections hack.\MessageBreak
+ However, you should know, there is not any\MessageBreak
+ support for this combination by the\MessageBreak
+ KOMA-Script author%
+ }%
+}
+%</standardsections&body>
+% \end{macrocode}
+% \end{macro}^^A \scr at class@titlesec at warning
+%
+% \subsection{Executing options}
+%
+% Last but not least the options have to be processed. In the generated
+% package this will be done before the commands of \autoref{sec:macros}.
+% \begin{macrocode}
+%<*package&option>
+\KOMAProcessOptions\relax
+%</package&option>
+% \end{macrocode}
+%
+% \Finale
+% \PrintChanges
+%
+\endinput
+% Local Variables:
+% mode: doctex
+% ispell-local-dictionary: "en_US"
+% eval: (flyspell-mode 1)
+% TeX-master: t
+% TeX-engine: luatex-dev
+% eval: (setcar (or (cl-member "Index" (setq-local TeX-command-list (copy-alist TeX-command-list)) :key #'car :test #'string-equal) (setq-local TeX-command-list (cons nil TeX-command-list))) '("Index" "mkindex %s" TeX-run-index nil t :help "makeindex for dtx"))
+% End:
Property changes on: trunk/Master/texmf-dist/source/latex/scrhack/scrhack-2023-07-07.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/scrhack/scrhack.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/scrhack/scrhack.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/scrhack/scrhack.dtx 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,991 @@
+% \iffalse meta-comment
+% ======================================================================
+% scrhack.dtx
+% Copyright © 2008–2024 Markus Kohm
+%
+% This work is a KOMA-Script spin-off. For the original sources of
+% KOMA-Script's `scrhack.sty' see file `scrhack.dtx' in the KOMA-Script
+% sources at <https://sourceforge.net/p/koma-script/code/>.
+%
+% Development is taking place as part of `scrhack' at
+% <https://github.com/komascript/third-party-enhancements>. New issues
+% should be reported there as well as known issues can be found.
+%
+% 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 the file `scrhack.dtx',
+% `scrhack-2023-07-07,dtx', and `README.md'.
+%
+% The recommended way to install `scrhack' is to use
+% the package manager of your TeX distribution.
+% ======================================================================
+%
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{scrhack.dtx}
+%</dtx>
+%<package>\providecommand\DeclareRelease[3]{}
+%<package>\providecommand\DeclareCurrentRelease[2]{}
+%<package>\DeclareRelease{v3.41}{2023-07-07}{scrhack-2023-07-07.sty}
+%<package>\DeclareCurrentRelease{}{2023-07-15}
+%<*dtx|package>
+%<package>\ProvidesPackage{scrhack}
+ [2024-09-04 v3.42
+%<dtx> sources and unpack driver of
+ scrhack emulation package]
+%</dtx|package>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input docstrip.tex
+ \generate{%
+ \file{scrhack.sty}{%
+ \from{scrhack.dtx}{package}%
+ }%
+ }%
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+\documentclass[ngerman,USenglish]{koma-script-source-doc}
+\usepackage{babel}
+\usepackage{csquotes}
+\usepackage[style=alphabetic]{biblatex}
+\begin{filecontents}[force]{\jobname.bib}
+ at online{pkg:koma-script,
+ author={Markus Kohm},
+ version={3.41},
+ date={2023-07-07},
+ title={{\KOMAScript} --- A bundle of versatile classes and packages},
+ url={https://ctan.org/pkg/koma-script},
+ urldate={2023-07-14},
+ note={The \KOMAScript{} bundle provides replacements for the \pkg*{article},
+ \pkg*{report}, and \pkg*{book} classes with emphasis on typography and
+ versatility. There is also a letter class.},
+}
+ at manual{pkg:koma-script:manual:de,
+ author={Markus Kohm},
+ date={2023-06-16},
+ title={{\KOMAScript}},
+ subtitle={Die Anleitung},
+ url={http://mirrors.ctan.org/macros/latex/contrib/koma-script/scrguide-de.pdf},
+ urldate={2023-07-04},
+}
+ at manual{pkg:koma-script:manual:en,
+ author={Markus Kohm},
+ date={2023-06-16},
+ title={{\KOMAScript}},
+ subtitle={The Guide},
+ url={http://mirrors.ctan.org/macros/latex/contrib/koma-script/scrguide-en.pdf},
+ urldate={2023-07-14},
+}
+ at article{latexnews35,
+ author={{The {\LaTeX} Project Team}},
+ shortauthor={TLT},
+ year={2022},
+ month={6},
+ title={Issue 35},
+ journal={{\LaTeX} News},
+ url={http://mirrors.ctan.org/macros/latex/base/ltnews35.pdf},
+ urldate={2023-07-14},
+}
+\end{filecontents}
+\addbibresource{\jobname.bib}
+\setcounter{StandardModuleDepth}{2}
+\providecommand*{\seclabel}[1]{\label{sec:#1}}
+\begin{document}
+ \nocite{pkg:koma-script}
+ \DocInput{scrhack.dtx}
+\end{document}
+%</dtx>
+%\fi
+%
+% \changes{v0.1}{2023/07/14}{start of \KOMAScript{} spin-off}
+%
+% \GetFileInfo{scrhack.dtx}
+% \title{Emulating Former \href{https://komascript.de/}{\KOMAScript} Package
+% \pkg*{scrhack}}
+% \author{\href{mailto:komascript at gmx.info}{Markus Kohm}}
+% \date{Version \filedate{} \fileversion}
+% \maketitle
+% \begin{abstract}
+% For several years \href{https://komascript.de/}{\KOMAScript} provided a
+% package \pkg*{scrhack}, that has been made not only to improve the
+% compatibility of third-party packages with
+% \href{https://komascript.de/}{\KOMAScript} classes, but also to generally
+% improve third-party packages. The package consisted not only in the
+% package file \file{scrhack.sty} but also in several so called \emph{hacks}
+% as separate files with extension \file{.hak}. In the course of splitting
+% off former \href{https://komascript.de/}{\KOMAScript} packages from the
+% \href{https://komascript.de/}{\KOMAScript} collection, it was decided to
+% create independent packages from the individual hacks. These new
+% independent packages then serve as replacements for the original packages
+% they were intended to improve. In addition, to preserve the functionality
+% of loading the enhancements only when the corresponding original package
+% is loaded, a new \pkg*{scrhack} was created to do just that.
+% \end{abstract}
+%
+% \tableofcontents
+%
+%\iffalse
+%<*doc>
+%\fi
+% \section{History}
+% \label{sec:history}
+Some packages from other authors do not work well with
+\href{https://komascript.de/}{\KOMAScript}. It is often very tedious for the
+author of \href{https://komascript.de/}{\KOMAScript} to convince the authors
+of these packages to make specific improvements. This also applies to packages
+whose development has been discontinued. That's why the \pkg*{scrhack} was
+created. This package alters the commands and definitions of other to work
+better with \href{https://komascript.de/}{\KOMAScript}. Some changes are also
+useful when using other classes.
+
+In the early days of \href{https://komascript.de/}{\KOMAScript}, users wanted
+to handle lists of floating environments created with the \pkg{float} package
+in the same way as the list of figures and list of tables created by
+\href{https://komascript.de/}{\KOMAScript} itself. At that time the author of
+\href{https://komascript.de/}{\KOMAScript} contacted the author of
+\pkg{float} to propose an interface to support such an enhancement. A
+somewhat modified form of that interface was implemented with the
+\cs{float at listhead} and \cs{float at addtolists} commands.
+
+Later it became apparent that these two commands were not flexible enough to
+fully support all of \href{https://komascript.de/}{\KOMAScript}'s
+capabilities. Unfortunately, the author of \pkg{float} had already ceased
+development by that point, so further changes to this package cannot be
+expected.
+
+Other package authors have also adopted these two commands, and it became
+apparent that the implementation in some packages, including \pkg{float},
+means that all these packages can only be loaded in a specific order, even
+though they are otherwise unrelated to each other.
+
+To overcome all these disadvantages and problems,
+\href{https://komascript.de/}{\KOMAScript} no longer officially supports this
+old interface. Instead, \href{https://komascript.de/}{\KOMAScript} warns if
+the old interface is used. At the same time, the \pkg{tocbasic} package has
+been designed and implemented as a central interface for managing of table of
+contents and similar content lists. This package provides many more
+advantages and features than the two old commands.
+
+Although the effort to use this package is very small, so far the authors of
+most of the packages that use the old interface have not made any adjustments.
+Therefore the \KOMAScript author designed a new
+package \pkg*{scrhack} as part of
+\href{https://komascript.de/}{\KOMAScript}. That package contained appropriate
+modifications of the packages
+\pkg{float}, \pkg{floatrow}, \pkg{listings}, and later on also for
+\pkg{nomencl} and some others not related to that interface. Merely loading
+\pkg*{scrhack} was sufficient to make these packages recognize not only the
+setting of the \href{https://komascript.de/}{\KOMAScript} option \opt{listof},
+but, e.g., also to react to the language switching features of the
+\pkg{babel} package. You can find more information
+about the features available by switching packages to \pkg{tocbasic} in
+\autocite{pkg:koma-script:manual:en} or \autocite{pkg:koma-script:manual:de}.
+
+With release of version 3.42 package \pkg*{scrhack} has been removed from
+\href{https://komascript.de/}{\KOMAScript}. The code of the former package has
+been split into several standalone packages, that can be loaded individually
+if needed. However, for compatibility and maybe for convenience there is also
+a new standalone package \pkg*{scrhack} almost compatible with the old
+one.
+
+\section{Using \texorpdfstring{\pkg*{scrhack}}{scrhack}}
+\seclabel{usage}
+
+It is recommended to load the \pkg*{scrhack} package using:
+\begin{verbatim}
+ \usepackage{scrhack}
+\end{verbatim}
+as early as possible. In particular, loading should be done before the
+affected packages. The package also provides several options, one for each
+hack. Usually the options are named identically to the package, that is
+patched by the hack. All these options are boolean options. You can switch
+such an option on assigning value \optvalue{true} or using it without
+value. You can switch off such an option assigning value
+\optvalue{false}. Switching off an option means to not automatically load the
+corresponding enhancement package after the package, that has to be
+patched. Therefore switching off an option results in not patching the
+corresponding package.
+
+\paragraph{Notes:}
+\begin{itemize}
+\item From version 3.42, you cannot use \cs{KOMAoptions} or \cs{KOMAoption}
+ any longer to change the options. Instead loading \pkg*{scrhack} again with
+ other options does not result in an option clash, but in a change of the
+ option settings.
+\item Switching off an option of an already loaded enhancement package is
+ ignored (with warning). It does not unload the enhancement package or switch
+ back to a not patched functionality.
+\item Switching on an option of a not yet loaded enhancement package would
+ result in loading the enhancement package.
+\item From version 3.42, you should no longer load package
+ \pkg*{scrhack}. Instead you can and should simply load the individual
+ enhancement package when you need it.
+\item If you need the old legacy version of \pkg*{scrhack} from
+ \href{https://komascript.de/}{\KOMAScript} 3.41 you can use:
+\begin{verbatim}
+ \usepackage{scrhack}[=2023-07-07]
+\end{verbatim}
+ or
+\begin{verbatim}
+ \usepackage{scrhack}[=v3.41]
+\end{verbatim}
+ However, this depends on internal packages of
+ \href{https://komascript.de/}{\KOMAScript}.
+\item The hacks of the legacy version have been frozen. So the
+ hacks may break with packages or \LaTeX{} versions released after
+ 2023-07-07. There is no support for such combinations!
+\item Loading the legacy version more than once with different option setting
+ still results in option clash errors.
+\end{itemize}
+
+\paragraph{Available options with \pkg*{scrhack}:}
+\begin{description}
+\item[\opt{float=\meta{boolean}}:]
+ \DescribeOption[noprint]{float=\meta{boolean}}%
+ \hfill initial: \optvalue{true}, default: \optvalue{true}\\
+ After package \pkg{float} is loaded, load also package \pkg{floatbytocbasic}
+ to fix the issue explained in \autoref{sec:history}. This also provides the
+ full functionality of \pkg{tocbasic} to \pkg{float}.
+\item[\opt{floatrow=\meta{boolean}}:]
+ \DescribeOption[noprint]{floatrow=\meta{boolean}}%
+ \hfill initial: \optvalue{true}, default: \optvalue{true}\\
+ After package \pkg{floatrow} is loaded, load also package
+ \pkg{floatbytocbasic} to fix the issue explained in
+ \autoref{sec:history}. This also provides the full functionality of
+ \pkg{tocbasic} to \pkg{floatrow}.
+\item[\opt{hyperref=\meta{boolean}}:]
+ \DescribeOption[noprint]{hyperref=\meta{boolean}}%
+ \hfill
+ \marginline{\raisebox{\dimexpr\ht\strutbox-\height\relax}{\Huge\textcolor{red}{!}}}%
+ initial: \optvalue{false}, default: \optvalue{true}\\
+ Option \opt{hyperref} is deprecated. It is implemented for compatibility
+ reasons only. Using \opt{hyperref} without value or \opt{hyperref=true}
+ results in a warning. Using \opt{hyperref=false} results in an info only.
+\item[\opt{listings=\meta{boolean}}:]
+ \DescribeOption[noprint]{listings=\meta{boolean}}%
+ \hfill
+ \marginline{\raisebox{\dimexpr\ht\strutbox-\height\relax}{\Huge\textcolor{red}{!}}}%
+ initial: \optvalue{false}, default: \optvalue{true}\\
+ Option \opt{listings} is deprecated. It is implemented for compatibility
+ reasons only. Using \opt{listings} without value or \opt{listings=true}
+ results in a warning. Using \opt{listings=false} results in an info only.
+\item[\opt{lscape=\meta{boolean}}:]
+ \DescribeOption[noprint]{lscape=\meta{boolean}}%
+ \hfill initial: \optvalue{true}, default: \optvalue{true}\\
+ After package \pkg{lscape} is loaded, load also package
+ \pkg{lscapeenhanced} to fix an issue with detection of text height for
+ some packages like \pkg{scrlayer} and \pkg{showframe}.
+\item[\opt{nomencl=\meta{boolean}}:]
+ \DescribeOption[noprint]{nomencl=\meta{boolean}}%
+ \hfill
+ \marginline{\raisebox{\dimexpr\ht\strutbox-\height\relax}{\Huge\textcolor{red}{!}}}%
+ initial: \optvalue{false}, default: \optvalue{true}\\
+ Option \opt{nomencl} is deprecated. It is implemented for compatibility
+ reasons only. Using \opt{nomencl} without value or \opt{nomencl=true}
+ results in a warning. Using \opt{nomencl=false} results in an info only.
+\item[\opt{setspace=\meta{boolean}}:]
+ \DescribeOption[noprint]{setspace=\meta{boolean}}%
+ \hfill initial: \optvalue{true}, default: \optvalue{true}\\
+ After package \pkg{setspace} is loaded, load also package
+ \pkg{setspaceenhanced} with the same options plus options \opt{byselectfont}
+ and \opt{keepfontsize}.
+\item[\opt{standardsectioning=\meta{boolean}}:]
+ \DescribeOption[noprint]{standardsectioning=\meta{boolean}}%
+ \hfill initial: \optvalue{false}, default: \optvalue{true}\\
+ Load package \pkg{standardsectioning} to (re-)define the sectioning commands
+ using the code from the standard classes. If \pkg*{scrhack} is loaded
+ \emph{before} any class\footnote{This is detected heuristic by definition of
+ \cs{normalsize}. If \cs{normalsize} contains \cs{@latex at error} no class
+ has been loaded.} the definition is delayed until a class has been loaded.
+\end{description}
+
+\paragraph{Available options with the legacy version:}
+\begin{description}
+\item[\opt{float=\meta{boolean}}:] \hfill
+ initial: \optvalue{true}, default: \optvalue{true}\\
+ After package \pkg{float} is loaded, load \file{float.hak} to fix the issue
+ explained in \autoref{sec:history}. This also provides the full
+ functionality of \pkg{tocbasic} to \pkg{float}.
+\item[\opt{floatrow=\meta{boolean}}:] \hfill
+ initial: \optvalue{true}, default: \optvalue{true}\\
+ After package \pkg{floatrow} is loaded, load \file{floatrow.hak} to fix the
+ issue explained in \autoref{sec:history}. This also provides the full
+ functionality of \pkg{tocbasic} to \pkg{floatrow}.
+\item[\opt{hyperref=\meta{boolean}}:] \hfill
+ initial: \optvalue{true}, default: \optvalue{true}\\
+ Versions of \pkg{hyperref} before 6.79h set the link anchors after the
+ heading of the starred versions of commands like \cs{part*}, \cs{chapter*},
+ etc. instead of before them. Since then, this problem has been resolved at
+ the suggestion of \KOMAScript's author. But because the change took more
+ than a year, a patch was added to \pkg*{scrhack}. Although this can also be
+ deactivated with \opt{hyperref=false}, you should instead use an up-to-date
+ \pkg{hyperref} release. In this case the legacy version of \pkg*{scrhack}
+ automatically deactivates this unnecessary patch.
+\item[\opt{listings=\meta{boolean}}:] \hfill
+ initial: \optvalue{true}, default: \optvalue{true}\\
+ After package \pkg{listings} is loaded, load \file{listings.hak} to fix the
+ issue explained in \autoref{sec:history}. This also provides the full
+ functionality of \pkg{tocbasic} to old versions of \pkg{listings}. With
+ newer versions, also the legacy version of \pkg*{scrhack} automatically
+ deactivates this unnecessary patch.
+\item[\opt{lscape=\meta{boolean}}:] \hfill
+ initial: \optvalue{true}, default: \optvalue{true}\\
+ The \pkg{lscape} package defines a \env{landscape} environment to set the
+ page contents, but not the header or footer in landscape mode. Inside this
+ environment, \len{textheight}is set to the value of \len{textwidth}, but
+ \len{textwidth} is not set to the former value of \len{textheight}. This is
+ inconsistent. As far as I know, \len{textwidth} is left unchanged because
+ setting it to \len{textheight} could interfere with other packages or user
+ commands. But changing \len{textheight} also has this potential, and indeed
+ it breaks, for example, \pkg{showframe} and \pkg{scrlayer}. Thus it would be
+ best if \len{textheight} too remained unchanged. After package \pkg{lscape}
+ is loaded, the legacy version of \pkg*{scrhack} loads \file{lscape.hak},
+ that uses the \pkg{xpatch} package to modify the \env{landscape}
+ environment's start macro \cs{landscape} appropriately.
+
+ Incidentally, the \pkg{pdflscape} package also uses \pkg{lscape}, so this
+ option affects the functioning of this package too.
+\item[\opt{nomencl=\meta{boolean}}:] \hfill
+ initial: \optvalue{true}, default: \optvalue{true}\\
+ After package \pkg{nomencl} is loaded, load \file{nomencl.hak} to fix the
+ issue explained in \autoref{sec:history}. This is a little bit more
+ complicated, because the \pkg*{nomencl} author has also adapted his
+ package to support \pkg{tocbasic}. So additional versions checks are done.
+\item[\opt{setspace=\meta{boolean}}:] \hfill
+ initial: \optvalue{true}, default: \optvalue{true}\\
+ Some packages assume that the class-internal macro \cs{@ptsize} both is
+ defined and expands to an integer. For compatibility,
+ \href{https://komascript.de/}{\KOMAScript} defines \cs{@ptsize} even if the
+ basic font size is something other than 10\,pt, 11\,pt, or 12\,pt.
+ \href{https://komascript.de/}{\KOMAScript} also allows non-integer font
+ sizes. So \cs{@ptsize} can, of course, also expand to a non-integer number.
+
+ One of the packages that cannot cope with a non-integer \cs{@ptsize} is
+ \pkg{setspace}. Additionally, the values set by this package are always
+ dependent on the basic font size, even if the setting is made in the context
+ of another font size. The legacy version of \pkg{scrhack} loads the hack
+ \file{setspace.hak} after package \pkg{setspace} to solves both problems by
+ redefining \cs{onehalfspacing} and \cs{doublespacing} to set the spacing
+ relative to the actual font size.
+
+ \textbf{Note:} if you use \pkg{setspace} with either the
+ \opt{onehalfspacing} or \opt{doublespacing} option, you must load
+ \pkg*{scrhack} first.
+\item[\opt{standardsections=\meta{boolean}}] \hfill
+ initial: \optvalue{false}, default: \optvalue{true}\\
+ Various packages assume that the sectioning commands are defined in a
+ specific way, corresponding to the definitions in the standard classes. But
+ for some classes this is not the case. For example, the
+ \href{https://komascript.de/}{\KOMAScript} classes use a completely
+ different implementation to provide many additional features. But this can
+ cause problems for packages that depend on the definition of the standard
+ classes. The legacy version of \pkg*{scrhack} offers the option to force
+ the sectioning commands \cs{part}, \cs{chapter}, \cs{section},
+ \cs{subsection}, \cs{subsubsection}, \cs{paragraph}, and \cs{subparagraph}
+ to be compatible with those in the standard classes. When \cs{chapter} is
+ defined, the definitions are based on those in \cls{book}. When \cs{chapter}
+ is undefined, the definitions of \cls{article} are used.
+
+ If you are using a \href{https://komascript.de/}{\KOMAScript} class, several
+ features of these classes are also deactivated as side effect. For example,
+ the commands to define or modify sectioning commands or option
+ \opt{headings} are no longer available, and commands like \cs{partformat}
+ have different defaults.
+
+ Because this hack has the potential to do more harm than good, it issues
+ several warnings. Also it is not activated simply by loading the legacy
+ version of \pkg*{scrhack} package. If you want to use it, you must explicitly
+ activate this option when you load the package. Late activation or
+ deactivation is not supported.
+
+ Since there are often less invasive solutions to fix the problem of package
+ incompatibilities, using this hack is not recommended. It is provided only
+ as a last resort for emergencies.
+\end{description}
+%
+% \iffalse
+%</doc>
+% \fi
+%
+% \MaybeStop{\printbibliography[heading=bibintoc]\PrintIndex}
+%
+% \iffalse
+%<*package>
+%<@@=scrhack>
+% \fi
+% \section{Implementation}
+%
+% Because \pkg*{scrhack} is not longer a
+% \href{https://komascript.de/}{\KOMAScript} package, it does not use the
+% \texttt{KOMA} family for options any longer. Instead it uses the new
+% \LaTeX{} kernel feature of key-value-options introduced in
+% \autocite{latexnews35}. So we need at least \LaTeX{} 2022-06-01:
+% \begin{macrocode}
+\ifnum 0=\ifcsname IfFormatAtLeastTF\endcsname
+ \IfFormatAtLeastTF{2022-06-01}{1}{0}%
+ \else
+ 0%
+ \fi\relax
+ \PackageError{scrhack}{LaTeX kernel too old}{%
+ The package needs at least LaTeX 2022-06-01.\MessageBreak
+ This error is fatal. Loading will be aborted.%
+ }%
+ \endinput
+\fi
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% \subsection{Messages}
+%
+% We need some messages, that are not specific for only one use-case.
+% \begin{itemize}
+% \item If an option is ignored, because it cannot be handled after already
+% loading the enhancement package. \#1 is the name option, \#2 is the
+% enhancement package.
+% \end{itemize}
+% \begin{macrocode}
+\msg_new:nnn { scrhack } { option-too-late }
+ {
+ option~`#1'~after~loading~package~`#2'~ignored.
+ }
+% \end{macrocode}
+% \begin{itemize}
+% \item If an option is ignored, because it is deprecated.
+% \end{itemize}
+% \begin{macrocode}
+\msg_new:nnn { scrhack } { deprecated-option }
+ {
+ deprecated~option~`#1'~ignored.
+ }
+% \end{macrocode}
+%
+% \subsection{Emulating \file{float.hak}}
+% First we declare the options using the new key-value interface:
+% \begin{macrocode}
+\DeclareKeys{%
+ float .code = \@@_switch_float:n { #1 },
+ float .default:n = true,
+ float .usage = preamble,
+}
+% \end{macrocode}
+%
+% \ExplSyntaxOn
+% \begin{macro}{\__scrhack_switch_float:n}
+% \ExplSyntaxOff
+% This is used to switch the state and add or remove the hook if needed. A new
+% boolean is used to know, whether the hook has been put. Using
+% \opt{float=true}, if package \pkg{floatbytocbasic} already has been loaded
+% isn't a foul. So we just write an information to the \file{log}. But using
+% \opt{float=false}, if package \pkg{floatbytocbasic} already has been loaded
+% may be wrong. So we use a warning message. We also warn if a not allowed
+% value is used.
+% \begin{macrocode}
+\bool_new:N \@@_float_bool
+
+\cs_new:Nn \@@_switch_float:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { floatbytocbasic }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { float = true } { floatbytocbasic }
+ }
+ {
+ \bool_if:NF \@@_float_bool
+ {
+ \hook_gput_code:nnn { package/float/after } { scrhack }
+ {
+ \RequirePackage { floatbytocbasic }
+ }
+ \bool_gset_true:N \@@_float_bool
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { floatbytocbasic }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { float=false } { floatbytocbasic }
+ }
+ {
+ \bool_if:NT \@@_float_bool
+ {
+ \hook_gremove_code:nn { package/float/after } { scrhack }
+ }
+ \bool_gset_false:N \@s at _float_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { float }
+ }
+ }
+\SetKeys{float=true}
+% \end{macrocode}
+% \end{macro}
+% \ExplSyntaxOff
+%
+% \subsection{Emulating \file{floatrow.hak}}
+% First we declare the options using the new key-value interface:
+% \begin{macrocode}
+\DeclareKeys{%
+ floatrow .code = \@@_switch_floatrow:n { #1 },
+ floatrow .default:n = true,
+ floatrow .usage = preamble,
+}
+% \end{macrocode}
+%
+% \ExplSyntaxOn
+% \begin{macro}{\__scrhack_switch_floatrow:n}
+% \ExplSyntaxOff
+% This is used to switch the state and add or remove the hook if needed. A new
+% boolean is used to know, whether the hook has been put. Using
+% \opt{floatrow=true}, if package \pkg{floatrowbytocbasic} already has been
+% loaded isn't a foul. So we just write an information to the \file{log}. But
+% using \opt{floatrow=false}, if package \pkg{floatrowbytocbasic} already has
+% been loaded may be wrong. So we use a warning message. We also warn if a not
+% allowed value is used.
+% \begin{macrocode}
+\bool_new:N \@@_floatrow_bool
+
+\cs_new:Nn \@@_switch_floatrow:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { floatrowbytocbasic }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { floatrow = true } { floatrowbytocbasic }
+ }
+ {
+ \bool_if:NF \@@_floatrow_bool
+ {
+ \hook_gput_code:nnn { package/floatrow/after }
+ { scrhack }
+ {
+ \RequirePackage { floatrowbytocbasic }
+ }
+ \bool_gset_true:N \@@_floatrow_bool
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { floatrowbytocbasic }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { floatrow=false } { floatrowbytocbasic }
+ }
+ {
+ \bool_if:NT \@@_floatrow_bool
+ {
+ \hook_gremove_code:nn { package/floatrow/after }
+ { scrhack }
+ }
+ \bool_gset_false:N \@s at _floatrow_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { floatrow }
+ }
+ }
+\SetKeys{floatrow=true}
+% \end{macrocode}
+% \end{macro}
+% \ExplSyntaxOff
+%
+% \subsection{Emulating \file{hyperref.hak}}
+%
+% First we declare the options using the new key-value interface:
+% \begin{macrocode}
+\DeclareKeys{%
+ hyperref .code = \@@_switch_hyperref:n { #1 },
+ hyperref .default:n = true,
+ hyperref .usage = preamble,
+}
+% \end{macrocode}
+%
+% \ExplSyntaxOn
+% \begin{macro}{\__scrhack_switch_hyperref:n}
+% \ExplSyntaxOff
+% This is somehow special, because the hack is deprecated. It only has been
+% needed for \pkg{hyperref} versions released before 2009-11-24, which would
+% not work with the \LaTeX{} kernel version needed by this version of
+% \pkg*{scrhack}. So emulating the hack does not make sense. Instead the
+% initial value of the option is changed to implicit \optvalue{false} and
+% switching it on explicitly does result in a warning.
+% \begin{macrocode}
+\cs_new:Nn \@@_switch_hyperref:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \msg_warning:nnn { scrhack } { deprecated-option }
+ { hyperref=#1 }
+ }
+ {false} {
+ \msg_info:nnn { scrhack } { deprecated-option }
+ { hyperref=#1 }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { hyperref }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \ExplSyntaxOff
+%
+% \subsection{Emulating \file{listings.hak}}
+% First we declare the options using the new key-value interface:
+% \begin{macrocode}
+\DeclareKeys{%
+ listings .code = \@@_switch_listings:n { #1 },
+ listings .default:n = true,
+ listings .usage = preamble,
+}
+% \end{macrocode}
+%
+% \ExplSyntaxOn
+% \begin{macro}{\__scrhack_switch_listings:n}
+% \ExplSyntaxOff
+% This is somehow special, because the hack is deprecated. It only has
+% been needed for \pkg{listings} version released before 2024-02-15. So
+% instead of using any patch hacks, users should update \pkg{listings}. So
+% emulating the hack does not make sense. Instead the initial value of the
+% option is changed to implicit \optvalue{false} and switching it on
+% explicitly does result in a warning.
+% \begin{macrocode}
+\cs_new:Nn \@@_switch_listings:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \msg_warning:nnn { scrhack } { deprecated-option }
+ { listings=#1 }
+ }
+ {false} {
+ \msg_info:nnn { scrhack } { deprecated-option }
+ { listings=#1 }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { listings }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \ExplSyntaxOff
+%
+% \subsection{Emulating \file{lscape.hak}}
+% First we declare the options using the new key-value interface:
+% \begin{macrocode}
+\DeclareKeys{%
+ lscape .code = \@@_switch_lscape:n { #1 },
+ lscape .default:n = true,
+ lscape .usage = preamble,
+}
+% \end{macrocode}
+%
+% \ExplSyntaxOn
+% \begin{macro}{\__scrhack_switch_lscape:n}
+% \ExplSyntaxOff
+% This is used to switch the state and add or remove the hook if needed. A new
+% boolean is used to know, whether the hook has been put. Using
+% \opt{lscape=true}, if package \pkg{lscapeenhanced} already has been
+% loaded isn't a foul. So we just write an information to the \file{log}. But
+% using \opt{lscape=false}, if package \pkg{lscapeenhanced} already has
+% been loaded may be wrong. So we use a warning message. We also warn if a not
+% allowed value is used.
+% \begin{macrocode}
+\bool_new:N \@@_lscape_bool
+
+\cs_new:Nn \@@_switch_lscape:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { lscapeenhanced }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { lscape = true } { lscapeenhanced }
+ }
+ {
+ \bool_if:NF \@@_lscape_bool
+ {
+ \hook_gput_code:nnn { package/lscape/after }
+ { scrhack }
+ {
+ \RequirePackage { lscapeenhanced }
+ }
+ \bool_gset_true:N \@@_lscape_bool
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { lscapeenhanced }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { lscape=false } { lscapeenhanced }
+ }
+ {
+ \bool_if:NT \@@_lscape_bool
+ {
+ \hook_gremove_code:nn { package/lscape/after }
+ { scrhack }
+ }
+ \bool_gset_false:N \@s at _lscape_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { lscape }
+ }
+ }
+\SetKeys{lscape=true}
+% \end{macrocode}
+% \end{macro}
+% \ExplSyntaxOff
+%
+% \subsection{Emulating \file{nomencl.hak}}
+%
+% First we declare the options using the new key-value interface:
+% \begin{macrocode}
+\DeclareKeys{%
+ nomencl .code = \@@_switch_nomencl:n { #1 },
+ nomencl .default:n = true,
+ nomencl .usage = preamble,
+}
+% \end{macrocode}
+%
+% \ExplSyntaxOn
+% \begin{macro}{\__scrhack_switch_nomencl:n}
+% \ExplSyntaxOff
+% This is somehow special, because the hack is deprecated. It only has been
+% needed for \pkg{nomencl} versions released before 2019-01-23. So updating
+% the package would be the better \emph{hack}. So emulating the hack does not
+% make sense. Instead the initial value of the option is changed to implicit
+% \optvalue{false} and switching it on explicitly does result in a warning.
+% \begin{macrocode}
+\cs_new:Nn \@@_switch_nomencl:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \msg_warning:nnn { scrhack } { deprecated-option }
+ { nomencl=#1 }
+ }
+ {false} {
+ \msg_info:nnn { scrhack } { deprecated-option }
+ { nomencl=#1 }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { nomencl }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \ExplSyntaxOff
+%
+%
+% \subsection{Emulating \file{setspace.hak}}
+% First we declare the options using the new key-value interface:
+% \begin{macrocode}
+\DeclareKeys{%
+ setspace .code = \@@_switch_setspace:n { #1 },
+ setspace .default:n = true,
+ setspace .usage = preamble,
+}
+% \end{macrocode}
+%
+% \ExplSyntaxOn
+% \begin{macro}{\__scrhack_switch_setspace:n}
+% \ExplSyntaxOff
+% This is used to switch the state and add or remove the hook if needed. A new
+% boolean is used to know, whether the hook has been put. Using
+% \opt{setspace=true}, if package \pkg{setspaceenhanced} already has been loaded
+% isn't a foul. So we just write an information to the \file{log}. But using
+% \opt{setspace=false}, if package \pkg{setspaceenhanced} already has been loaded
+% may be wrong. So we use a warning message. We also warn if a not allowed
+% value is used.
+% \begin{macrocode}
+\bool_new:N \@@_setspace_bool
+
+\cs_new:Nn \@@_switch_setspace:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { setspaceenhanced }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { setspace = true } { setspaceenhanced }
+ }
+ {
+ \bool_if:NF \@@_setspace_bool
+ {
+ \hook_gput_code:nnn { package/setspace/after } { scrhack }
+ {
+ \exp_last_unbraced:Ne \RequirePackage
+ {
+ [ \use:c { @raw at opt@setspace.sty },
+ byselectfont,
+ keepfontsize ]
+ }
+ { setspaceenhanced }
+ }
+ \bool_gset_true:N \@@_setspace_bool
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { setspaceenhanced }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { setspace=false } { setspaceenhanced }
+ }
+ {
+ \bool_if:NT \@@_setspace_bool
+ {
+ \hook_gremove_code:nn { package/setspace/after } { scrhack }
+ }
+ \bool_gset_false:N \@s at _setspace_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { setspace }
+ }
+ }
+\SetKeys{setspace=true}
+% \end{macrocode}
+% \end{macro}
+% \ExplSyntaxOff
+%
+% \subsection{Emulating \file{standardsectioning.hak}}
+% First we declare the options using the new key-value interface:
+% \begin{macrocode}
+\DeclareKeys{%
+ standardsections .code = \@@_switch_standardsectioning:n { #1 },
+ standardsections .default:n = true,
+ standardsections .usage = preamble,
+}
+% \end{macrocode}
+%
+% \ExplSyntaxOn
+% \begin{macro}{\__scrhack_switch_standardsectioning:n}
+% \ExplSyntaxOff
+% This is used to switch the state and add or remove the hook if needed. A new
+% boolean is used to know, whether the hook has been put. Using
+% \opt{standardsectioning=true}, if package \pkg{standardsectioning}
+% already has been loaded isn't a foul. So we just write an information to the
+% \file{log}. But using \opt{standardsectioning=false}, if package
+% \pkg{standardsectioning} already has been loaded may be wrong. So
+% we use a warning message. We also warn if a not allowed value is used.
+% \begin{macrocode}
+\bool_new:N \@@_standardsectioning_bool
+
+\cs_new:Nn \@@_switch_standardsectioning:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { standardsectioning }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { standardsectioning = true } { standardsectioning }
+ }
+ {
+ \bool_if:NF \@@_standardsectioning_bool
+ {
+ \str_set:Nx \l_tmpa_str { \cs_meaning:N \normalsize }
+ \str_if_in:NnTF
+ \l_tmpa_str
+ { \@latex at error }
+ {
+ \hook_gput_code:nnn { class/after } { scrhack }
+ {
+ \RequirePackage { standardsectioning }
+ \exp_args:Nnnx \hook_gput_code:nnn
+ { begindocument/before } { scrhack }
+ {
+ \exp_not:N \cs_gset:Npn
+ \exp_after:wN \exp_not:N
+ \cs:w ver at standardsectioning.sty \cs_end:
+ {
+ \cs:w ver at standardsectioning.sty \cs_end:
+ }
+ }
+ \cs_undefine:c { var at standardsectioning.sty }
+ }
+ \bool_gset_true:N \@@_standardsectioning_bool
+ }
+ {
+ \RequirePackage{ standardsectioning }
+ \bool_gset_false:N \@@_standardsectioning_bool
+ }
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { standardsectioning }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { standardsectioning=false } { standardsectioning }
+ }
+ {
+ \bool_if:NT \@@_standardsectioning_bool
+ {
+ \hook_gremove_code:nn { class/after } { scrhack }
+ }
+ \bool_gset_false:N \@s at _standardsectioning_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { standardsectioning }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \ExplSyntaxOff
+%
+%
+%
+% \subsection{Processing the options}
+% Last but not least, we set the defaults and process the options.
+% \begin{macrocode}
+\ExplSyntaxOff
+\ProcessKeyOptions\relax
+% \end{macrocode}
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+% \PrintChanges
+%
+% \endinput
+% Local Variables:
+% mode: doctex
+% ispell-local-dictionary: "en_US"
+% eval: (flyspell-mode 1)
+% TeX-master: t
+% eval: (setcar (or (cl-member "Index" (setq-local TeX-command-list (copy-alist TeX-command-list)) :key #'car :test #'string-equal) (setq-local TeX-command-list (cons nil TeX-command-list))) '("Index" "mkindex %s" TeX-run-index nil t :help "makeindex for dtx"))
+% End:
Property changes on: trunk/Master/texmf-dist/source/latex/scrhack/scrhack.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/scrhack/scrhack-2023-07-07.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/scrhack/scrhack-2023-07-07.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/scrhack/scrhack-2023-07-07.sty 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,190 @@
+%%
+%% This is file `scrhack-2023-07-07.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scrhack-2023-07-07.dtx (with options: `package,identify')
+%% scrhack-2023-07-07.dtx (with options: `package,option')
+%% scrhack-2023-07-07.dtx (with options: `package,body')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from scrhack-2023-07-07.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%%% using: package,identify
+\ProvidesPackage{scrhack}[%
+ 2024-04-17 v3.42
+ legacy version of package scrhack%
+]
+%%% using: package,option
+\RequirePackage{scrkbase}[2022-11-11]
+\@ifpackagelater{scrkbase}{2023-07-14}{%
+ \PackageInfo{scrhack}{KOMA-Script >= 3.42 detected.\MessageBreak
+ In this case you should not use this legacy version of\MessageBreak
+ scrhack, but should be able to use the current version\MessageBreak
+ or even replace loading scrhack by loading really\MessageBreak
+ needed third-party patches, e.g., floatbytocbasic.\MessageBreak
+ But you are the boss ..}%
+}{%
+ \@ifpackagelater{scrkbase}{2022-11-11}{%
+ \PackageWarningNoLine{scrhack}{KOMA-Script < 3.42 detected.\MessageBreak
+ In this case the original scrhack of that version\MessageBreak
+ should also be installed and used instead of this\MessageBreak
+ legacy package}%
+ }{%
+ \PackageError{scrhack}{incompatible KOMA-Script < v3.39 detected}{%
+ This error is fatal!\MessageBreak
+ Loading of scrhack will be aborted!}%
+ \expandafter\let\csname ver at scrhack.sty\endcsname\undefined
+ \endinput
+ }%
+}
+\KOMA at ifkey{hyperref}{@scrhack at hyperref}%
+\KOMAExecuteOptions{hyperref=true}%
+\KOMA at ifkey{floatrow}{@scrhack at floatrow}
+\KOMAExecuteOptions{floatrow=true}
+\KOMA at ifkey{float}{@scrhack at float}%
+\KOMAExecuteOptions{float=true}%
+\KOMA at ifkey{listings}{@scrhack at listings}
+\KOMAExecuteOptions{listings=true}
+\RequirePackage{xpatch}%
+\KOMA at ifkey{nomencl}{@scrhack at nomencl}
+\KOMAExecuteOptions{nomencl=true}
+\KOMA at ifkey{setspace}{@scrhack at setspace}
+\KOMAExecuteOptions{setspace=true}
+\RequirePackage{xpatch}%
+\KOMA at ifkey{lscape}{@scrhack at lscape}%
+\KOMAExecuteOptions{lscape=true}%
+\KOMA at ifkey{standardsections}{@scrhack at standardsections}
+\KOMAExecuteOptions{standardsections=false}
+\KOMAProcessOptions\relax
+%%% using: package,body
+\newcommand{\scr at ifexpected}[2]{%
+ \begingroup
+ \let\@tempa#1
+ #2
+ \ifx\@tempa#1
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup
+}
+\newcommand*{\scr at hack@load}[2]{%
+ \expandafter\ifx\csname ver@#2.#1\endcsname\relax
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\ifx\csname ver@#2.hak\endcsname\relax
+ \expandafter\expandafter\expandafter\@firstoftwo
+ \else
+ \expandafter\expandafter\expandafter\@secondoftwo
+ \fi
+ \fi
+ {%
+ \PackageInfo{scrhack}{loading #2 hack}%
+ \edef\reserved at a{%
+ \noexpand\makeatletter\noexpand\input{#2.hak}%
+ \noexpand\catcode`\noexpand\@\the\catcode`\@\relax
+ }\reserved at a
+ }{%
+ \PackageInfo{scrhack}{ignorring #2 hack}%
+ }%
+}
+\BeforePackage{hyperref}{%
+ \scr at ifundefinedorrelax{hy at insteadofrefstepcounter}{}{%
+ \PackageInfo{scrhack}{hyperref hack deactivated because of\MessageBreak
+ detection of KOMA-Script class, that doesn't\MessageBreak
+ need that hack,}%
+ \KOMAExecuteOptions[scrhack.sty]{hyperref=false}%
+ }%
+}
+\AfterPackage*{hyperref}{%
+ \if at scrhack@hyperref
+ \@ifpackagelater{hyperref}{2009/11/24}{%
+ \PackageInfo{scrhack}{hyperref hack deactivated because of\MessageBreak
+ detection of hyperref version, that doesn't\MessageBreak
+ need that hack,}%
+ \KOMAExecuteOptions[scrhack.sty]{hyperref=false}%
+ }{%
+ \AtEndOfPackage{%
+ \KOMA at key[scrhack.sty]{hyperref}[true]{%
+ \PackageWarning{scrhack}{option `hyperref=#1' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if at scrhack@hyperref\scr at hack@load\@pkgextension{hyperref}\fi
+ }%
+ }%
+ \fi
+}
+\AfterPackage*{floatrow}{%
+ \KOMAoptions{float=false}%
+ \PackageInfo{scrhack}{option `float' deactivated}%
+ \KOMA at key[scrhack.sty]{floatrow}{%
+ \PackageWarning{scrhack}{option `floatrow' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if at scrhack@floatrow\scr at hack@load\@pkgextension{floatrow}\fi
+}
+\AfterPackage*{float}{%
+ \KOMA at key[scrhack.sty]{float}{%
+ \PackageWarning{scrhack}{option `float' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if at scrhack@float\scr at hack@load\@pkgextension{float}\fi
+}
+\AfterPackage*{listings}{%
+ \@ifpackagelater{lstmisc}{2024/02/15}{%
+ \PackageInfo{scrhack}{listings hack deactivated because of\MessageBreak
+ detection of listings version, that doesn't\MessageBreak
+ need that hack,}%
+ \KOMAExecuteOptions[scrhack.sty]{listings=false}%
+ }{%
+ \if at scrhack@listings\scr at hack@load\@pkgextension{listings}\fi
+ }%
+ \KOMA at key[scrhack.sty]{listings}[true]{%
+ \PackageWarning{scrhack}{option `listings=#1' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+}
+\AfterPackage*{nomencl}{%
+ \KOMA at key[scrhack.sty]{nomencl}{%
+ \PackageWarning{scrhack}{option `nomencl' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if at scrhack@nomencl\scr at hack@load\@pkgextension{nomencl}\fi
+}
+\AfterPackage*{setspace}{%
+ \KOMA at key[scrhack.sty]{setspace}{%
+ \PackageWarning{scrhack}{option `setspace' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if at scrhack@setspace\scr at hack@load\@pkgextension{setspace}\fi
+}
+\AfterPackage*{lscape}{%
+ \if at scrhack@lscape\scr at hack@load\@pkgextension{lscape}\else
+ \KOMA at key[scrhack.sty]{lscape}{%
+ \PackageWarning{scrhack}{option `lscape' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \fi
+}
+\AtEndOfPackage{%
+ \if at scrhack@standardsections
+ \PackageInfo{scrhack}{loading standard classes sections hack}%
+ \input{standardsections.hak}%
+ \fi
+}
+\endinput
+%%
+%% End of file `scrhack-2023-07-07.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/scrhack/scrhack-2023-07-07.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/scrhack/scrhack.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/scrhack/scrhack.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/scrhack/scrhack.sty 2024-09-05 20:38:40 UTC (rev 72204)
@@ -0,0 +1,390 @@
+%%
+%% This is file `scrhack.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scrhack.dtx (with options: `package')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from scrhack.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+\DeclareRelease{v3.41}{2023-07-07}{scrhack-2023-07-07.sty}
+\DeclareCurrentRelease{}{2023-07-15}
+\ProvidesPackage{scrhack}
+ [2024-09-04 v3.42
+ scrhack emulation package]
+\ifnum 0=\ifcsname IfFormatAtLeastTF\endcsname
+ \IfFormatAtLeastTF{2022-06-01}{1}{0}%
+ \else
+ 0%
+ \fi\relax
+ \PackageError{scrhack}{LaTeX kernel too old}{%
+ The package needs at least LaTeX 2022-06-01.\MessageBreak
+ This error is fatal. Loading will be aborted.%
+ }%
+ \endinput
+\fi
+\ExplSyntaxOn
+\msg_new:nnn { scrhack } { option-too-late }
+ {
+ option~`#1'~after~loading~package~`#2'~ignored.
+ }
+\msg_new:nnn { scrhack } { deprecated-option }
+ {
+ deprecated~option~`#1'~ignored.
+ }
+\DeclareKeys{%
+ float .code = \__scrhack_switch_float:n { #1 },
+ float .default:n = true,
+ float .usage = preamble,
+}
+\bool_new:N \__scrhack_float_bool
+
+\cs_new:Nn \__scrhack_switch_float:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { floatbytocbasic }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { float = true } { floatbytocbasic }
+ }
+ {
+ \bool_if:NF \__scrhack_float_bool
+ {
+ \hook_gput_code:nnn { package/float/after } { scrhack }
+ {
+ \RequirePackage { floatbytocbasic }
+ }
+ \bool_gset_true:N \__scrhack_float_bool
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { floatbytocbasic }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { float=false } { floatbytocbasic }
+ }
+ {
+ \bool_if:NT \__scrhack_float_bool
+ {
+ \hook_gremove_code:nn { package/float/after } { scrhack }
+ }
+ \bool_gset_false:N \@s at _float_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { float }
+ }
+ }
+\SetKeys{float=true}
+\DeclareKeys{%
+ floatrow .code = \__scrhack_switch_floatrow:n { #1 },
+ floatrow .default:n = true,
+ floatrow .usage = preamble,
+}
+\bool_new:N \__scrhack_floatrow_bool
+
+\cs_new:Nn \__scrhack_switch_floatrow:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { floatrowbytocbasic }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { floatrow = true } { floatrowbytocbasic }
+ }
+ {
+ \bool_if:NF \__scrhack_floatrow_bool
+ {
+ \hook_gput_code:nnn { package/floatrow/after }
+ { scrhack }
+ {
+ \RequirePackage { floatrowbytocbasic }
+ }
+ \bool_gset_true:N \__scrhack_floatrow_bool
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { floatrowbytocbasic }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { floatrow=false } { floatrowbytocbasic }
+ }
+ {
+ \bool_if:NT \__scrhack_floatrow_bool
+ {
+ \hook_gremove_code:nn { package/floatrow/after }
+ { scrhack }
+ }
+ \bool_gset_false:N \@s at _floatrow_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { floatrow }
+ }
+ }
+\SetKeys{floatrow=true}
+\DeclareKeys{%
+ hyperref .code = \__scrhack_switch_hyperref:n { #1 },
+ hyperref .default:n = true,
+ hyperref .usage = preamble,
+}
+\cs_new:Nn \__scrhack_switch_hyperref:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \msg_warning:nnn { scrhack } { deprecated-option }
+ { hyperref=#1 }
+ }
+ {false} {
+ \msg_info:nnn { scrhack } { deprecated-option }
+ { hyperref=#1 }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { hyperref }
+ }
+ }
+\DeclareKeys{%
+ listings .code = \__scrhack_switch_listings:n { #1 },
+ listings .default:n = true,
+ listings .usage = preamble,
+}
+\cs_new:Nn \__scrhack_switch_listings:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \msg_warning:nnn { scrhack } { deprecated-option }
+ { listings=#1 }
+ }
+ {false} {
+ \msg_info:nnn { scrhack } { deprecated-option }
+ { listings=#1 }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { listings }
+ }
+ }
+\DeclareKeys{%
+ lscape .code = \__scrhack_switch_lscape:n { #1 },
+ lscape .default:n = true,
+ lscape .usage = preamble,
+}
+\bool_new:N \__scrhack_lscape_bool
+
+\cs_new:Nn \__scrhack_switch_lscape:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { lscapeenhanced }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { lscape = true } { lscapeenhanced }
+ }
+ {
+ \bool_if:NF \__scrhack_lscape_bool
+ {
+ \hook_gput_code:nnn { package/lscape/after }
+ { scrhack }
+ {
+ \RequirePackage { lscapeenhanced }
+ }
+ \bool_gset_true:N \__scrhack_lscape_bool
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { lscapeenhanced }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { lscape=false } { lscapeenhanced }
+ }
+ {
+ \bool_if:NT \__scrhack_lscape_bool
+ {
+ \hook_gremove_code:nn { package/lscape/after }
+ { scrhack }
+ }
+ \bool_gset_false:N \@s at _lscape_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { lscape }
+ }
+ }
+\SetKeys{lscape=true}
+\DeclareKeys{%
+ nomencl .code = \__scrhack_switch_nomencl:n { #1 },
+ nomencl .default:n = true,
+ nomencl .usage = preamble,
+}
+\cs_new:Nn \__scrhack_switch_nomencl:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \msg_warning:nnn { scrhack } { deprecated-option }
+ { nomencl=#1 }
+ }
+ {false} {
+ \msg_info:nnn { scrhack } { deprecated-option }
+ { nomencl=#1 }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { nomencl }
+ }
+ }
+\DeclareKeys{%
+ setspace .code = \__scrhack_switch_setspace:n { #1 },
+ setspace .default:n = true,
+ setspace .usage = preamble,
+}
+\bool_new:N \__scrhack_setspace_bool
+
+\cs_new:Nn \__scrhack_switch_setspace:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { setspaceenhanced }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { setspace = true } { setspaceenhanced }
+ }
+ {
+ \bool_if:NF \__scrhack_setspace_bool
+ {
+ \hook_gput_code:nnn { package/setspace/after } { scrhack }
+ {
+ \exp_last_unbraced:Ne \RequirePackage
+ {
+ [ \use:c { @raw at opt@setspace.sty },
+ byselectfont,
+ keepfontsize ]
+ }
+ { setspaceenhanced }
+ }
+ \bool_gset_true:N \__scrhack_setspace_bool
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { setspaceenhanced }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { setspace=false } { setspaceenhanced }
+ }
+ {
+ \bool_if:NT \__scrhack_setspace_bool
+ {
+ \hook_gremove_code:nn { package/setspace/after } { scrhack }
+ }
+ \bool_gset_false:N \@s at _setspace_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { setspace }
+ }
+ }
+\SetKeys{setspace=true}
+\DeclareKeys{%
+ standardsections .code = \__scrhack_switch_standardsectioning:n { #1 },
+ standardsections .default:n = true,
+ standardsections .usage = preamble,
+}
+\bool_new:N \__scrhack_standardsectioning_bool
+
+\cs_new:Nn \__scrhack_switch_standardsectioning:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { standardsectioning }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { standardsectioning = true } { standardsectioning }
+ }
+ {
+ \bool_if:NF \__scrhack_standardsectioning_bool
+ {
+ \str_set:Nx \l_tmpa_str { \cs_meaning:N \normalsize }
+ \str_if_in:NnTF
+ \l_tmpa_str
+ { \@latex at error }
+ {
+ \hook_gput_code:nnn { class/after } { scrhack }
+ {
+ \RequirePackage { standardsectioning }
+ \exp_args:Nnnx \hook_gput_code:nnn
+ { begindocument/before } { scrhack }
+ {
+ \exp_not:N \cs_gset:Npn
+ \exp_after:wN \exp_not:N
+ \cs:w ver at standardsectioning.sty \cs_end:
+ {
+ \cs:w ver at standardsectioning.sty \cs_end:
+ }
+ }
+ \cs_undefine:c { var at standardsectioning.sty }
+ }
+ \bool_gset_true:N \__scrhack_standardsectioning_bool
+ }
+ {
+ \RequirePackage{ standardsectioning }
+ \bool_gset_false:N \__scrhack_standardsectioning_bool
+ }
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { standardsectioning }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { standardsectioning=false } { standardsectioning }
+ }
+ {
+ \bool_if:NT \__scrhack_standardsectioning_bool
+ {
+ \hook_gremove_code:nn { class/after } { scrhack }
+ }
+ \bool_gset_false:N \@s at _standardsectioning_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { standardsectioning }
+ }
+ }
+\ExplSyntaxOff
+\ProcessKeyOptions\relax
+\endinput
+%%
+%% End of file `scrhack.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/scrhack/scrhack.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check 2024-09-05 20:36:52 UTC (rev 72203)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check 2024-09-05 20:38:40 UTC (rev 72204)
@@ -760,7 +760,7 @@
schule schulschriften schwalbe-chess
scikgtex sciposter scientific-thesis-cover scontents
scrabble scrambledenvs scratch scratch3 scratchx screenplay screenplay-pkg
- scripture scrjrnl scrlayer-fancyhdr scrlttr2copy scrwfile scsnowman
+ scrhack scripture scrjrnl scrlayer-fancyhdr scrlttr2copy scrwfile scsnowman
sdaps sdrt sduthesis
se2thesis secdot secnum section sectionbox sectionbreak sectsty seealso
selectp selinput selnolig semantex semantic semantic-markup semaphor
Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds 2024-09-05 20:36:52 UTC (rev 72203)
+++ trunk/Master/tlpkg/libexec/ctan2tds 2024-09-05 20:38:40 UTC (rev 72204)
@@ -3413,6 +3413,7 @@
'schedule' => 'latex', # requires interaction
'schemata' => 'tex',
'scontents' => 'etex',
+ 'scrhack' => 'etex-answer-y',
'scrlayer-fancyhdr' => 'etex-answer-y',
'scrwfile' => 'etex',
'secnum' => 'etex-answer-y',
Modified: trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc 2024-09-05 20:36:52 UTC (rev 72203)
+++ trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc 2024-09-05 20:38:40 UTC (rev 72204)
@@ -1230,6 +1230,7 @@
depend schooldocs
depend scontents
depend scrambledenvs
+depend scrhack
depend scrlayer-fancyhdr
depend scrlttr2copy
depend scrwfile
Added: trunk/Master/tlpkg/tlpsrc/scrhack.tlpsrc
===================================================================
More information about the tex-live-commits
mailing list.