Bei den KOMA-Skript-Klassen kann man mit Hilfe der Option fontsize=Größe eine beliebige Schriftgröße angegeben werden. Wird hier eine bruchzahlige Angabe wie 10.5 pt gemacht, so führt bei Größen zwischen 9 pt und 11 pt das Laden des Pakets setspace mit der Option onehalfspacing zur Fehlermeldung »Missing \begin{document}«. Wie kann dieses Problem vermieden werden?

Open in Online-Editor
\documentclass[fontsize=10.5pt]{scrartcl}
\usepackage{blindtext}
\usepackage[onehalfspacing]{setspace}

\begin{document}
\blindtext
\end{document}

gefragt 15 Apr '15, 17:54

Cletus's gravatar image

Cletus
1.6k75866
Akzeptiert-Rate: 75%

bearbeitet 08 Mai '15, 08:32

saputello's gravatar image

saputello
11.1k174365

Indem du nicht die onehalfspacing-Option (und den \onehalfspacing-Befehl) benutzt. Du musst bei derartigen Schriftgrößen \setstretch{1.25} (oder einen anderen Wert) verwenden.

(15 Apr '15, 18:16) Ulrike Fischer

Das Paket setspace geht davon aus, dass \@ptsize eine ganze Zahl ist. Deshalb funktionieren die Befehle \onehalfspacing und \doublespacing bei nicht ganzzahligen Schriftgrößen nicht. Der Befehl \setstretch kann hingegen problemlos verwendet werden, wobei nicht ganzzahlige Schriftgrößen ohnehin nur bei frei skalierbaren Fonts einen Sinn ergeben:

Open in Online-Editor
\documentclass[fontsize=10.5pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{lmodern}% frei skalierbare Schrift
\usepackage{blindtext}
\usepackage{setspace}
\setstretch{1.25}
\begin{document}
\blindtext
\end{document}

Man kann auch die Definition von \onehalfspacing und \doublespacing so ändern, dass es funktioniert:

Open in Online-Editor
\documentclass[fontsize=10.5pt]{scrartcl}
\makeatletter
\AfterPackage*{setspace}{%
  \renewcommand*{\onehalfspacing}{%
    \ifdim \@ptsize pt=\@ne pt
      \setstretch{1.213}%
    \else \ifdim \@ptsize pt=\tw@ pt
      \setstretch{1.241}%
    \else
      \setstretch{1.25}%
    \fi\fi
  }%
  \renewcommand*{\doublespacing}{%
    \ifdim \@ptsize pt=\@ne pt
      \setstretch{1.618}%
    \else \ifdim \@ptsize pt=\tw@ pt
      \setstretch{1.655}%
    \else
      \setstretch{1.667}%
    \fi\fi
  }%
}
\makeatother
\usepackage[T1]{fontenc}
\usepackage{lmodern}% frei skalierbare Schrift
\usepackage{blindtext}
\usepackage{setspace}
\onehalfspacing
\begin{document}
\blindtext
\end{document}

In dem Fall funktionieren damit sogar die Optionen onehalfspacing und doublespacing, weil der \AfterPackage*-Code vor dem \AtEndOfPackage-Code ausgeführt wird, mit dem setspace die Optionen implementiert hat.

\AfterPackage* wird von scrlfile bereitgestellt, das von allen KOMA-Script-Klassen automatisch geladen wird. Für andere Klassen kann man es natürlich auch explizit selbst laden. Die Anleitung dazu findet sich in der KOMA-Script-Anleitung.

Seit KOMA-Script 3.17 ist in scrhack ein entsprechender Hack enthalten, so dass

Open in Online-Editor
\documentclass[fontsize=10.5pt]{scrartcl}
\usepackage{scrhack}
\usepackage[T1]{fontenc}
\usepackage{lmodern}% frei skalierbare Schrift
\usepackage{blindtext}
\usepackage[onehalfspacing]{setspace}
\begin{document}
\blindtext
\end{document}

funktioniert. Die Implementierung unterscheidet sich dabei etwas von obiger. Man kann den Hack auch wie gewohnt einzeln abschalten. Näheres ist in der KOMA-Script-Anleitung dokumentiert.

Permanenter link

beantwortet 15 Apr '15, 18:12

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 24 Apr '15, 12:31

Der Hinweis auf die Skalierbarkeit ist berechtigt. Dieses Problem kann aber hier außen vor bleiben, da in meinem Fall eine skalierbare Schrift verwendet wird, was ich nur aus Gründen der Vereinfachung nicht ins Minimalbeispiel eingebaut habe.

(15 Apr '15, 23:16) Cletus

Was ich auch nicht dazu gesagt habe, ist, dass sich dieses Problem für mich im Kontext der Entwicklung einer Dokumentenklasse ergeben hat. Der Nutzer der Klasse soll bei Bedarf mit der globalen Option fontsize die Schriftgröße anpassen können, was dann an die Basisklasse scrartcl weitergeben wird, während eine eventuelle globale Option onehalfspacing an das setspace-Paket weitergereicht wird. Um die Sache nicht zu kompliziert zu gestalten, werde ich wohl einfach in die Dokumentation schreiben, dass nur ganzzahlige Punktgrößen erlaubt sind.

(15 Apr '15, 23:17) Cletus

Sehr merkwürdig finde ich allerdings, dass das ganze Problem nur bei bruchzahligen Schriftgrößen zwischen 9 und 11 Punkt auftritt, alle anderen funktionieren anscheinend einwandfrei. Leider besitzt das Paket setspace auch keine angemessene Dokumentation.

(15 Apr '15, 23:32) Cletus

@Cletus Das ist überhaupt nicht verwunderlich, da die Fallunterscheidung in der (nicht sehr gelungenen) Definition von \onehalfspacing und \doublespacing nur dann zuschlägt, wenn \@ptsize entsprechende Inhalte hat. Anderenfalls werden die Teile der Definition, die die Probleme verursachen nicht ausgeführt. Ich habe übrigens die Antwort noch um eine Lösung erweitert, mit der die Einschränkung wegfällt. AFAIR habe ich so eine ähnliche Lösung dem Autor von setspace schon vor Jahren vorgeschlagen. Er hat dann zwar den Code geändert, aber nur dass auch Werte < 0 und > 2 funktionieren.

(16 Apr '15, 07:49) saputello

@Cletus: Übrigens: So wie ich die Antwort erweitert habe, solltest Du im Idealfall auch die Frage erweitern, statt wichtige Informationen nur in ellenlangen Kommentaren auf eine Antwort nachzureichen. Das erhöht die Übersicht und wir können die Kommentare dann einfach wieder abräumen.

(16 Apr '15, 08:07) saputello

Ich habe die betroffenen Schriftgrößen ergänzt. Alles andere ist m. E. für die Frage nicht wesentlich.

(16 Apr '15, 15:43) Cletus
Ergebnis 5 von 6 show 1 more comments
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×131
×32
×18
×4

gestellte Frage: 15 Apr '15, 17:54

Frage wurde gesehen: 11,382 Mal

zuletzt geändert: 08 Mai '15, 08:32