summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrhack.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-04-24 23:19:31 +0000
committerKarl Berry <karl@freefriends.org>2015-04-24 23:19:31 +0000
commit0a00b3b492fd27dc12cddae602b2c43206a17d74 (patch)
tree40a09bf2208cc13bcd727626e1ee058e2caa68b1 /Master/texmf-dist/source/latex/koma-script/scrhack.dtx
parent77b150bbd42aa48ba71627e09763785b26adfcfd (diff)
koma-script (24apr15)
git-svn-id: svn://tug.org/texlive/trunk@37036 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrhack.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrhack.dtx205
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