LaTeX - wie immer diese Floats figure

Hallo,

ich schreibe gerade an einem Protokoll und habe ein Problem mit LaTeX und wie die meisten eins mit den Floats. ABER ich bin nicht wie alle anderen!

Zuerst mal, ich bin kein totaler Anfänger, aber das „Warum?“ stellt sich mir doch häufig.

Zuerst kurz das Problem: LaTeX positioniert meine Floats doof! (figures & tabels)
Und noch vorneweg:
Ich möchte kein \begin{figure}
-[h]
-[h!]
-[H]
-[here] und was sich sonst jemand gebastelt hat,
weil das echt fies aussehen kann und nicht Sinn der Sache ist.

Nun mehr Hintergrund:
Natürlich habe ich Google bemüht und natürlich mich durch hunderte oder tausende Beiträge gewälzt, aber eine Lösung tauchte nicht auf.

Das ein Float ein Float ist, weil er floatet ist ganz klar und find ich nicht schlimm und ich finde auch, dass die Positionierung ästhetisch betrachtet angenehm ist, aber inhaltlich manchmal doch ein Graus! Denn teilweise werden einige Floats bis zu 2 Sections später eingesetzt und das darf nicht sein. (Zur Struktur dann später mehr)

Ich habe als Lösung gefunden \afterpage{\clearpage} zu benutzen, was seine Sache tut. Aber „doof“ finde ich, dass trotzdem (u.a. weil ich nicht vor jedem Abschnitt clearen möchte, denn warum sollte man Automatismen versuchen überall Daumenschrauben anzulegen, da kann ich doch gleich WYSIWYG machen, geht auch schneller und weniger nervtötend) und habe gesucht, warum LaTeX überhaupt soweit streut.
Daraufhin bin ich auf eine Seite gestoßen, die schrieb, dass LaTeX ab dem \section-Level frei floatet, fand das sehr vernünftig und dachte mir, dann gibbets halt 'n Levelup.
Nun produziert \chapter folgenden Fehler:

! Undefined control sequence.
l.60 \chapter
{Ergebnisse}
The control sequence at the end of the top line...

und \part ist einfach total übertrieben (sieht „doof“ aus, auf der Seite, wie TOC). Also zurück zu \afterpage{\clearpage}…

Gibt es also eine Möglichkeit den Floatraum sinnvoll einzugrenzen? (sowas wie \setfloatraumlevel{(sub)section})

Warum geht \chapter nicht? (Liegt das an \documentclass{scrartcl}? Sollte ich eine andere andere \documentclass benutzen? Weshalb?)

Und wenn ich euch schon so vollschreibe gleich noch ein paar Fragen (niedriger Priorität):

  • Ich habe trotz der Penalties ein paar Hurenkinder, was dann wohl nicht zu verhindern ist, und auch nicht so schlimm, wenn nicht bei dem einen zwischen Seitenanfang und Kind eine Tabelle und eine Abbildung kämen. (Kann man sowas priorisieren oder Floats anweisen, zwischen Absätzen zu landen?)

So, Dank schonmal an alle, die sich bis hier durchgekämpft haben. Wer sich für die Dokumentstruktur interessiert darf, sich noch das Listing anschauen. Und wer mir zu irgendeinem Punkt helfen kann, ist herzlich eingeladen, mich an seinem Wissen teilhaben zu lassen :smile:

Einen schönen Abend wünscht,
www2011

\documentclass[a4paper]{scrartcl}

\usepackage[latin1]{inputenc}
\usepackage{color}
\usepackage{graphicx}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[pdftex,colorlinks,linkcolor=blue,citecolor=blue,pagecolor=blue,filecolor=blue,urlcolor=blue]{hyperref} % Links in der Ausarbeitung
\usepackage{amsmath}
\usepackage{geometry}
\geometry{a4paper,left=25mm,right=25mm, top=30mm, bottom=30mm}
 \clubpenalty = 10000
 \widowpenalty = 10000
\usepackage{xspace}
\usepackage{setspace}
\usepackage{afterpage}

[...]
\begin{document}
\maketitle

\newpage
\tableofcontents
\listoffigures
\listoftables

\newpage
\onehalfspacing

[...]

\afterpage{\clearpage}
\section{Ergebnisse}
bla

\subsection{1}
Text 
\begin{table}[htb]\end{table}
Text
\begin{figure}[htb]\end{figure}
Langer Text
\begin{figure}[htb]\end{figure}


\subsection{2}
Text 
\begin{table}[htb]\end{table}
Text
\subsubsection{irgendwas}
\begin{figure}[htb]\end{figure}
Langer Text
\begin{figure}[htb]\end{figure}

\afterpage{\clearpage}
\subsection{3}
[...]


\afterpage{\clearpage}
\section{Diskussion/Auswertung}
\subsection{bla}

\section{Fazit} 

\end{document}

Hallo!

Ich habe mal versucht meine PhD Arbeit mit LaTeX zu erstellen und bin nach 8 Wochen wieder zu Word gekommen. So ähnliche Problemstellungen hatte ich auch und konnte es nur ohne Floats lösen (glaube ich, ist schon 2 Jahre her)…

Ich bin auch an einer Lösung interessiert!

LG

Hallo,

mir ist leider keine Antwort auf Deine eigentliche Frage bekannt.

Zum Problem das \chapter{} nicht funktioniert: scrartcl unterstützt keine Kapitel, weil ein Artikel normalerweise keine Kapitel hat. Wenn Du Artikel benutzen möchtest, nimm was grösseres, z.B. scrreprt oder scrbook.

Viele Grüsse,
charly

Ich möchte kein \begin{figure}
-[h]
-[h!]
-[H]
-[here] und was sich sonst jemand gebastelt hat,

weil das echt fies aussehen kann und nicht Sinn der Sache
ist.

Diese Optionen sind genau für diesen Zweck vorgesehen.

Das ein Float ein Float ist, weil er floatet ist ganz klar
und find ich nicht schlimm und ich finde auch, dass die
Positionierung ästhetisch betrachtet angenehm ist, aber
inhaltlich manchmal doch ein Graus! Denn teilweise werden
einige Floats bis zu 2 Sections später eingesetzt und das darf
nicht sein. (Zur Struktur dann später mehr)

LaTeX hat eine Reihe von Parametern, die festlegen, wann ein Float „geschrieben“ wird. Wenn man damit nicht zufrieden ist, muss man die Optionen mit „here“ verwenden oder die entsprechenden Parameter in der Dokumentklasse verändern.

Diese sind (aus article.cls):
\setcounter{topnumber}{2}
max. Anzahl von top gesetzten floats
\renewcommand\topfraction{.7}
wieviel Text muss bleiben, um ein float am Beginn einer seite (top) zu setzen, hier 70%
\setcounter{bottomnumber}{1}
max. Anzahl von bottom gesetzten floats
\renewcommand\bottomfraction{.3}
wieviel Text muss bleiben, um ein float am Ende einer seite (bottom) zu setzen, hier 30%
\setcounter{totalnumber}{3}
max. Anzahl von floats pro Seite
\renewcommand\textfraction{.2}
Mindesttextmenge 20%
\renewcommand\floatpagefraction{.5}
max. 50% der Seite ist ein/mehrere Floats

Beide vielen floats ist es sinnvoller Option p (eigene Seite für Floats) zu wählen!

Ich habe als Lösung gefunden \afterpage{\clearpage} zu
benutzen, was seine Sache tut. Aber „doof“ finde ich, dass
trotzdem (u.a. weil ich nicht vor jedem Abschnitt clearen
möchte, denn warum sollte man Automatismen versuchen überall
Daumenschrauben anzulegen, da kann ich doch gleich WYSIWYG
machen, geht auch schneller und weniger nervtötend) und habe
gesucht, warum LaTeX überhaupt soweit streut.

\clearpage macht nur am Ende eines Chapter Sinn, ansonsten ist der Befehl falsch verwendet, weil LaTeX hier einen HARTEN Seitenumbruch definiert, also auch den Seitentext nicht platzfüllend schreibt.

Daraufhin bin ich auf eine Seite gestoßen, die schrieb, dass
LaTeX ab dem \section-Level frei floatet, fand das sehr
vernünftig und dachte mir, dann gibbets halt 'n Levelup.

Nun produziert \chapter folgenden Fehler:

! Undefined control sequence.

l.60 \chapter

{Ergebnisse}

The control sequence at the end of the top line…

Der Befehl chapter wird in der Dokumentklasse definiert. Wahrscheinlich hat deine Dokumentklasse nicht diese Unterteilung. Wenn du ein chapter brauchstr, wechsle die Klasse!

und \part ist einfach total übertrieben (sieht „doof“ aus,
auf der Seite, wie TOC). Also zurück zu
\afterpage{\clearpage}…

Gibt es also eine Möglichkeit den Floatraum sinnvoll
einzugrenzen? (sowas wie \setfloatraumlevel{(sub)section})

Mir ist kein Package in der Richtung bekannt.

Warum geht \chapter nicht? (Liegt das an
\documentclass{scrartcl}? Sollte ich eine andere andere
\documentclass benutzen? Weshalb?)

Siehe oben. Man kann nicht ein Package „zwingen“, dass zu besitzen, was man braucht!

Und wenn ich euch schon so vollschreibe gleich noch ein paar
Fragen (niedriger Priorität):

  • Ich habe trotz der Penalties ein paar Hurenkinder, was dann
    wohl nicht zu verhindern ist, und auch nicht so schlimm, wenn
    nicht bei dem einen zwischen Seitenanfang und Kind eine
    Tabelle und eine Abbildung kämen. (Kann man sowas priorisieren
    oder Floats anweisen, zwischen Absätzen zu landen?)

Selbe Antwort nochmal: Wenn man mit der von LaTeX vorgeschlagenen Position nicht einverstanden ist, muss man über „here“ eben die Positionierung hart überschreiben. Das geht nicht automatisch und würde dem Konzept von LaTeX widersprechen.

Nicht ärgern lassen!
Gerhard

Hallo nochmal,

so, nachdem ich meine Diplomarbeit jetzt abgegeben habe, habe ich auch ein paar Minuten mehr Zeit für eine Antwort und habe in der Zwischenzeit auch noch ein paar Dinge per Zufall herausgefunden:

  • Bezüglich Floats in Sections. Eine Möglichkeit den „Floatraum“ einzuschränken gibt es tatsächlich, nämlich den Befehl „\FloatBarrier“ der durch die Verwendung des packages „placeins“ verfügbar gemacht wird. Ich selbst habe es nie verwendet, aber hier: http://www.golatex.de/wiki/index.php?title=placeins gibt es eine Beschreibung. Das könnte helfen.

  • Bezüglich Schusterjungen und Hurenkindern: TeX bietet die zwei switches „\clubpenalty“ und „\widowpenalty“, die diese unschönen Ereignissen verhindern helfen sollen. Wenn man sie auf 1000 setzt, werden einzeln stehende Zeilen seltener, 10’000 sollten sie ganz verbieten. Meine persönlich Erfahrung ist, dass 1000 ein gutes Setting ist. Ich hatte damit auf 100 Seiten noch 13 Problemstellen, die ich manuell gelöst habe (\vspace{-XXmm} an geeigneten Stellen anbringen, oder im schlimmsten Fall ein \clearpage). Mit 10’000 als penalty hatte ich im gleichen Text noch 9, aber das hat im Ganzen mehr Probleme geschaffen als gelöst. Ausprobieren macht klug :wink:

Ich hoffe, damit habe ich Dir besser geholfen als bei meiner ersten Antwort.

Viele Grüsse,
charly