Wat is de juiste manier om figuren en tabellen te centreren (figure
, table
)?
\begin{center} ... \end{center}
of
\begin{centering} ... \end{centering}
Reacties
Antwoord
De juiste manier is
\begin{figure} \centering ... (Code for pictures, captions) ... \end{figure}
\begin{center}
… \end{center}
binnen een figure
-omgeving zal resulteren in (doorgaans ongewenste) extra verticale ruimte.
Merk op dat hoewel \centering
de juiste spatiëring produceert, dit commando handmatig aan elke figure
omgeving (en voor elke table
en op maat gemaakte float) is vervelend en druist in tegen het idee om de inhoud van een document te scheiden van het formaat . Nog betere manieren zijn om het volgende toe te voegen aan de preambule van uw document (met dank aan egreg voor de tip):
\makeatletter \g@addto@macro\@floatboxreset\centering \makeatother
of om de floatrow
-pakket waarmee u de rechtvaardiging van float-inhoud vanuit de preambule kunt regelen (met objectset=centering
als standaard).
Reacties
- Merk ook op dat
\centering
een declaratie is, geen omgeving. Dat\begin{centering}
werkt, is een ongelukkig gevolg van de manier waarop omgevingen intern werken in LaTeX: de omgevingsfoo bestaat in wezen uit twee macros\foo
en\endfoo
die respectievelijk worden aangeroepen door\begin{foo}
en\end{foo}
(samen met enkele foutcontrole, zoals juiste nesting). Maar aangezien\endfoo
wordt aangeroepen via\csname endfoo\endcsname
, hoeft die macro niet ‘ te bestaan . Dit betekent dat zelfs dingen als$\begin{alpha}\end{alpha}$
werken (maar natuurlijk niet gebruikt mogen worden). - Daar ‘ s ook de meer esoterische
\g@addto@macro\@floatboxreset\centering
die, natuurlijk, moet worden voorafgegaan door\makeatletter
en gevolgd door\makeatother
. - Bedankt voor het vermelden van het
floatrow
-pakket dat er erg, erg krachtig uitziet (ik had dat eerder moeten ontdekken, nu alle figuur- / tabeldefinities in mijn scriptie zal best wat werk zijn). De documentatie is echter zo lang en er zijn zoveel configuratiemogelijkheden, dat het erg moeilijk zal zijn om de beste opstelling te vinden .. is er een les met een ” aanbevolen ” setup voor een scriptie van twee paginas? 🙁 - @Villemoes Dus waarom gebruiken zoveel LaTeX-editors fragmenten voor het invoegen van cijfers die de
center
-omgeving gebruiken in plaats van decentering
declaratie? - Voor gebruik met
IEEEtran
,\g@addto@macro\@floatboxreset\centering
is niet effectief omdat\figure
herdefinieert\@floatboxreset
. Ik gebruiketoolbox
en\patchcmd{\figure}{\normalsize}{\normalsize\centering}{}{}
.
Answer
Dit is een (zeer late!) aanvulling op lockstep “s antwoord dat slechts een visuele demonstratie biedt van het verschil tussen het gebruik van \centering
en de center
omgeving binnen figure
omgevingen.
Elke pagina toont 2 cijfers, een met \centering
en een met center
. De verschillen in tussenruimte zijn het resultaat van het ordenen van de twee figure
omgevingen die verschillen rently. Op de eerste pagina wordt \centering
als eerste gebruikt en de center
omgeving als tweede, terwijl op de tweede pagina deze volgorde wordt omgekeerd.
De resultaten laten duidelijk een ongepaste spatiëring zien voor het onderste cijfer (eerste pagina) en het bovenste cijfer (tweede pagina), dwz voor welk cijfer dan ook center
gebruikt in plaats van \centering
.
showframe
wordt gebruikt om de algehele pagina-indeling te tonen.
code > \ centreren < / code > en < code > centrum < / code > omgeving binnen < code > figuur < / code > omgevingen
\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}
Vergelijk ten slotte twee paginas met elk twee cijfers.De eerste pagina bevat figuren die \centering
gebruiken, terwijl de tweede cijfers bevat die de center
omgeving gebruiken.
\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}
Antwoord
Aangezien deze thread heeft geleid tot een klein misverstand , wil ik een opmerking toevoegen.
Zoals de andere antwoorden zeggen, center
omgeving mag nooit worden gebruikt binnen een figure
of table
omgeving , moet u \centering
in plaats daarvan:
Maar als je tabel of afbeelding niet zweeft, wil je dat ze precies zijn waar je ze neerzet, dwz ze zijn niet binnen een figure
of een table
omgeving, kunt u een center
omgeving zonder problemen. Het is gelijk aan een table
of een figure
omgeving met de H
optie van float
pakket.
Als u een bijschrift wilt toevoegen, kunt u \captionof
van pakket.
\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}
Opmerkingen
- Hoe zit het met flushleft en flushright een tafel of een figuur?
- @BlackMild Er zijn
flushleft
enflushright
omgevingen, evenals\raggedright
en\raggedleft
opdrachten
center
omgeving beslist nooit rond defigure
omgeving! Zie Tabellen en secties raken misplaatst . (Niet dat ik zeg dat Yiannis dit deed)