Mam dokument LaTeX, który zawiera akapit, po którym następują 4 tabele, po których następuje drugi akapit. Chcę, aby między dwoma akapitami pojawiły się 4 tabele, co z tego, co przeczytałem, oznacza, że powinienem użyć opcji [h] po uruchomieniu środowiska tabelowego (np \begin{table}[h]
.).
Korzystając z tego, pierwsze dwie tabele pojawiają się po akapicie 1, zgodnie z oczekiwaniami, jednak akapit 2 jest następnie wyświetlany, a dwie ostatnie tabele pojawiają się na następnej stronie. Jak sprawić, by tabele pojawiały się we właściwej lokalizacji?
Próbowałem różnych rzeczy, aby poprawić pozycjonowanie, na przykład używając, [h!]
ale nie wydaje się to mieć żadnego efektu. Używanie \clearpage
po tabelach daje pożądany efekt w postaci pojawienia się tabel przed drugim akapitem, ale następnie pozostawia ostatnie dwie tabele na własnej stronie z dużą ilością spacji, podczas gdy wolałbym, aby drugi akapit zaczynał się natychmiast stoły.
Paragraph 1...
\begin{table}[h]
table1...
\end{table}
\begin{table}[h]
table2...
\end{table}[h]
...
Paragraph 2...
[h!]
to poprawna wersja. To odpowiednik[H]
. Oba wymagająfloat
pakietu.Odpowiedzi:
Po kilku kolejnych googlach natknąłem się na pakiet float , który pozwala zapobiec repozycjonowaniu tabel przez LaTeX.
W preambule:
\usepackage{float} \restylefloat{table}
Następnie dla każdego stołu możesz użyć
H
opcji umieszczania (np.\begin{table}[H]
), Aby upewnić się, że nie zostanie zmieniona.źródło
H
jest odpowiednikiemh!
(aby uzyskać więcej informacji o parametrach, sprawdź moją odpowiedź tutaj )#+LATEX_HEADER: \usepackage{float} #+LATEX_HEADER: \restylefloat{table}
A potem,#+CAPTION: A table #+NAME: tab:table-label #+ATTR_LATEX: :placement [H] :center t <<actual table content>>
wybacz słabe formatowanie nowej linii w komentarzach.\restylefloat{table}
, aby użyć specyfikatora[H]
pozycjonowania, jest fałszywe . Trzeba tylko kiedykolwiek uruchamiane\restylefloat{table}
jeśli najpierw uruchomić pakiet instrukcji\floatstyle
,\floatplacement
lub\floatname
. Zaktualizuj swoją odpowiedź, aby usunąć odniesienie do\restylefloat
. Jeśli potrzebujesz więcej dowodów na to, że\restylefloat
rutynowe uruchamianie nie jest dobrym pomysłem, zobacz opis i etykieta ogłaszania tabeli, dwóch tabel umieszczonych obok siebie, jest przypisanych do innej tabeli .To zadziałało dla mnie:
Na początku
usepackage
definicje obejmują:\usepackage{placeins}
A przed i po dodaniu:
\FloatBarrier \begin{table}[h] \begin{tabular}{llll} .... \end{tabular} \end{table} \FloatBarrier
Spowoduje to umieszczenie tabeli dokładnie tam, gdzie chcesz w tekście.
źródło
Pozycjonowanie stołu
Dostępne parametry
W łatwy sposób można ustawić stół o następujących parametrach:
h
Umieść pływak tutaj , tj. Mniej więcej w tym samym miejscu, w którym występuje w tekście źródłowym (jednak nie dokładnie w tym miejscu)t
Pozycja u góry strony.b
Pozycja na dole strony.p
Umieść na specjalnej stronie tylko dla pływaków.!
Zastąp parametry wewnętrzne, których LaTeX używa do określania „dobrych” pozycji zmiennoprzecinkowych.H
Umieszcza zmiennoprzecinkową dokładnie w miejscu w kodzie LATEX. Wymaga pakietu float. Jest to w pewnym stopniu równoważne zh!
.Jeśli chcesz wykorzystać
H
(lubh!
) do dokładnego pozycjonowania, upewnij się, żefloat
pakiet został poprawnie skonfigurowany w preambule:\usepackage{float} \restylefloat{table}
Przykład
Jeśli chcesz umieścić tabelę na tej samej stronie, w dokładnym miejscu lub przynajmniej na górze strony (co najlepiej pasuje do silnika lateksowego), użyj parametrów
h
it
tak:\begin{table}[ht] table content ... \end{table}
Źródła: Overleaf.com
źródło
Co się stanie, jeśli tekst, tabele i tekst nie mieszczą się na jednej stronie? Próbując wymusić skład w ten sposób, bardzo prawdopodobne jest, że strony będą zbyt krótkie; tj. ponieważ tabela nie może domyślnie przełamać strony, zostanie przesunięta na następną i pozostawi lukę na stronie wcześniej. Zauważysz, że nigdy nie zobaczysz tego w opublikowanej książce.
Pływanie to Dobra Rzecz! Zalecam używanie
[htbp]
jako ustawienia domyślnego dla wszystkich tabel i rysunków do czasu ukończenia dokumentu; dopiero wtedy powinni pomyśleć o precyzyjnym dostrojeniu ich dokładnego rozmieszczenia.PS Przeczytaj FAQ ; większość innych odpowiedzi tutaj to częściowe kombinacje udzielonych tam porad.
źródło
[htbp]
a niczym?[ht]
zamiast[htbp]
Oto proste rozwiązanie z Wikibooks :
Po prostu stawiam
\FloatBarrier
przed i po każdym stole.źródło
Jeśli chcesz mieć dwie tabele obok siebie, możesz użyć: (z
float
załadowanym pakietem)\begin{table}[H] \begin{minipage}{.5\textwidth} %first table \end{minipage} \begin{minipage}{.5\textwidth} %second table \end{minipage} \end{table}
Każdy będzie miał własny podpis i numer. Inną opcją jest
subfigure
pakiet.źródło
Możesz dodać to do swojej preambuły i dostosować wartości w razie potrzeby:
%------------begin Float Adjustment %two column float page must be 90% full \renewcommand\dblfloatpagefraction{.90} %two column top float can cover up to 80% of page \renewcommand\dbltopfraction{.80} %float page must be 90% full \renewcommand\floatpagefraction{.90} %top float can cover up to 80% of page \renewcommand\topfraction{.80} %bottom float can cover up to 80% of page \renewcommand\bottomfraction{.80} %at least 10% of a normal page must contain text \renewcommand\textfraction{.1} %separation between floats and text \setlength\dbltextfloatsep{9pt plus 5pt minus 3pt } %separation between two column floats and text \setlength\textfloatsep{4pt plus 2pt minus 1.5pt}
W szczególności interesujący może być \ floatpagefraction.
źródło
Aby umieścić podpisy nad ruchomymi tabelami umieszczonymi w pozycji [H], wstaw w preambule następujący tekst:
\usepackage{float} \floatstyle{plaintop} \restylefloat{table}
źródło