Pionowe wyrównanie figur

Oct 08 2020

Rozważmy następujący kod.

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\end{document}

Wynik to:

i

Moje pytanie brzmi, dlaczego pierwsza cyfra nie jest wyśrodkowana w pionie i jak mogę ją wyśrodkować bez zmiany htbpparametru .

Odpowiedzi

1 EladDen Oct 08 2020 at 21:51

Najłatwiej byłoby wyłożyć figurę pewną pionową przestrzenią:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{figure}[htbp]
  \vspace{5cm}
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\end{document}

Inną, może nawet lepszą opcją byłoby wypełnienie obrazu \vfill

\documentclass{article}
\usepackage{graphicx}

\begin{document}
\null
\vfill
\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\vfill

\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\end{document}

Zauważ, że potrzebujesz \ null na początku, aby dać LaTeX-owi coś do odniesienia.

Co do DLACZEGO występuje to zjawisko. Powiedziałbym, że miałoby to związek ze sposobem składania LaTeX-a od góry strony w dół. Jeśli dodasz \newpagelub \clearpagemiędzy dwoma obrazami, drugi również nie zostanie wyśrodkowany.

Pierwsza strona to normalna strona, na której umieszcza rysunek tutaj [h] i na górze [t]. Druga strona to strona rysunku [p], na której rysunek jest wyśrodkowany. Jeśli zdefiniujesz \newpagedrugą stronę, byłaby to „normalna” strona, a rysunek również zostałby umieszczony na górze.

-- EDYTOWAĆ --

Najlepsza opcja polega na stronie FAQ . Ustaw licznik totalnumberna 0, aby każda figura została przeniesiona na stronę z rysunkami, nawet jeśli jest to pierwsza i zmieści się w tekście. Zdefiniuj również bardzo duży odstęp między pływakami fpsep, aby wymusić na każdym z nich wyświetlenie własnej strony:

\documentclass{article}
\usepackage{graphicx}
\usepackage{lipsum}

\setcounter{totalnumber}{0}
\makeatletter
\setlength\@fpsep{\textheight}
\makeatother

\begin{document}
%\lipsum[1-2] %with or without text, the figure will get pushed to a float page

\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}


\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\end{document}

To rodzaj hackowania: ustawienie licznika na 0 oznacza w zasadzie, że LaTeX po prostu nie może umieścić liczby tutaj [h], na górze [t] ani na dole [b]. Dzieje się tak, ponieważ nie możesz mieć tekstu i rysunku na tej samej stronie. Zmusza każdą figurę do przejścia do strony pływającej.