Vad är rätt sätt att centrera figurer och tabeller (figure
, table
)?
\begin{center} ... \end{center}
eller
\begin{centering} ... \end{centering}
Kommentarer
Svar
Det rätta sättet är
\begin{figure} \centering ... (Code for pictures, captions) ... \end{figure}
\begin{center}
… \end{center}
inuti en figure
-miljön kommer att resultera i (i allmänhet oönskad) ytterligare vertikalt utrymme.
Observera att medan \centering
producerar rätt avstånd, lägger man manuellt till detta kommando i varje figure
miljö (och till alla table
och skräddarsydda flottör) är tråkigt och strider mot idén att separera innehållet i ett dokument från formatet . Ännu bättre sätt är att lägga till följande i dokumentinledningen (tack till egreg för tipset):
\makeatletter \g@addto@macro\@floatboxreset\centering \makeatother
eller att ladda floatrow
paket som gör det möjligt att styra motiveringen av flottörinnehåll från ingressen (med objectset=centering
som standard).
Kommentarer
- Observera också att
\centering
är en deklaration, inte en miljö. Att\begin{centering}
fungerar är en olycklig konsekvens av hur miljöer fungerar internt i LaTeX: Miljön foo består i huvudsak av två makron\foo
och\endfoo
som kallas av\begin{foo}
respektive\end{foo}
(tillsammans med viss felkontroll, t.ex. ordentligt häckande). Men eftersom\endfoo
kallas via\csname endfoo\endcsname
, behöver det makrot faktiskt inte ’ . Det betyder att även saker som$\begin{alpha}\end{alpha}$
fungerar (men ska naturligtvis inte användas). - Det ’ s också den mer esoteriska
\g@addto@macro\@floatboxreset\centering
som naturligtvis bör föregås av\makeatletter
och följt av\makeatother
. - Tack för att du nämnde
floatrow
paketet som ser väldigt, väldigt kraftfullt ut (jag borde ha funnit det tidigare, nu ändrar alla figur- / tabelldefinitioner i min avhandling kommer att vara en hel del arbete). Dokumentationen är dock så lång och det finns så många konfigurationsmöjligheter att det blir väldigt svårt att räkna ut den bästa inställningen .. Finns det en vägledning med en ” rekommenderas ” inställning för en dubbelsidig avhandling? 🙁 - @Villemoes Så varför så många LaTeX-redaktörer använder utdrag för infoga siffror som ändå använder
center
-miljön istället förcentering
deklaration? - För användning med
IEEEtran
är\g@addto@macro\@floatboxreset\centering
ineffektiv eftersom\figure
omdefinierar\@floatboxreset
. Jag använderetoolbox
och\patchcmd{\figure}{\normalsize}{\normalsize\centering}{}{}
.
Svar
Detta är ett (mycket sent!) tillägg till lockstep ”svar som bara erbjuder en visuell demonstration av skillnaden mellan användningen av \centering
och center
-miljön inom figure
miljöer.
Varje sida visar två siffror, en med \centering
och en med center
. Skillnaderna i avstånd är resultatet av att de två figure
-miljöerna är olika försiktigt. På den första sidan används \centering
först och center
-miljön andra, medan på andra sidan är denna ordning omvänd.
Resultaten visar tydligt olämpligt avstånd för den nedre siffran (första sidan) och den övre figuren (andra sidan) dvs. för vilken figur som helst använder center
snarare än \centering
.
showframe
används för att visa den övergripande sidlayouten.
kod > \ centrering < / kod > och < kod > center < / kod > miljö inuti < kod > figur < / kod > miljöer
\documentclass{article} \usepackage{graphicx,showframe,kantlipsum} \begin{document} \kant[1] \begin{figure} \centering \includegraphics[scale=.25]{example-image-a} \caption{Figure with centering} \end{figure} \kant[2] \begin{figure} \begin{center} \includegraphics[scale=.25]{example-image-a} \end{center} \caption{Figure in center environment} \end{figure} \kant[3] \begin{figure} \begin{center} \includegraphics[scale=.25]{example-image-a} \end{center} \caption{Figure in center environment} \end{figure} \kant[4] \begin{figure} \centering \includegraphics[scale=.25]{example-image-a} \caption{Figure with centering} \end{figure} \end{document}
Jämför slutligen två sidor med två siffror vardera.Den första sidan innehåller siffror som använder \centering
, medan den andra innehåller siffror som använder center
-miljön.
\documentclass{article} \usepackage{graphicx,showframe,kantlipsum} \begin{document} \kant[1] \begin{figure} \centering \includegraphics[scale=.25]{example-image-a} \caption{Figure with centering} \end{figure} \kant[2] \begin{figure} \centering \includegraphics[scale=.25]{example-image-a} \caption{Figure with centering} \end{figure} \kant[3] \begin{figure} \begin{center} \includegraphics[scale=.25]{example-image-a} \end{center} \caption{Figure in center environment} \end{figure} \kant[4] \begin{figure} \begin{center} \includegraphics[scale=.25]{example-image-a} \end{center} \caption{Figure in center environment} \end{figure} \end{document}
Svar
Eftersom denna tråd födde lite missförstånd , skulle jag vilja lägga till en anteckning.
Som de andra svaren säger, center
miljö bör aldrig användas inom en figure
eller table
-miljö , bör du använda \centering
istället:
Men om din tabell eller bild inte är flytande, så vill du ha dem exakt där du placerar dem, dvs de är inte inom en figure
eller en table
-miljö kan du använda en center
miljö utan problem. Det motsvarar en table
eller en figure
-miljö med H
-alternativet för float
paket.
Om du vill lägga till en bildtext kan du använda \captionof
från \caption
-paket.
\documentclass{article} \usepackage{graphicx} \usepackage{booktabs} \usepackage{caption} \captionsetup[table]{position=above} \usepackage{float} \begin{document} You can use \texttt{center} environments here, because they are not within a floating one: \begin{center} \captionof{table}{A non-floating table within a \texttt{center} environment} \begin{tabular}{cc} \toprule Ducks & Lions \\ \midrule 1 & 2 \\ \bottomrule \end{tabular} \end{center} \begin{center} \includegraphics[width=.5\linewidth]{example-image-a} \captionof{figure}{A non-floating figure within a \texttt{center} environment} \end{center} They are equivalent to a \texttt{table} or \texttt{figure} environment with the \texttt{H} option of \texttt{float} package: \begin{table}[H] \centering \caption{A non-floating table with \texttt{H} option} \begin{tabular}{cc} \toprule Ducks & Lions \\ \midrule 1 & 2 \\ \bottomrule \end{tabular} \end{table} \begin{figure}[H] \centering \includegraphics[width=.5\linewidth]{example-image-a} \caption{A non-floating figure with \texttt{H} option} \end{figure} Just to show the also the lists works: \listoftables \listoffigures \end{document}
Kommentarer
- Vad sägs om att spola vänster och spola ett bord eller en figur?
- @ BlackMild Det finns
flushleft
ochflushright
miljöer samt\raggedright
och\raggedleft
kommandon
center
-miljön runtfigure
-miljön! Se Tabeller och avsnitt blir felplacerade . (Inte för att jag säger att Yiannis gjorde det här)