Sie sind hier

parskip vs. thmbox

Hallo zusammen,

ich habe ein (hoffentlich) kleines und einfach zu beseitigendes Problem, welches das folgende MWE (hoffentlich) verdeutlicht. Da ich nicht weiss, wo die Ursache des Problems steckt, würde ich mich sehr über ein Lösung oder zumindest über Vorschläge freuen, wo, bzw. wie mir diesbezüglich geholfen werden kann. (Disclaimer: Ich weiss, dass parskip=half oder full nicht unbedingt die feine Art ist, bin aber daran gebunden.)

Zur verwendeten Version von KOMAscript:
Ich nutze texlive2014 (updates sind tagesaktuell) und das dort mitgelieferte KOMA-skipt.

\documentclass[paper=a4,
	paper=portrait,
	pagesize=auto,
	fontsize=12pt,
	twoside=true,
	parskip=half, %<-- "zersetzt" die thmbox "L, M, und S"
	draft=true,
	]{scrbook}
 
\usepackage[british]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
 
\usepackage{thmtools}
\declaretheorem[
	name=Definition,
	numberwithin=section,
	refname={definition,definitionen},
	Refname={Definition,Definitionen},
	thmbox=S% <-- Design der thmbox, möglich sind "S, M, L"
	]{definition}
 
\begin{document}
 
%	\title{MWE}\subtitle{Minimum Working Example}
%	\author{Maximilian Minimalis}\date{\today}
%	\maketitle
 
\chapter{Beispiel}
 
\section{koma-script's parskip vs. thmtool's thmbox}
 
Wenn die Option parskip verwendet wird, landet der senkrechte Strich der thmbox "S" im linken Rand:
 
\begin{definition}[MWE]
	Ein MWE ist ein MWE.
\end{definition}
 
Die anderen thmboxes (L und M) werden ebenfalls versetzt gesetzt. Ist parskip allerdings auskommentiert, sieht's fein aus.
 
\end{document}
Bild von Markus Kohm

Du hast zwei Probleme. Zum einen ist definition eine Box in Textbreite, also ein einzelner Absatz dessen einzige Zeile komplett gefüllt ist und damit der Einstellung parskip=half nicht entspricht. Daher kommt bei gesetztem draft-Modus der overfull \hbox-Balken rechts. Ohne Option draft=true verschwindet er, die diesbezügliche Meldung bleibt jedoch. Dieses Problem der Option ist übrigens in der KOMA-Script-Anleitung und im KOMA-Script-Buch dokumentiert.

Das zweite Problem ist ein von KOMA-Script unabhängiges, reines Problem von thmtools, das offenbar ganz und gar nicht damit zurecht kommt, wenn \parindent 0pt ist:

\documentclass{book}
\setlength{\parindent}{0pt}
 
\usepackage[british]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
 
\usepackage{thmtools}
\declaretheorem[
	name=Definition,
	numberwithin=section,
	refname={definition,definitionen},
	Refname={Definition,Definitionen},
	thmbox=S% <-- Design der thmbox, möglich sind "S, M, L"
	]{definition}
 
\begin{document}
 
%	\title{MWE}\subtitle{Minimum Working Example}
%	\author{Maximilian Minimalis}\date{\today}
%	\maketitle
 
\chapter{Beispiel}
 
\section{no parindent vs. thmtool's thmbox}
 
Wenn die Option parskip verwendet wird, landet der senkrechte Strich der thmbox "S" im linken Rand:
 
\begin{definition}[MWE]
	Ein MWE ist ein MWE.
\end{definition}
 
Die anderen thmboxes (L und M) werden ebenfalls versetzt gesetzt. Ist parskip allerdings auskommentiert, sieht's fein aus.
 
\end{document}

Dieses Problem solltest Du an den Autor des Pakets melden.

Natürlich sollte man niemals einfach in dieser Weise \parindent einfach auf 0pt setzen. Mit den Standardklassen sollte man stattdessen das Paket parskip verwenden. Aber als Minimalbeispiel zur Veranschaulichung des Problems genügt diese einfache Form. Mit dem Paket tritt der Fehler natürlich genauso auf.

Hallo Markus,

auch Dir herzlichen Dank für die ausführliche Erklärung. Das Problem mit draft=true habe ich erst nach Elkes Tip erkannt. Es stört mich aber (noch) nicht wirklich.

Viele Grüße
Dora

Du hast zwei Probleme. Zum einen ist definition eine Box in Textbreite, also ein einzelner Absatz dessen einzige Zeile komplett gefüllt ist und damit der Einstellung parskip=half nicht entspricht. Daher kommt bei gesetztem draft-Modus der overfull \hbox-Balken rechts. Ohne Option draft=true verschwindet er, die diesbezügliche Meldung bleibt jedoch. Dieses Problem der Option ist übrigens in der KOMA-Script-Anleitung und im KOMA-Script-Buch dokumentiert.

Was genau meinst du mit »dieses Problem«? parskip oder draft? Ich hab im scrguide beides nachgeschlagen und keine Hinweise auf Probleme gefunden.

Wahrscheinlich ist die Dokumentation der Wirkung von parskip=half in der Anleitung gemeint. Der Wert half für parskip schaltet nicht nur von Absatzeinzug auf Absatzabstand um, sondern veranlasst auch die Kennzeichnung der Absatzenden durch einen Mindestfreiraum von 1em. Daraus lässt sich ableiten, dass der bei einer textbreiten Box fehlende Platz für den Mindestfreiraum die Ursache der overfull \hbox Warnung ist, die bei draft=true durch einen Balken markiert wird.

Es gibt aber noch weitere Werte für parskip, deren Wirkungen ebenfalls in der Anleitung bzw. dem Buch beschrieben sind. Zum Beispiel werden mit parskip=half- die Absatzenden nicht gekennzeichnet.

Bild von Markus Kohm

Gemeint war das Problem von Absätzen, die nur aus einer Zeile beispielsweise einer Box in kompletter Zeilenbreite bestehen. Wobei ich mich korrigieren muss. Das Problem ist in der KOMA-Script-Anleitung nicht weiter ausgeführt. Im KOMA-Script-Buch findet es sich hingegen auf Seite 514 direkt neben der Marginalien »Tipp!«.

Das Problem mit der Linie wird durch das Paket thmbox verursacht, das von thmtools geladen wird. thmbox hat u.a. eine Paketoption leftmargin, die den Abstand der Linie vom Rand beeinflusst, aber aus irgendeinem Grund nicht gleich diesem ist, und in der Voreinstellung von \parindent abhängt.

Dein Problem kannst Du lösen, in dem Du einen eigenen Wert für leftmargin an thmbox übergibst:

\usepackage{thmtools}
\declaretheorem[
	name=Definition,
	numberwithin=section,
	refname={definition,definitionen},
	Refname={Definition,Definitionen},
	thmbox={S,leftmargin=1em}% <-- Design der thmbox, möglich sind "S, M, L"
	]{definition}

Gruß
Elke

Hallo Elke,

funktioniert einwandfrei, naja zumindest fast, d.h. bei draft=false (s. Kommentar von Markus).
Vielen Dank für den Hinweis, den ich gerne annehme und umsetze.

Viele Grüße
Dora

Ich habe noch mal in der Anleitung von thmbox geschaut: leftmargin ist der Abstand des Textes vom linken Rand. Der Abstand der Linie vom (inneren) Text wird mit hskip festgelegt. Voreingestellt sind dafür 0.4em. Wenn leftmargin Null ist, rutscht sie deshalb in den linken Rand.

Mit der Option rightmargin kann man übrigens auch einen Einzug vom rechten Rand einstellen. Wenn Du den gleich 1em setzt, dann verschwindet die Warnung wegen der overfull \hbox und der Balken bei draft=true.

Bitte lies Dir auch die Erklärung zu den möglichen Werten für parskip in der KOMA-Script-Anleitung durch. Im Abschnitt Absatzauszeichnungen findest Du eine übersichtliche Tabelle.

... herzlichen Dank!

Kleiner Tip: Kann man sich die erste, zweite und fünfte Option in deinem Beispiel nicht sparen?

Comments for "parskip vs. thmbox" abonnieren