
Ich finde es ein bisschen schwierig, die Tabellen dort zu halten, wo ich sie haben wollte. Ich kann anscheinend auch kein MWE erstellen. Aber das Dokument ist hochgeladenHier.
Im Grunde genommen sagen die
Der Text (~\ref{}) steht auf Seite 70 und die eigentliche Tabelle auf Seite 84.
der Text (~\ref{}) steht auf Seite 71 und die eigentliche Tabelle auf 85;
Der Text (~\ref{}) steht auf Seite 72 und die eigentliche Tabelle auf Seite 86.
Wo
\begin{table}[!hp]
wurde am Anfang aller Tabellen verwendet.
In allen Fällen steht der Text in \subsection{}
s. Die Tabellen scheinen an das Ende des gesamten Abschnitts verschoben worden zu sein.
Ich hoffe, dass die Tabellen nah am Text sind, wenn nicht sogar am next
Text selbst. Aber einfach !hp
funktioniert das überhaupt nicht.
Antwort1
Es gibt allgemeine Ratschläge (hauptsächlich in Wills Antwort) ineine frühere Frage
Sie haben jedoch (aus irgendeinem Grund) die spezielle Anforderung, Textseiten-Floats zu vermeiden und nur h und p zuzulassen.
Das erschwert die Positionierung. Wenn ein Float nicht „hier“ hinpasst (und das ist normalerweise der Fall, da dieser Punkt zu weit unten auf der Seite liegt, um in einen Float zu passen), dann hält LaTeX ihn zurück, um eine Float-Seite zu erstellen. Um sehr leere Seiten zu vermeiden, wartet es, bis es mindestens \floatpagefraction
eine Seite hat (dieser Bruchteil wird nicht ignoriert, wenn Sie verwenden !
). Standardmäßig article
ist dies 0,5, also muss mindestens die Hälfte der Seite ausgefüllt sein.
Das bedeutet, dass, wenn Sie zwei Abbildungen haben, von denen die erste knapp eine halbe Seite hoch ist, sie in etwa der Hälfte der Fälle nicht „hier“ passen, da dieser Punkt in der unteren Hälfte der Seite liegt. Der erste Float kann keine Float-Seite bilden, da die Seite zu kurz wäre, aber die beiden Abbildungen passen nicht auf eine Float-Seite, wenn die zweite größer ist, oder selbst wenn sie kleiner ist, aber kein Platz für zwei Abbildungen und die \floatsep
Lücke dazwischen ist. Das bedeutet, dass eine Einstellung von [hp]
sehr leicht Floats erzeugt, die nicht platziert werden können, und da alle Abbildungen in der Reihenfolge gehalten werden, sind alle nicht mehr platzierbar, wenn eine nicht platziert werden kann. Sie werden dann zurückgehalten, bis sie \clearpage
am Ende des Dokuments oder Abschnitts mit einem abgeschlossen werden.
Bei einer Option [hp]
müssen Sie den Wert also niedrig genug ansetzen \floatpagefraction
, damit eine beliebige Folge von Floats platziert werden kann.
Am einfachsten ist es, den Wert sehr niedrig einzustellen, beispielsweise auf 0,01. Dann sollte kein Float mehr als eine Seite floaten; es wird immer sofort ausgeliefert. Da Floats jedoch nicht zurückgehalten werden, haben die Float-Seiten nur einen Float pro Seite, da Latex nicht wartet, um zu sehen, ob der nächste passt.
Antwort2
Es gibt mehrere Möglichkeiten, schwebende Objekte näher an ihrer Position zu halten.
Sehen Sie sich diese großartige Antwort auf die Frage an, wie Float-Objekte funktionieren:
https://tex.stackexchange.com/a/39020/59716
Mit der optionalen Platzierungsanweisung [!hp]
gewinnen Sie nicht viel. Sie nehmen LaTeX einige Möglichkeiten zur Platzierung der Float-Objekte, nämlich b
und t
, und fügen !
und hinzu h
.
Wenn Sie keine Option angeben, ist die Standardplatzierung . btp
Sie können diese Vorgabe mit dem Float-Paket ändern:
\usepackage{float} \floatplacement{table}{htbp}
um es als Standard hinzuzufügen h
.
Ein weiteres hilfreiches Paket ist placeins
, das den Befehl bietet \FloatBarrier
, der erzwingt, dass alle aktuellen Floats davor platziert werden.
Wenn Sie es so laden:
\usepackage[section, below]{placeins}
Ein Float wird niemals auf einer Seite ausgeführt, die nicht zu seinem Abschnitt gehört.