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\fooe\endfooche sono chiamati rispettivamente da\begin{foo}e\end{foo}(insieme ad alcuni controlli di errore, come nidificazione corretta). Ma poiché\endfooviene 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\centeringche, ovviamente, dovrebbe essere preceduto da\makeatlettere seguito da\makeatother. - Grazie per aver menzionato il pacchetto
floatrowche 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
centerinvece dicenteringdichiarazione? - Da utilizzare con
IEEEtran,\g@addto@macro\@floatboxreset\centeringè inefficace poiché\figureridefinisce\@floatboxreset. Usoetoolboxe\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
flushlefteflushrightambienti, nonché\raggedrighte\raggedleftcomandi
centernellambientefigure! Vedi Tabelle e sezioni fuori posto . (Non che io dica che Yiannis ha fatto questo)