Qual è il modo corretto per centrare figure e tabelle (figure
, table
)?
\begin{center} ... \end{center}
o
\begin{centering} ... \end{centering}
Commenti
Answer
Il modo corretto è
\begin{figure} \centering ... (Code for pictures, captions) ... \end{figure}
\begin{center}
… \end{center}
allinterno di un figure
si tradurrà in uno spazio verticale aggiuntivo (generalmente indesiderato).
Nota che mentre \centering
produce una spaziatura corretta, aggiungendo manualmente questo comando a ogni figure
ambiente (e per ogni table
e float personalizzato) è noioso e va contro lidea di separare il contenuto di un documento dal formato . Altri modi migliori sono aggiungere quanto segue al preambolo del documento (grazie a egreg per il suggerimento):
\makeatletter \g@addto@macro\@floatboxreset\centering \makeatother
o caricare il floatrow
che permette di controllare la giustificazione dei contenuti float dal preambolo (con objectset=centering
come default).
Commenti
- Nota anche che
\centering
è una dichiarazione, non un ambiente. Il fatto che\begin{centering}
funzioni è una sfortunata conseguenza del modo in cui gli ambienti funzionano internamente in LaTeX: lambiente foo consiste essenzialmente di due macro\foo
e\endfoo
che sono chiamati rispettivamente da\begin{foo}
e\end{foo}
(insieme ad alcuni controlli di errore, come nidificazione corretta). Ma poiché\endfoo
viene chiamato tramite\csname endfoo\endcsname
, quella macro ‘ non deve esistere effettivamente . Ciò significa che anche cose come$\begin{alpha}\end{alpha}$
funzionano (ma ovviamente non dovrebbero essere utilizzate). - Lì ‘ è anche il più esoterico
\g@addto@macro\@floatboxreset\centering
che, ovviamente, dovrebbe essere preceduto da\makeatletter
e seguito da\makeatother
. - Grazie per aver menzionato il pacchetto
floatrow
che sembra molto, molto potente (avrei dovuto scoprirlo prima, ora cambiando tutte le definizioni di figure / tabelle in la mia tesi sarà un bel lavoro). Tuttavia, la documentazione è così lunga e ci sono così tante possibilità di configurazione, che sarà molto difficile capire la migliore configurazione .. cè un tuturial con un ” consigliato ” impostato per una tesi di due pagine? 🙁 - @Villemoes Allora perché così tanti editor LaTeX usano snippet per inserire figure che usano ancora lambiente
center
invece dicentering
dichiarazione? - Da utilizzare con
IEEEtran
,\g@addto@macro\@floatboxreset\centering
è inefficace poiché\figure
ridefinisce\@floatboxreset
. Usoetoolbox
e\patchcmd{\figure}{\normalsize}{\normalsize\centering}{}{}
.
Risposta
Questo è un supplemento (molto tardivo!) a lockstep “s answer che offre solo una dimostrazione visiva della differenza tra luso di \centering
e center
ambiente allinterno figure
ambienti.
Ogni pagina mostra 2 cifre, una che utilizza \centering
e laltra che utilizza center
. Le differenze nella spaziatura sono il risultato dellordinamento dei due figure
ambienti diversi rently. Nella prima pagina, \centering
viene utilizzato per primo e center
per secondo, mentre nella seconda pagina lordine è invertito.
I risultati mostrano chiaramente una spaziatura inappropriata per la figura inferiore (prima pagina) e per la figura superiore (seconda pagina), ovvero per qualsiasi figura utilizzi center
anziché \centering
.
showframe
viene utilizzato per mostrare il layout generale della pagina.
codice > \ centering < / code > e < code > center < / code > ambiente allinterno di < codice > figura < / code > ambienti
\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}
Infine, confronta due pagine con due cifre ciascuna.La prima pagina include cifre che utilizzano \centering
, mentre la seconda include cifre che utilizzano lambiente center
.
\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}
Risposta
Dato che questo thread ha dato vita a un piccolo malinteso , vorrei aggiungere una nota.
Come dicono le altre risposte, center
lambiente deve mai essere utilizzato allinterno di un figure
o table
ambiente , dovresti utilizzare \centering
invece:
Ma se la tua tabella o immagine non è mobile, vorresti che fosse esattamente dove le metti, cioè non sono allinterno di un figure
o table
, puoi utilizzare un center
senza problemi. È equivalente a un ambiente table
o figure
con lopzione H
di float
pacchetto.
Se desideri aggiungere una didascalia, puoi utilizzare \captionof
da \caption
pacchetto.
\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}
Commenti
- Che ne dici di flushleft e flushright un tavolo o una figura?
- @BlackMild Ci sono
flushleft
eflushright
ambienti, nonché\raggedright
e\raggedleft
comandi
center
nellambientefigure
! Vedi Tabelle e sezioni fuori posto . (Non che io dica che Yiannis ha fatto questo)