将图形和表格居中的正确方法是什么(figure
,table
)?
\begin{center}
...
\end{center}
或者
\begin{centering}
...
\end{centering}
答案1
正确的方法是
\begin{figure}
\centering
... (Code for pictures, captions) ...
\end{figure}
\begin{center}
...在环境\end{center}
内部figure
会导致(通常是不必要的)额外的垂直空间。
请注意,虽然\centering
会产生适当的间距,但手动将此命令添加到每个figure
环境(以及每个table
自定义浮动)是繁琐的,并且违背了将文档内容与格式分开的想法。更好的方法是将以下内容添加到文档序言中(感谢 egreg 提供的提示):
\makeatletter
\g@addto@macro\@floatboxreset\centering
\makeatother
或加载floatrow
允许从前言部分控制浮动内容的调整的包(objectset=centering
默认情况下)。
答案2
这是(非常晚了!)的补充lockstep 的回答这只是直观地演示了环境的使用\centering
和环境center
中的环境之间的差异figure
。
每页显示 2 个图,一个使用\centering
,一个使用center
。间距的差异是由于对两个figure
环境的排序不同。在第一页上,\centering
先使用 ,center
然后使用 环境,而在第二页上,此顺序相反。
结果清楚地表明,下图(第一页)和上图(第二页)的间距不合适,即,无论哪个图使用center
而不是\centering
。
showframe
用于显示整体页面布局。
\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}
最后,比较两页,每页包含两个图形。第一页包含使用 的图形\centering
,而第二页包含使用环境的图形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}
答案3
由于这个线程诞生了一点误会,我想补充一点。
正如其他答案所说,center
环境应该绝不使用figure
在或table
环境中,你应该使用\centering
:
但是如果你的表格或图片不是浮动的,也就是说你希望它们准确地放置在你放置它们的位置,即它们不是在figure
或table
环境中,您可以center
毫无问题地使用环境。它相当于table
或figure
带有包选项H
的环境float
。
如果您想添加标题,您可以使用包\captionof
中的\caption
。
\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}