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\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 docentering
declaração? - Para uso com
IEEEtran
,\g@addto@macro\@floatboxreset\centering
é ineficaz porque\figure
redefine\@floatboxreset
. Eu usoetoolbox
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.
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
flushleft
eflushright
ambientes, bem como comandos\raggedright
e\raggedleft
center
em torno do ambientefigure
! Consulte Tabelas e seções perdidas . (Não que eu diga que Yiannis fez isso)