Devo usar centro ou centralização para figuras e tabelas?

Qual é a maneira correta de centralizar figuras e tabelas (figure, table)?

\begin{center} ... \end{center} 

ou

\begin{centering} ... \end{centering} 

Comentários

  • Definitivamente, nunca coloque o ambiente center em torno do ambiente figure! Consulte Tabelas e seções perdidas . (Não que eu diga que Yiannis fez isso)

Resposta

A maneira correta é

\begin{figure} \centering ... (Code for pictures, captions) ... \end{figure} 

\begin{center}\end{center} dentro de um figure ambiente resultará em espaço vertical adicional (geralmente indesejado).

Observe que, embora \centering produza o espaçamento adequado, adicionando manualmente este comando a cada figure ambiente (e para cada table e float personalizado) é tedioso e vai contra a ideia de separar o conteúdo de um documento do formato . As formas ainda melhores são adicionar o seguinte ao preâmbulo do documento (obrigado ao egreg pela dica):

\makeatletter \g@addto@macro\@floatboxreset\centering \makeatother 

ou carregar o floatrow pacote que permite controlar a justificação do conteúdo flutuante do preâmbulo (com objectset=centering como padrão).

Comentários

  • Observe também que \centering é uma declaração, não um ambiente. O fato de \begin{centering} funcionar é uma consequência infeliz da maneira como os ambientes funcionam internamente no LaTeX: o ambiente foo consiste essencialmente em duas macros \foo e \endfoo que são chamados por \begin{foo} e \end{foo}, respectivamente (junto com alguma verificação de erro, como aninhamento adequado). Mas como \endfoo é chamado via \csname endfoo\endcsname, essa macro não ‘ realmente precisa existir . Isso significa que até mesmo coisas como $\begin{alpha}\end{alpha}$ funcionam (mas, é claro, não devem ser usadas).
  • Existem ‘ s também o mais esotérico \g@addto@macro\@floatboxreset\centering que, é claro, deve ser precedido por \makeatletter e seguido por \makeatother.
  • Obrigado por mencionar o pacote floatrow que parece muito, muito poderoso (eu deveria ter descoberto isso antes, agora mudando todas as definições de figura / tabela em minha tese vai dar muito trabalho). No entanto, a documentação é tão longa e existem tantas possibilidades de configuração, que será muito difícil descobrir a melhor configuração .. existe um tutorial com um ” recomendado ” configuração para uma tese de duas páginas? 🙁
  • @Villemoes Então, por que tantos editores LaTeX usam snippets para inserir figuras que usam ainda o ambiente center em vez do centering declaração?
  • Para uso com IEEEtran, \g@addto@macro\@floatboxreset\centering é ineficaz porque \figure redefine \@floatboxreset. Eu uso etoolbox e \patchcmd{\figure}{\normalsize}{\normalsize\centering}{}{}.

Resposta

Este é um suplemento (muito atrasado!) para resposta da lockstep “ que apenas oferece uma demonstração visual da diferença entre o uso de \centering e o ambiente center dentro ambientes figure.

Cada página mostra 2 figuras, uma usando \centering e outra usando center. As diferenças no espaçamento são o resultado da ordenação dos dois figure ambientes diferentes rentemente. Na primeira página, \centering é usado primeiro e o center ambiente em segundo, enquanto na segunda página, esta ordem é invertida.

Os resultados mostram claramente espaçamento inadequado para a figura inferior (primeira página) e a figura superior (segunda página), ou seja, para qualquer figura que use center em vez de \centering.

showframe é usado para mostrar o layout geral da página.

ilustração das diferenças entre

código > \ centering < / código > e < código > center < / code > ambiente dentro do < código > figura < / código > ambientes

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

Finalmente, compare duas páginas com duas figuras cada.A primeira página inclui figuras que usam \centering, enquanto a segunda inclui figuras que usam o ambiente center.

Comparações adicionais

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

Resposta

Uma vez que este tópico deu origem a um pequeno mal-entendido , gostaria de acrescentar uma observação.

Como dizem as outras respostas, center o ambiente deve nunca ser usado dentro de um figure ou table ambiente , você deve usar \centering em vez disso:

insira a descrição da imagem aqui

Mas se a sua tabela ou imagem não estiver flutuando, você gostaria de tê-las exatamente onde as colocou, ou seja, elas não em um ambiente figure ou table, você pode usar um center ambiente sem problemas. É equivalente a um ambiente table ou figure com a opção H de float pacote.

Se desejar adicionar uma legenda, você pode usar \captionof de .

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

insira a descrição da imagem aqui insira a descrição da imagem aqui

Comentários

  • Que tal nivelar e liberar uma mesa ou figura?
  • @BlackMild Existem flushleft e flushright ambientes, bem como comandos \raggedright e \raggedleft

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *