Underfull \hbox (badness nnnn) in paragraph

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


huebi
Forum-Anfänger
Forum-Anfänger
Beiträge: 46
Registriert: So 7. Nov 2021, 12:53

Underfull \hbox (badness nnnn) in paragraph

Beitrag von huebi »

Moin,

nachdem ich hier meine tabular Umgebung nach tabularx umgestellt habe, kriege ich leider jede Menge Warnnung im Logfile:
Underfull \hbox (badness nnnn) in paragraph
Da ich dutzende von dieser Tabelle habe gehen die Warnungen in die hunderte, da die allermeisten Inhalte der Spalte nunmal recht kurz sind. Dadurch verdecken diese Warnungen alle anderen die ich mir jetzt herauspicken muss.

Habe ich noch irgendetwas nicht (richtig) beachtet?

Ich habe den Befehl \hbadness=nnnnn gefunden, mit dem ich die Warnungen unterdrücken konnen soll. Ist das die richtige Lösung oder gibts noch eine andere Möglichkeit?

//Huebi
\documentclass[ngerman,paper=a5,fontsize=9pt,DIV=13,headsepline, parskip=half]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{nicefrac}
\usepackage{siunitx}
\usepackage{csquotes}
\MakeOuterQuote{"}

\usepackage{siunitx}
\sisetup{
	locale = DE,	
	detect-weight=true, 
	detect-family=true,
	detect-all=true,
	range-units = single,%brackets,% | single | repeat
	product-units=single,
}

\DeclareSIUnit\tl{Teelöffel}
\DeclareSIUnit\el{Eßlöffel}
\DeclareSIUnit\calorie{cal}

\usepackage{ragged2e}
\usepackage{tabularx}

\newcolumntype{L}[1]{>{\RaggedRight\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\Centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\RaggedLeft\arraybackslash}p{#1}}

\newenvironment{ingred}[1][Zutaten]
{%
	\subsection*{#1}
	\fontsize{9}{12}
	\selectfont
    \tabularx{\textwidth}{R{18mm}  @{\hspace{1.5mm}}   L{19mm} X}		
	}
	{
    \endtabularx   
	\normalsize
	\vspace{4mm}
}

\begin{document}
\begin{ingred}[Zutaten für zwei bis drei Personen]
	2&&Chicoréekolben \\
	2&&Blutorangen \\
	1&&grüner Spitzpaprika \\
	1&&milde rote Zwiebel, am liebsten eine Roscoffzwiebel aus Frankreich oder eine aus Tropea (Italien) \\
	\numrange{1}{2}&\unit{\el}&rosa Pfefferbeeren (getrocknet)\\ 
	2&\unit{\el}&Sherryessig \\
	1&\unit{\el}&Rotweinessig\\ 
	1&\unit{\tl}&Balsamico \\ 
	&&Salz \\
	&&Pfeffer \\
	\numrange{1}{2}&\unit{\tl}&Dijonsenf\\ 
	3&\unit{\el}&Olivenöl\\ 
\end{ingred} 

\end{document}


gast.

Re: Underfull \hbox (badness nnnn) in paragraph

Beitrag von gast. »

Mit tabularx hat das wenig bis gar nichts zu tun. Du könntest die X-Spalte statt im Blocksatz ebenfalls im Flattersatz mit Trennung setzen. Dann sollte das Problem normalerweise verschwinden. Das Paket microtype (und andere übliche allgemeine Methoden, zur Verbesserung des underfull/overfull-\hbox-Problems) kann ebenfalls helfen.

huebi
Forum-Anfänger
Forum-Anfänger
Beiträge: 46
Registriert: So 7. Nov 2021, 12:53

Re: Underfull \hbox (badness nnnn) in paragraph

Beitrag von huebi »

gast. hat geschrieben:
Di 3. Mai 2022, 07:39
Mit tabularx hat das wenig bis gar nichts zu tun.
Das sehe ich anders. Wenn ich vorher tabular genomen habe und nun tabularx und lauter Waernungen bekomme liegt das woran?
gast. hat geschrieben:
Di 3. Mai 2022, 07:39
Du könntest die X-Spalte statt im Blocksatz ebenfalls im Flattersatz mit Trennung setzen.
Wenn ich mir die Beispiele der Dokumentation von tabularx auf CTAN ansehe (Kapitel 2) dann formatiert Latex eine X Spalte nicht im Blocvksatz. Aber wenn ich 4.2 folgende Anweisung verwende
\tabularx{\textwidth}{R{18mm}  @{\hspace{1.5mm}}   L{19mm} >{\RaggedRight\arraybackslash}X}
dann ändert sich... nichts. Auch nicht an der Zahl der Warnungen. mit raggedright ists dann noch flattriger, wird ja auch nicht mehr getrennt, aber die Warnungen bleiben trotzdem.

//Huebi

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Re: Underfull \hbox (badness nnnn) in paragraph

Beitrag von KOMA »

Auch, wenn Du es nicht glaube willst, die Warnungen kommen definitiv nicht von tabularx, wie man übrigens leicht feststellen kann:
\documentclass[ngerman,paper=a5,fontsize=9pt,DIV=13,headsepline, parskip=half]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{nicefrac}
\usepackage{siunitx}
\usepackage{csquotes}
\MakeOuterQuote{"}

\usepackage{siunitx}
\sisetup{
	locale = DE,	
	detect-weight=true, 
	detect-family=true,
	detect-all=true,
	range-units = single,%brackets,% | single | repeat
	product-units=single,
}

\DeclareSIUnit\tl{Teelöffel}
\DeclareSIUnit\el{Eßlöffel}
\DeclareSIUnit\calorie{cal}

\usepackage{ragged2e}
\usepackage{tabularx}

\newcolumntype{L}[1]{>{\RaggedRight\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\Centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\RaggedLeft\arraybackslash}p{#1}}

\newenvironment{ingred}[1][Zutaten]
{%
	\subsection*{#1}
	\fontsize{9}{12}
	\selectfont
        %\tabularx{\textwidth}{R{18mm}@{\hspace{1.5mm}}L{19mm}p{6.3cm}}		
        \tabular{R{18mm}@{\hspace{1.5mm}}L{19mm}p{6.3cm}}
	}
	{
    %\endtabularx
    \endtabular
	\normalsize
	\vspace{4mm}
}

\begin{document}
\begin{ingred}[Zutaten für zwei bis drei Personen]
	2&&Chicoréekolben \\
	2&&Blutorangen \\
	1&&grüner Spitzpaprika \\
	1&&milde rote Zwiebel, am liebsten eine Roscoffzwiebel aus Frankreich oder eine aus Tropea (Italien) \\
	\numrange{1}{2}&\unit{\el}&rosa Pfefferbeeren (getrocknet)\\ 
	2&\unit{\el}&Sherryessig \\
	1&\unit{\el}&Rotweinessig\\ 
	1&\unit{\tl}&Balsamico \\ 
	&&Salz \\
	&&Pfeffer \\
	\numrange{1}{2}&\unit{\tl}&Dijonsenf\\ 
	3&\unit{\el}&Olivenöl\\ 
\end{ingred} 

\end{document}
Vielleicht wäre es also klüger, gewisse rhetorisch sarkastische Fragen nicht zu stellen. Es ist ohnehin nicht schlau, Helfer mit so etwas zu verärgern. Tatsächlich hätte mich diese beinahe von einer Antwort abgehalten.

Übrigens sind die \arraybackslash im Beispiel überflüssig. Dagegen fehlt ein \par vor \normalsize, wobei das \normalsize dann genau genommen überflüssig wird.

Und dann ist natürlich die Kombination von parskip=half und einer Tabelle über die komplette Seitenbreite ein Problem (das in der KOMA-Script-Anleitung allgemein erwähnt wird). Man sollte also die Tabelle selbst mit anderen Absatzeinstellungen setzen. Siehe dazu Option parskip in einer der Anleitungen zu KOMA-Script.

Die meisten der Warnungen kommen daher, dass ragged2e eine definierte Flatterzone verwendet, die für schmale Spalten angepasst werden müsste. Siehe dazu Abschnitt 3.2 der Anleitung des Pakets. Eventuell ist es einfacher die extrem schmale R-Spalte mit \raggedleft zu definieren:
\documentclass[ngerman,paper=a5,fontsize=9pt,DIV=13,headsepline, parskip=half,overfullrule]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{nicefrac}
\usepackage{siunitx}
\usepackage{csquotes}
\MakeOuterQuote{"}

\usepackage{siunitx}
\sisetup{
	locale = DE,	
	detect-weight=true, 
	detect-family=true,
	detect-all=true,
	range-units = single,%brackets,% | single | repeat
	product-units=single,
}

\DeclareSIUnit\tl{Teelöffel}
\DeclareSIUnit\el{Eßlöffel}
\DeclareSIUnit\calorie{cal}

\usepackage{ragged2e}
\usepackage{tabularx}

\newcolumntype{L}[1]{>{\RaggedRight}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}

\newenvironment{ingred}[1][Zutaten]
{%
	\subsection*{#1}
	\fontsize{9}{12}\selectfont
        \KOMAoption{parskip}{half-}
        \tabularx{\textwidth}{R{18mm}@{\hspace{1.5mm}}L{19mm}X}		
        %\tabular{R{18mm}@{\hspace{1.5mm}}L{19mm}p{6.6cm}}
	}
	{
    \endtabularx
    %\endtabular
\par
	\vspace{4mm}
}

\begin{document}
\begin{ingred}[Zutaten für zwei bis drei Personen]
	2&&Chicoréekolben \\
	2&&Blutorangen \\
	1&&grüner Spitzpaprika \\
	1&&milde rote Zwiebel, am liebsten eine Roscoffzwiebel aus Frankreich oder eine aus Tropea (Italien) \\
	\numrange{1}{2}&\unit{\el}&rosa Pfefferbeeren (getrocknet)\\ 
	2&\unit{\el}&Sherryessig \\
	1&\unit{\el}&Rotweinessig\\ 
	1&\unit{\tl}&Balsamico \\ 
	&&Salz \\
	&&Pfeffer \\
	\numrange{1}{2}&\unit{\tl}&Dijonsenf\\ 
	3&\unit{\el}&Olivenöl\\ 
\end{ingred} 

\end{document}
Wenn ich etwas weder kommentiert, noch eine Anmerkung dazu im Text habe, bedeutet das nicht, dass ich es gut finde. Stattdessen habe ich im gezeigten Code so wenig wie möglich geändert. Ausdrücklich sei beispielsweise auch noch einmal auf das von meinem Vorredner erwähnt Paket microtype hingewiesen. Darüber hinaus, seien die unter dem Link erwähnten Alternativen zu nicefrac ebenfalls explizit empfohlen.

huebi
Forum-Anfänger
Forum-Anfänger
Beiträge: 46
Registriert: So 7. Nov 2021, 12:53

Re: Underfull \hbox (badness nnnn) in paragraph

Beitrag von huebi »

So, das war genug Stoff um mich damit auseinander zu setzen, danke dafür. Hat etwas länger gedauert, aber habe mich auch nochmal mit der Anleitung zu KOMA-script auseinander gesetzt. Ich habe die Änderungen mal umgesetzt und in einem Buch sind auch alle undefull boxen weg. Mit der geänderten Präambel bin ich dann das zweite Buch angegangen, und es waren wieder haufenweise underfull boxen vorhanden. Und ich habe absolut keine Ahnung warum. Weder habe ich in der KOMA-script Anleitung etwas erhellendes gefunden- Das was ich bei Stackexchange gefunden habe oder auch in anderen Foren gefunden habe hat mir nicht wirklich geholfen. Es sind bei weotem nicht mehr so viele Warnungen, aber genug um das Logfenster in Texstudio volllaufen zu lassen, so daß ich die Meldungen durtchscrollen muss um zu sehen ob nicht noch was anderes ausgegeb wird, um das ich mich kümmern sollte.

Ich hab auch ein Beispiel kreieren können, wo das auftritt. Und zwar wird die Zeile \end{ingred} angemeckert mit
Underfull \hbox (badness 10000) in paragraph
Das Minimalbeispiel ist ein bisserl lang, aber die Warnung wird zumindest bei mir ausgespuckt:
\documentclass[ngerman,paper=a5,fontsize=9pt,DIV=13,headsepline, parskip=half]{scrbook}

\addtokomafont{chapter}{\fontsize{14}{17}\selectfont}
\addtokomafont{section}{\fontsize{12}{15}\selectfont}

\deffootnote{1.5em}{1em}{\makebox[1.5em][l]{\thefootnotemark}}

\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{nicefrac}
\usepackage{xfrac}
\usepackage{siunitx}
\usepackage{wasysym}
\usepackage{csquotes}
\MakeOuterQuote{"}

\usepackage{tcolorbox}

\sisetup{
	locale = DE,	
	%  per-mode = fraction,% | reciprocal | symbol | 
	detect-weight=true, 
	detect-family=true,
	detect-all=true,
	%  separate-uncertainty,
	%  exponent-to-prefix,
	%  prefixes-as-symbols = false,
	%  list-units = single, %brackets,% | single | repeat
	range-units = single,%brackets,% | single | repeat
	product-units=single,
	%  multi-part-units = brackets,% | single | repeat
	%  table-unit-alignment = left,
}

\DeclareSIUnit\tl{Teelöffel}
\DeclareSIUnit\el{Eßlöffel}
\DeclareSIUnit\calorie{cal}

\usepackage{microtype}

\usepackage{blindtext}

\usepackage{ragged2e}
\usepackage{tabularx}
\usepackage[linktocpage=true,linktoc=all]{hyperref}

\newcommand{\hf}[3][]{%
	\ifthenelse{\equal{#1}{}}{\sfrac{#2}{#3}}{#1\,\sfrac{#2}{#3}}%
}

\newcolumntype{L}[1]{>{\RaggedRight}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}

\newenvironment{ingred}[1][Zutaten]
{%
	\subsection*{#1}
	\fontsize{9}{12}\selectfont
	\KOMAoption{parskip}{half-}
	\tabularx{\textwidth}{R{18mm}@{\hspace{1.5mm}}L{19mm}X}		
	%\tabular{R{18mm}@{\hspace{1.5mm}}L{19mm}p{6.6cm}}
}
{
	\endtabularx
	%\endtabular
	\par
	\vspace{4mm}
}

\usepackage{xstring}
\newcommand{\dus}[1]
{%
	\IfEqCase{#1}{%
		{1}{\textbf{#1 Se\-kun\-de}}%
		{eine}{\textbf{#1 Se\-kun\-de}}%
		{einer}{\textbf{#1 Se\-kun\-de}}%
	}[\textbf{#1 Se\-kun\-den}]%
}
\newcommand{\dum}[1]
{%
	\IfEqCase{#1}{%
		{1}{\textbf{#1 Mi\-nu\-te}}%
		{eine}{\textbf{#1 Mi\-nu\-te}}%
		{einer}{\textbf{#1 Mi\-nu\-te}}%
		{1x}{\textbf{2\,\nicefrac{1}{2} Minu\-ten}}%
	}[\textbf{#1 Mi\-nu\-ten}]%
}
\newcommand{\duh}[1]
{%
	\IfEqCase{#1}{%
		{1}{\textbf{#1 Stun\-de}}%
		{eine}{\textbf{#1 Stun\-de}}%
		{einer}{\textbf{#1 Stunde}}%
		{eine halbe}{\textbf{#1 Stunde}}%
		{1x}{\textbf{1\,\nicefrac{1}{2} Stun\-den}}%
		{3x}{\textbf{3\,\nicefrac{1}{2} Stun\-den}}%
	}[\textbf{#1\,Stun\-den}]%
}

\newcommand{\crfr}[0]{Crème fraîche}
\newcommand{\qtyfrac}[3]{\qty[parse-numbers = false]{\nicefrac{#1}{#2}}{#3}}
\newcommand{\qtyffrac}[4]{\qty[parse-numbers = false]{#1\,\nicefrac{#2}{#3}}{#4}}

\newcommand{\temp}[1]{\textbf{\qty{#1}{\celsius}}}
\newcommand{\ovenb}[2]{\textbf{\qty{#1}{\celsius} Heiß\-luft (\qty{#2}{\celsius} Ober-/Unter\-hitze)}}
\newcommand{\ovenh}[1]{\textbf{\qty{#1}{\celsius} Heiß\-luft}}
\newcommand{\oveno}[1]{\textbf{\qty{#1}{\celsius} Ober-/Un\-ter\-hitze}}

\newcommand{\tempr}[2]{\textbf{\qtyrange{#1}{#2}{\celsius}}}
\newcommand{\ovenhr}[2]{\textbf{\qtyrange{#1}{#2}{\celsius} Heißluft}}

\newcommand{\ffig}[1]{%
	\setlength\intextsep{8pt}%
	\setlength{\columnsep}{8pt}%
	\begin{wrapfigure}{O}{0.4\textwidth}%
		\vspace{-8pt}%
		\includegraphics[width=0.4\textwidth]{#1}%
	\end{wrapfigure}%
}

\newcommand{\cfig}[1]{%
	\begin{figure}[ht]%
		\centering%
		\includegraphics[width=0.9\textwidth]{#1}%
	\end{figure}%
}

\newcommand{\wbox}[1]{
	\begin{tcolorbox}[height=5\baselineskip,height plus=\textheight]
		\setlength{\intextsep}{0pt}
		\begin{wrapfigure}{l}{0pt}
			\includegraphics[height=3\baselineskip]{aa_wineglass}%
		\end{wrapfigure}
		Getränk: #1
	\end{tcolorbox}
}

%\parskip=4pt
%\parindent=0pt
\raggedbottom

%\overfullrule=3mm

\clubpenalty=10000
\widowpenalty=10000
\displaywidowpenalty=10000

\newcounter{tipp}
\newcommand{\tbox}[3][Tipp]{
	\refstepcounter{tipp}
	\begin{tcolorbox}%[height=5\baselineskip,height plus=\textheight]
		\setlength{\intextsep}{0pt}
		#1 \thetipp: \label{#2}#3
	\end{tcolorbox}
}

\newcommand{\see}[1]{
	%	\textit{(\hyperref[#1]{siehe Tipp }\ref{#1})}%
	(\textit{\hyperref[#1]{siehe Tipp \ref*{#1}}})%
}

\newcommand{\seerec}[1]{
	%	\textit{(\hyperref[#1]{siehe Rezept }\glqq{}\nameref{#1}\grqq{})}%
	(\hyperref[{#1}]{siehe Rezept \glqq{}\textit{\nameref*{#1}\grqq{}}})%
}

\newcommand{\refrec}[1]{
	\textit{\glqq{}\nameref{#1}\grqq{}}%
}

\begin{document}
	
\addsec{Grundrezept Strudelteig}\label{sec:grundrezeptstrudel}
\blindtext
	
Wer sagt denn, dass ein Apfelstrudel immer süß sein muss? Schließlich weiß man ja, dass Äpfel auch zu Herzhaftem prima schmecken. Wir füllen den Apfelstrudel bei diesem Rezept mit Blutwurst, gerösteten Zwiebeln, Äpfeln und viel Majoran und servieren ihn als originelles Mittag- oder Abendessen -- zusammen mit einem knackigen Salat! 

\begin{ingred}[Zutaten für vier Personen]
	1&&Strudelteig\seerec{sec:grundrezeptstrudel} \\ 
	\numrange{100}{150}&\unit{\g}&Butter \\
	100&\unit{\g}&Semmelbrösel \\ 
	500&\unit{\g}&Äpfel \\
	&&Zitronensaft und -schale \\ 
	&&Salz \\
	&&Pfeffer \\ 
	250&\unit{\g}&Blutwurst \\ 
	1&&Zwiebel \\
	2&&Knoblauchzehen \\ 
	&&Schnittlauch \\
	&&getrockneter Majoran \\ 
	&&Muskat 
\end{ingred}

Den Teig zur großen Fläche hauchdünn ausrollen. Mit flüssiger Butter einpinseln. Zuerst geröstete Semmelbrösel als Unterlage auf der einen Hälfte der Teigfläche verteilen. Die in Scheibchen geschnittenen Äpfel in eine Schüssel geben, mit Zitronensaft und abgeriebener Zitronenschale vermischen. Die Zwiebelringe mit dem Knoblauch anrösten und zu den Äpfeln geben.Dazu Schnittlauch, Majoran, Muskat (nach Belieben) und Würfel von guter Blutwurst (Flöns) mischen. Salzen, pfeffern und auf die Semmelbrösel betten. 

\end{document}

Ich verstehe zwar, dass LaTex mir mitteilen möchte, dass eine Box nicht gefüllt werden konnte, aber warum und wieso das wichtig ist verstehe ich hinten und vorne nicht.

gast.

Re: Underfull \hbox (badness nnnn) in paragraph

Beitrag von gast. »

Dass du ein Umbruchproblem in der ersten Zeile der Tabelle hast, hat du ja wohl sicher schon gesehen. Eventuell hilft \addsec{Grundrezept Strudel\-teig} das im Querverweis zu verbessern. Allerdings ist das nicht immer eine gute Lösung, weil es natürlich auch den Umbruch der Überschrift beeinflussen kann. Ggf. muss man also herausfinden, warum bei \nameref nicht getrennt wird.

Ansonsten sei darauf hingewiesen, dass der obige Hinweise zur Flatterzone und einem daraus resultierenden Problem bei den mit \RaggedLeft definierten, schmalen R-Spalten, natürlich auch für schmale L-Spalten mit \RaggedRight gilt.

Overfull und underfull \hboxes haben übrigens wenig bis gar nichts mit KOMA-Script zu tun. Daher sollte man von dessen Anleitung auch nicht erwarten, dass sie diese Problematik behandelt. Bezüglich der Flatterzone dürfte da die Anleitung zu ragged2e eher von Interesse sein. Bezüglich des allgemeinen Problems wird man u. a. hier im Forum fündig. Gleich einer der ersten Treffer, die sich nicht auf diese Diskussion beziehen, bringt einem dann auch zu dem sehr nützlichen Beitrag auf TeXwelt, der diverse Lösungsansätze erwähnt. Wie oben, manuelle Trennmöglichkeiten einzubauen, wird dort ebenfalls erwähnt, auch wenn das oftmals die unhandlichste der Möglichkeiten ist.

Zum Minimalisieren eines Beispiels gehört übrigens auch die Minimierung der Präambel, die ich bei dir ein wenig vermisse, wodurch das Beispiel für mich sehr unübersichtlich ist. Mir ist auch nicht klar, warum du für die Spalte mit den Einheiten nicht einfach eine l-Spalte verwendest. Zeilenumbruch brauchst darin ja sicher nicht. Auch die erste Spalte würde ich wohl eher entweder als r-Spalte oder mit siunitx setzen. Du wirst schon irgendwelche Gründe dafür haben. Deshalb will ich auch gar nicht erst eine fertige Lösung in Angriff nehmen. :( Mir fällt nur auf, dass im Code noch potentielle unerwünschte Leerzeichen durch nicht auskommentierte Zeilenenden in Definitionen wie \see enthalten sind. Solche können natürlich auch Auswirkungen auf den Umbruch haben. Außerdem verwendest du veraltete siunitx-Einstellungen. Solche Warnungen in der log-Datei verdienen min. so viel Aufmerksamkeit wie die eine oder andere underfull \hbox.

huebi
Forum-Anfänger
Forum-Anfänger
Beiträge: 46
Registriert: So 7. Nov 2021, 12:53

Re: Underfull \hbox (badness nnnn) in paragraph

Beitrag von huebi »

gast. hat geschrieben:
Mi 1. Jun 2022, 08:00
Dass du ein Umbruchproblem in der ersten Zeile der Tabelle hast, hat du ja wohl sicher schon gesehen.
Ja, gesehen schon, aber ich wollte erstmal das andere Zeug abarbeiten und zumindest ansatzweise verstehen. Das dumme daran ist, dass dies bei allen angemeckerten hboxen der gemeinsame Nenner war. Das habe ich leider nicht erkannt. Ich habs jetzt erstmal mit manuellen Trennstellen gefixed, bis auf zwei, wo Latex wohl nichts mehr zusamenquetschen kann um den Leerraum zu füllen. Das habe ich erstmal mit einer Kurzform der Überschrift gefixed. Zumiondest im zweiten Dokument habe ich damit alle Stellen beheben können. Das dritte Dokument ist mir zu umfangreich, das habe ich nocht nicht angefangen.
gast. hat geschrieben:
Mi 1. Jun 2022, 08:00
Ggf. muss man also herausfinden, warum bei \nameref nicht getrennt wird.
Bisher habe ich es mit manuellen Trennstellen und Kurzformen ganz gut hinbekomen, mal sehen wie es im umfangreichsten Dokument aussieht.
gast. hat geschrieben:
Mi 1. Jun 2022, 08:00
Overfull und underfull \hboxes haben übrigens wenig bis gar nichts mit KOMA-Script zu tun.
Was mich dazu getrieben hat scrguide nochmals zu konsultieren war diese Aussage:
KOMA hat geschrieben:
Mi 4. Mai 2022, 11:48
Und dann ist natürlich die Kombination von parskip=half und einer Tabelle über die komplette Seitenbreite ein Problem (das in der KOMA-Script-Anleitung allgemein erwähnt wird). Man sollte also die Tabelle selbst mit anderen Absatzeinstellungen setzen. Siehe dazu Option parskip in einer der Anleitungen zu KOMA-Script.
gast. hat geschrieben:
Mi 1. Jun 2022, 08:00
Daher sollte man von dessen Anleitung auch nicht erwarten, dass sie diese Problematik behandelt. Bezüglich der Flatterzone dürfte da die Anleitung zu ragged2e eher von Interesse sein.
Sicherlich nicht verkehrt, aber zumindest kam Latex recht gut mit den Einstellungen klar, bis auf die Nicht-Trennung der Referenzen.
gast. hat geschrieben:
Mi 1. Jun 2022, 08:00
...bringt einem dann auch zu dem sehr nützlichen Beitrag auf TeXwelt, der diverse Lösungsansätze erwähnt. Wie oben, manuelle Trennmöglichkeiten einzubauen, wird dort ebenfalls erwähnt, auch wenn das oftmals die unhandlichste der Möglichkeiten ist.
Den Artikel habe ich zwar gefunden, aber nicht genügend Beachtung geschenkt. Irgendwie hatte ich kein Augenmerk auf die Referenzen und war zu sehr darauf fixiert zu verstehen wieso zu kurzer Text zu Warnungen führt.
gast. hat geschrieben:
Mi 1. Jun 2022, 08:00
Zum Minimalisieren eines Beispiels gehört übrigens auch die Minimierung der Präambel, die ich bei dir ein wenig vermisse, wodurch das Beispiel für mich sehr unübersichtlich ist.
Ja sorry, da hätte ich noch einiges rauskürzen können, was im Beispiel nicht verwendet wird. Da war ich aber übervorsichtig weil ich sicher gehen wollte dass die Warnung auch hier auftritt. Ich kann die hier leider nicht sehen. Deswegen habe ich auch noch etwas Blindtext hinzugefügt.
gast. hat geschrieben:
Mi 1. Jun 2022, 08:00
Mir ist auch nicht klar, warum du für die Spalte mit den Einheiten nicht einfach eine l-Spalte verwendest.
Weil es Rezeptmäßig auch Einheiten gibt wie Rösdchen, Kolben, Handvoll und gehäufte Löffel. Und mit dieser Abmerkung habe ich dann auch noch geseh dass ich mit den gehäuftenm Löffeln inkonsistent war und diese mal bei der Menge, mal bei der Einheit stand.
gast. hat geschrieben:
Mi 1. Jun 2022, 08:00
Mir fällt nur auf, dass im Code noch potentielle unerwünschte Leerzeichen durch nicht auskommentierte Zeilenenden in Definitionen wie \see enthalten sind. Solche können natürlich auch Auswirkungen auf den Umbruch haben.
Habe ich auch erstmal gefixed, hatte dann aber keinen sichtbaren Einfluss. Und muss ich mich wirklich dran gewöhnen, ich bin es vom programmieren gewohnt dass whitespaces keinen Einfluss haben.
gast. hat geschrieben:
Mi 1. Jun 2022, 08:00
Außerdem verwendest du veraltete siunitx-Einstellungen. Solche Warnungen in der log-Datei verdienen min. so viel Aufmerksamkeit wie die eine oder andere underfull \hbox.
Auch das habe ich gefixed und die Parameter zusammengefasst. detect-weight, detect-family zusamen mit detect-all waren ja auch nicht gerade sinnvoll.

huebi
Forum-Anfänger
Forum-Anfänger
Beiträge: 46
Registriert: So 7. Nov 2021, 12:53

Re: Underfull \hbox (badness nnnn) in paragraph

Beitrag von huebi »

Hab gerade mal mein umfangreichstes Buch angefasst. Und dabei gesehen, dass es wohl doch nicht an den Referenzen liegt, sondern anscheinend an der rechten Soalte, denn bei
250&\unit{\g}&Bio-Hartweizenmehl und griffiges Bio-Weich\-weizen\-mehl 1:1 gemischt \\
musste ich bei Bio-Weichweizenmehl auch mit Trennzeichen nachhelfen.

Und das ganze war jetzt wieder voreilig denn ich habe die hboxen gehabt

- in der Tabelle mit Referenz
- in der Tabelle ohne Referenz
- im Fliesstext mit Referenz

scheint also unterschiedliche Gründe zu haben. Zumindest habe ich Warnungen nun in allen Dokumenten weg und jetzt zwei neue :)
\float@addtolists detected!(scrbook) Implementation of \float@addtolist became(scrbook) deprecated in KOMA-Script v3.01 2008/11/14 and(scrbook) has been replaced by several more flexible(scrbook) features of package `tocbasic`.

Size substitutions with differences(Font) up to 3.25pt have occurred.
Was das jetzt heisst habe ich mich noch nicht drum gekümmert.

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Re: Underfull \hbox (badness nnnn) in paragraph

Beitrag von KOMA »

huebi hat geschrieben:
Mi 1. Jun 2022, 18:34
musste ich bei Bio-Weichweizenmehl auch mit Trennzeichen nachhelfen.
Gebetsmühle: Komposita mit Bindestrich werden aus typografischen Gründen von TeX normalerweise nur am Bindestrich umbrochen, aber nicht getrennt. Abhilfe → babel-german (und ganz viele Beiträge in diversen LaTeX-Foren). Wobei man inzwischen Komposita mit Bindestrich mit Tricks auch bei \hyphenation mit angeben könnte. Da ich aber aus typografischen Gründen ausdrücklich davon abrate, selbe immer überall trennen zu lassen, und stattdessen dazu rate, nur in Ausnahmefällen, weitere Trennungen zu erlaube, ist das manuelle Einfügen dedizierter Trennstellen wie Bio-Weichweizen\-mehl oder allenfalls Bio-Weich\-weizen\-mehl durchaus eine taugliche Option. Man sollte sich aber, wie gezeigt, auf die Trennungen in den Wortfugen beschränken. Trennungen an anderen Stellen sollten die absolute Notfall-Ausnahme bleiben. Es gibt ja auch diverse andere Möglichkeiten, den Umbruch zu verändern. TeX macht ja keinen Zeilen- sondern einen Absatzumbruch.
huebi hat geschrieben:
Mi 1. Jun 2022, 18:34
scheint also unterschiedliche Gründe zu haben
Klar. Deshalb gibt es ja auch so viele und so lange Beiträge dazu in den Foren. Wenn es eine einzige, optimale Lösung gäbe, dann bräuchte es auch nur einen einzigen kurzen Beitrag dazu.
huebi hat geschrieben:
Mi 1. Jun 2022, 18:34
\float@addtolists detected!(scrbook) Implementation of \float@addtolist became(scrbook) deprecated in KOMA-Script v3.01 2008/11/14 and(scrbook) has been replaced by several more flexible(scrbook) features of package `tocbasic`.
Dazu wird man beispielsweise im KOMA-Script-Wiki im Bereich Fehlermeldungen und Warnungen bzw. Error Messages and Warnings und ebenfalls in diversen LaTeX-Foren fündig.
huebi hat geschrieben:
Mi 1. Jun 2022, 18:34
Size substitutions with differences(Font) up to 3.25pt have occurred.
Du verwendest offenbar einen nicht frei skalierbaren Font und forderst Schriftgrößen an, die nicht verfügbar sind. Dazu findet man ebenfalls diverse Beiträge in den Foren.

Anmerkung am Rande und weil es mir gerade einfällt: Absurder Weise beschweren sich immer wieder Word-Umsteiger insbesondere über die vielen Umbruchwarnungen von TeX. Klar, bei Word gab es solche Warnungen nicht. Aber der Umbruch war dort meist viel schlechter. Word tut nur so, als wäre alles in bester Ordnung und schon sind die Anwender selbst mit dem größten typografischen Müll zufrieden. Irgendwie aber doch nicht und deshalb steigen sie zu TeX um und beschweren sich dann, wenn TeX ihnen sagt, dass es Hilfe braucht, um die aktuellen Umbruchparameter einhalten zu können, statt einfach stillschweigend eine mehr oder weniger schlechtere Lösung zu verwenden.

Achja: In Tabellen bietet LaTeX normalerweise sogar selbst diese schlechtere Lösung an. Deshalb gibt es die underfull \hbox(es). In der Voreinstellung des normalen Textes würde TeX hingegen meist mit einer overfull \hbox aufgeben. Als Nebenwirkung gibt sich LaTeX bei Tabellen generell mit einem etwas schlechteren Umbruch zufrieden. Das ist genau der Unterschied zwischen \sloppy (ggf. schlechter als notwendig aber lieber underfull als overfull) und \fuzzy (möglichst optimal und wenn nicht dann lieber deutlich per overfull). In Tabellen verwendet LaTeX \sloppy. Innerhalb von \parbox und minipage und Gleitumgebungen übrigens AFAIR auch (was bei breiten Boxen eher unnötig und damit suboptimal ist). Warum es das außerdem auch bei Fußnoten macht, habe ich nie ganz verstanden. Da Fußnoten normalerweise in kleinerem Font als die Spalte gesetzt werden, ist es dort eigentlich besonders absurd. Aber gut, es ist eben so.

Aber das führt jetzt schon wieder viel zu weit und verwirrt den Anfänger eher. Die vorherigen zwei Absätze sind also eher zur Auflockerung gedacht. Anfänger sollten die nicht so ernst nehmen und vor allem nicht daraus ableiten, dass sie noch mehr Handlungsbedarf haben. Sie sollten daraus allenfalls ableiten, dass man nicht jede underfull \hbox gleich als Drama sehen muss. Selbst bei einer overfull \hbox im Bereich der Druckerauflösung sollten sie diese erst einmal hintanstellen. In erster Linie sollten sie daraus aber lernen, dass ein guter Umbruch eine durchaus komplexe Aufgabe ist, die 50 Jahre alte Software alleine nicht immer optimal lösen kann. BTW: Wer wissen will, wie schwierig das mitunter ist, darf sich gerne freiwillig für die Korrekturleserunden des KOMA-Script-Buchs melden oder selbst einmal versuchen, den nicht optimierten Umbruch der freien Anleitung zu optimieren. Mit den vielen, langen nicht umbrechbaren Befehlsnamen, komme ich jedes Mal ins Schwitzen. Ohne überflüssige Füllwörter, Satzumstellungen, Suche nach Synonymen etc. geht das nie. Übrigens ist das eine Technik, zu der auch Schriftsetzer über Jahrhunderte gegriffen haben. Sollte man nicht für möglich halten …

huebi
Forum-Anfänger
Forum-Anfänger
Beiträge: 46
Registriert: So 7. Nov 2021, 12:53

Re: Underfull \hbox (badness nnnn) in paragraph

Beitrag von huebi »

KOMA hat geschrieben:
Do 2. Jun 2022, 09:19
huebi hat geschrieben:
Mi 1. Jun 2022, 18:34
\float@addtolists detected!(scrbook) Implementation of \float@addtolist became(scrbook) deprecated in KOMA-Script v3.01 2008/11/14 and(scrbook) has been replaced by several more flexible(scrbook) features of package `tocbasic`.
Dazu wird man beispielsweise im KOMA-Script-Wiki im Bereich Fehlermeldungen und Warnungen bzw. Error Messages and Warnings und ebenfalls in diversen LaTeX-Foren fündig.
Ich bin jetzt das Log file hoch und runter, aber hab keine Ahnung welches Package denn nun die deprecated Sachen benutzt.
KOMA hat geschrieben:
Do 2. Jun 2022, 09:19
huebi hat geschrieben:
Mi 1. Jun 2022, 18:34
Size substitutions with differences(Font) up to 3.25pt have occurred.
Du verwendest offenbar einen nicht frei skalierbaren Font und forderst Schriftgrößen an, die nicht verfügbar sind. Dazu findet man ebenfalls diverse Beiträge in den Foren.
Auch hier bin völlig ratlos. Ich keinen speziellen Font eingebaut. Ich verwende auch dieselbe Präambel in drei Büchern und nur eine der Dateien bringt diese Warnung. Da die Präambel stets die gleiche ist muss es am Text liegen. Nur an was?

Antworten