Qual é a maneira correta de centralizar figuras e tabelas (figure, table)?
\begin{center} ... \end{center}
ou
\begin{centering} ... \end{centering}
Comentários
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\fooe\endfooque 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\centeringque, é claro, deve ser precedido por\makeatlettere seguido por\makeatother. - Obrigado por mencionar o pacote
floatrowque 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
centerem vez docenteringdeclaração? - Para uso com
IEEEtran,\g@addto@macro\@floatboxreset\centeringé ineficaz porque\figureredefine\@floatboxreset. Eu usoetoolboxe\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.
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.
\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:
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}
Comentários
- Que tal nivelar e liberar uma mesa ou figura?
- @BlackMild Existem
flushlefteflushrightambientes, bem como comandos\raggedrighte\raggedleft
centerem torno do ambientefigure! Consulte Tabelas e seções perdidas . (Não que eu diga que Yiannis fez isso)