Devo usare il centro o il centraggio per figure e tabelle?

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 di centering dichiarazione?
  • Da utilizzare con IEEEtran, \g@addto@macro\@floatboxreset\centering è inefficace poiché \figure ridefinisce \@floatboxreset. Uso etoolbox 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.

illustrazione delle differenze tra

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.

Ulteriori confronti

\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:

inserisci qui la descrizione dellimmagine

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} 

inserisci qui la descrizione dellimmagine inserisci qui la descrizione dellimmagine

Commenti

  • Che ne dici di flushleft e flushright un tavolo o una figura?
  • @BlackMild Ci sono flushleft e flushright ambienti, nonché \raggedright e \raggedleft comandi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *