diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrhack.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/scrhack.dtx | 205 |
1 files changed, 191 insertions, 14 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrhack.dtx b/Master/texmf-dist/source/latex/koma-script/scrhack.dtx index 81184c0ed01..9d5307c7385 100644 --- a/Master/texmf-dist/source/latex/koma-script/scrhack.dtx +++ b/Master/texmf-dist/source/latex/koma-script/scrhack.dtx @@ -1,8 +1,8 @@ -% \CheckSum{679} +% \CheckSum{760} % \iffalse meta-comment % ====================================================================== % scrhack.dtx -% Copyright (c) Markus Kohm, 2008-2013 +% Copyright (c) Markus Kohm, 2008-2015 % % This file is part of the LaTeX2e KOMA-Script bundle. % @@ -23,7 +23,7 @@ % of TeX would generate the implementation documentation. % ---------------------------------------------------------------------- % scrhack.dtx -% Copyright (c) Markus Kohm, 2008-2013 +% Copyright (c) Markus Kohm, 2008-2015 % % Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, % Version 1.3c, verteilt und/oder veraendert werden. @@ -62,7 +62,7 @@ % Right brace \} Tilde \~} % % \iffalse -%%% From File: $Id: scrhack.dtx 1383 2013-10-01 15:44:28Z mjk $ +%%% From File: $Id: scrhack.dtx 2073 2015-04-16 08:41:14Z kohm $ %<package&identify>%%% using: package,identify %<package&option>%%% using: package,option %<package&body>%%% using: package,body @@ -77,6 +77,7 @@ %<float&identify>\ProvidesFile{float.hak}[% %<floatrow&identify>\ProvidesFile{floatrow.hak}[% %<listings&identify>\ProvidesFile{listings.hak}[% +%<setspace&identify>\ProvidesFile{setspace.hak}[% %<*driver|manual|identify> %!KOMAScriptVersion package @@ -89,6 +90,7 @@ %<float&identify> float)% %<floatrow&identify> floatrow)% %<listings&identify> listings)% +%<setspace&identify> setspace)% %<*driver|manual|identify> ] %</driver|manual|identify> @@ -127,6 +129,11 @@ \from{scrhack.dtx}{hack,listings,identify}% \from{scrhack.dtx}{hack,listings,body}% }% + \file{setspace.hak}{% + \from{scrkernel-version.dtx}{file,setspace.hak}% + \from{scrhack.dtx}{hack,setspace,identify}% + \from{scrhack.dtx}{hack,setspace,body}% + }% } \@@input scrstrop.inc \else @@ -159,6 +166,7 @@ % \let\Parameter\marg % \providecommand*{\PParameter}[1]{\texttt{\{#1\}}} % \providecommand*{\Counter}[1]{\texttt{\mbox{#1}}} +% \providecommand*{\Option}[1]{\texttt{#1}} % \providecommand*{\OptionValue}[2]{\texttt{\mbox{#1=}\linebreak[3]\mbox{#2}}} % \let\PValue\texttt % @@ -338,6 +346,34 @@ switch off the \Package{listings} hack using loading package \Package{scrhack}, but before loading package \Package{listings}. +\section{The \Package{setspace} hack} +\label{sec:scrhack.setspace} + +Package \Package{setspace} defines macros \Macro{onehalfspacing} and +\Macro{doublespacing} using \Macro{@ptsize} as an argument of +\Macro{ifcase}. But if \Macro{@ptsize} is not an integer but a real number, +this failes, because the digits from the decimal points are interpreted as +text of that case. Several solutions for this are thinkable. I've decides to +redefine \Macro{onehalfspacing} and \Macro{doublespacing}. The new definition +is more general and somehow more exact. + +% \iffalse +\begin{Declaration} + \KOption{setspace}{switch} +\end{Declaration} +% \fi +You can switch of the \Package{setspace} hack loading package +\Package{scrhack} with option \OptionValue{setspace}{false}. You may also +switch of the \Package{setspace} hack using +\Macro{KOMAoptions}\PParameter{setspace=false} or +\Macro{KOMAOption}\PParameter{setspace}\PParameter{false} somewhere after +loading package \Package{scrhack}, but before loading package +\Package{setspace}. + +Note: If you want to use \Package{setspace} with package option +\Option{onehalfspacing} or \Option{doublespacing} you have to load +\Package{scrhack} before \Package{setspace}. + % \iffalse %</manual|dtx> % \fi @@ -429,15 +465,20 @@ loading package \Package{scrhack}, but before loading package % einheitlich vor die Überschrift. % % \begin{option}{hyperref} -% \changes{v3.12}{2013/03/05}{Signalisierung mit \cs{FamilyKeyStateProcessed}} +% \changes{v3.12}{2013/03/05}{Signalisierung mit +% \cs{FamilyKeyStateProcessed}}^^A +% \changes{v3.17}{2015/03/09}{Defaulteinstellung mit +% \cs{KOMAExecuteOptions}}^^A % \begin{macrocode} %<*package&option> \KOMA@ifkey{hyperref}{@scrhack@hyperref}% -\@scrhack@hyperreftrue +\KOMAExecuteOptions{hyperref=true}% %</package&option> %<*package&body> % \end{macrocode} % \changes{v3.04b}{2009/11/09}{\textsf{hyperref}-Hack wird früher geladen} +% \changes{v3.17}{2015/03/09}{Neuere \textsf{hyperref}-Version deaktiviert +% ggf. Option \texttt{hyperref}}^^A % Hier muss ein wenig trickreicher gearbeitet werden, weil \textsf{hyperref} % die Treiberdatei per \cs{AtEndOfPackage} lädt und der Hack erst danach % installiert werden darf. Mit \cs{AfterPackage*} alleine, würde der Hack aber @@ -453,6 +494,7 @@ loading package \Package{scrhack}, but before loading package \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@key[.scrhack.sty]{hyperref}{% @@ -602,11 +644,14 @@ loading package \Package{scrhack}, but before loading package % nach. % % \begin{option}{float} -% \changes{v3.12}{2013/03/05}{Signalisierung mit \cs{FamilyKeyStateProcessed}} +% \changes{v3.12}{2013/03/05}{Signalisierung mit +% \cs{FamilyKeyStateProcessed}}^^A +% \changes{v3.17}{2015/03/09}{Defaulteinstellung mit +% \cs{KOMAExecuteOptions}}^^A % \begin{macrocode} %<*package&option> \KOMA@ifkey{float}{@scrhack@float}% -\@scrhack@floattrue +\KOMAExecuteOptions{float=true}% %</package&option> %<*package&body> \AfterPackage*{float}{% @@ -740,11 +785,14 @@ loading package \Package{scrhack}, but before loading package % nach. % % \begin{option}{floatrow} -% \changes{v3.12}{2013/03/05}{Signalisierung mit \cs{FamilyKeyStateProcessed}} +% \changes{v3.12}{2013/03/05}{Signalisierung mit +% \cs{FamilyKeyStateProcessed}}^^A +% \changes{v3.17}{2015/03/09}{Defaulteinstellung mit +% \cs{KOMAExecuteOptions}}^^A % \begin{macrocode} %<*package&option> -\KOMA@ifkey{floatrow}{@scrhack@floatrow}% -\@scrhack@floatrowtrue +\KOMA@ifkey{floatrow}{@scrhack@floatrow} +\KOMAExecuteOptions{floatrow=true} %</package&option> %<*package&body> \AfterPackage*{floatrow}{% @@ -875,11 +923,14 @@ loading package \Package{scrhack}, but before loading package % nach. % % \begin{option}{listings} -% \changes{v3.12}{2013/03/05}{Signalisierung mit \cs{FamilyKeyStateProcessed}} +% \changes{v3.12}{2013/03/05}{Signalisierung mit +% \cs{FamilyKeyStateProcessed}}^^A +% \changes{v3.17}{2015/03/09}{Defaulteinstellung mit +% \cs{KOMAExecuteOptions}}^^A % \begin{macrocode} %<*package&option> -\KOMA@ifkey{listings}{@scrhack@listings}% -\@scrhack@listingstrue +\KOMA@ifkey{listings}{@scrhack@listings} +\KOMAExecuteOptions{listings=true} %</package&option> %<*package&body> \AfterPackage*{listings}{% @@ -973,6 +1024,128 @@ loading package \Package{scrhack}, but before loading package % \end{macro} % \end{macro} % +% \subsection{Der \textsf{setspace}-Hack} +% +% Das \textsf{setspace}-Paket verwendet \cs{@ptsize} auf ungünstige Art, indem +% es davon ausgeht, dass es immer eine ganze Zahl enthält. Das ist aber bei +% \KOMAScript{} keineswegs zwingend. Außerdem ist der Wert für \texttt{11pt} +% falsch, weil \LaTeX{} in diesem Fall tatsächlich eine 10,95\,pt-Schrift mit +% einem Zeilenabstand von 13,6\,pt einstellt. Damit wäre der korrekte Wert für +% \cs{onehalfspacing} beispielsweise: +% \[ 10{,}95\,\mathrm{pt} \dot 1{,5} / 13{,}6\,\mathrm{pt} \equiv 1{,}208 \] +% Tatsächlich stellt \textsf{setspace} aber einen Wert von 1,213 ein, was +% einer effektiven Schriftgröße von 11\,pt entsprechen würde. Ebenso stellt es +% den aktuellen Abstand bei \cs{onehalfspacing} nicht relativ zur aktuellen +% Schriftgröße ein, sondern zur Grundschriftgröße. Damit erhält man bei +% \begin{verbatim} +% \documentclass[10pt]{article} +% \usepackage{setspace} +% \begin{document} +% \large\onehalfspacing\raggedright +% Fontsize: \csname f@size\endcsname pt\\ +% Normal baselineskip: \csname f@baselineskip\endcsname\\ +% baselineskip: \the\baselineskip +% \end{document} +% \end{verbatim} +% einen anderen Abstand als bei +% \begin{verbatim} +% \documentclass[11pt]{article} +% \usepackage{setspace} +% \begin{document} +% \large\onehalfspacing\raggedright +% Fontsize: \csname f@size\endcsname pt\\ +% Normal baselineskip: \csname f@baselineskip\endcsname\\ +% baselineskip: \the\baselineskip +% \end{document} +% \end{verbatim} +% obwohl beide Male dieselbe Schriftgröße verwendet wird. Streng genommen +% müsste also bei jeder Änderung der Schriftgröße der Wert Abstand angepasst +% werden. So weit geht dieser Hack nicht. Stattdessen wird der Wert abhängig +% von der tatsächlichen Schriftgröße und dem tatsächlichen Basisabstand beim +% Aufruf der Anweisungen eingestellt. Das ergibt immerhin in den obigen +% Beispielen gleiche Ergebnisse. +% +% \begin{option}{setspace} +% \changes{v3.17}{2015/04/16}{Neu}^^A +% \begin{macrocode} +%<*package&option> +\KOMA@ifkey{setspace}{@scrhack@setspace} +\KOMAExecuteOptions{setspace=true} +%</package&option> +%<*package&body> +\AfterPackage*{setspace}{% + \KOMA@key[.scrhack.sty]{setspace}{% + \PackageWarning{scrhack}{option `setspace' ignored}% + \FamilyKeyStateProcessed + }% + \if@scrhack@setspace\scr@hack@load\@pkgextension{setspace}\fi +} +%</package&body> +% \end{macrocode} +% \end{option} +% +% +% \begin{macro}{\onehalfspacing} +% \changes{v3.17}{2015/04/16}{Neu}^^A +% Über diese Anweisung wird der eineinhalbzeilige Satz eingestellt. Ein auf +% drei Nachkommastellen genauer Wert erscheint mir ausreichend genau. +% \begin{macrocode} +%<*setspace&body> +\scr@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@size pt)*1500/ + (\dimexpr \f@baselineskip\relax)*\p@/1000\relax + \expandafter\setstretch\expandafter{\strip@pt\@tempdima}% + }% +}{% + \PackageWarning{scrhack}{unknown \string\onehalfspacing\space + definition found!\MessageBreak + Maybe you are using a unsupported setpace version}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\doublespacing} +% \changes{v3.17}{2015/04/16}{Neu}^^A +% Über diese Anweisung wird der zweizeilige Satz eingestellt. Ein auf +% drei Nachkommastellen genauer Wert erscheint mir ausreichend genau. +% \begin{macrocode} +\scr@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@size pt)*2000/ + (\dimexpr \f@baselineskip\relax)*\p@/1000\relax + \expandafter\setstretch\expandafter{\strip@pt\@tempdima}% + }% +}{% + \PackageWarning{scrhack}{unknown \string\doublespacing\space + definition found!\MessageBreak + Maybe you are using a unsupported setpace version}% +} +%</setspace&body> +% \end{macrocode} +% \end{macro} +% % % \subsection{Optionen ausführen} % @@ -993,6 +1166,10 @@ loading package \Package{scrhack}, but before loading package % end of file `scrhack.dtx' %%% Local Variables: %%% mode: doctex +%%% mode: flyspell %%% coding: iso-latin-1 +%%% ispell-local-dictionary: "en_GB" %%% TeX-master: %%% End: + +% LocalWords: eineinhalbzeilige |