不具体的问题:
命令具体起什么作用\centering
?
梅威瑟:
\documentclass[onecolumn]{IEEEtran}
\usepackage{graphicx,subcaption}
\begin{document}
\begin{figure}
%\centering
\begin{subfigure}[b]{.7\textwidth}
\includegraphics[width=\textwidth]{example-image}
\caption{A subfigure}\label{fig:1a}
\end{subfigure}
\begin{subfigure}[b]{.51\textwidth}
\includegraphics[width=\textwidth]{example-image}
\caption{Another subfigure}\label{fig:1c}
\end{subfigure}
\caption{A figure}\label{fig:1}
\end{figure}
\end{document}
具体问题:
在里面平均能量损失之前显示有两个子图,它们溢出了页边距。如果命令\centering
“取消注释”,定位就会突然变得“智能”,并且不会允许溢出页边距。这是命令的正确行为吗?这是一个错误吗?这是一个功能吗?
答案1
嗯,似乎有一个漏洞(或者是特征在您使用的类中?)IEEEtran
或者它会导致使用包subfigure
,该包称为包caption
。并且该包caption
会导致以下您不应忽视的警告:
Package caption Info: Unknown document class (or package),
(caption) standard defaults will be used.
)
那么让我问你:你真的需要课程吗IEEEtran
?如果不需要,请再上一节课,例如article
或scrartcl
(KOMA-Script)。
请查看给定代码中的两行:
\begin{subfigure}[b]{.7\textwidth}
\begin{subfigure}[b]{.51\textwidth}
应该\textwidth
是您可以打印的文本的宽度。我添加了包showframe
来可视化输入区域。
经过一些计算(0.7+0.51=1.21),你可以看到,两个子图加起来比适合文本宽度的宽度要宽(0.21\textwidth)。在你的类中,IEEEtran
你会看到一个错误,因为如果图像不能并排放置在文本宽度内,它们应该一个在另一个之下放置(例如,如果你尝试使用类的代码,你会看到这一点article
)。在这里你的类/subfigure
组合失败了...
(顺便问一下:您是否尝试过同时使用0.45\textwidth
这两幅图像?)
命令\centering
(与环境相同,但没有空白行center
)希望将图像居中在给定的文本宽度内。将\centering
图像居中放置并且一个图像放在另一个图像的下方,因为两个图像加在一起无法适合文本宽度。
梅威瑟:
\documentclass[onecolumn]{IEEEtran} % article IEEEtran =================
\usepackage{graphicx,subcaption}
\usepackage{showframe} % to visualize typing area ======================
\begin{document}
\begin{figure}
%\centering
\begin{subfigure}[b]{.7\textwidth}
\includegraphics[width=\textwidth]{example-image}
\caption{A subfigure}\label{fig:1a}
\end{subfigure}
\begin{subfigure}[b]{.51\textwidth}
\includegraphics[width=\textwidth]{example-image}
\caption{Another subfigure}\label{fig:1c}
\end{subfigure}
\caption{A figure}\label{fig:1}
\end{figure}
\end{document}
未进行居中的类别的 MWE 结果IEEEtran
:
您会看到两个图像都居中(上下距离为 a),但图像 2 位于外部。此居中仅显示,因为页面上没有其他文本。尝试\blindtext
从包中添加blindtext
或类似添加...
现在请看这两行代码:
\end{subfigure}
\begin{subfigure}[b]{.51\textwidth}
该代码导致两个图像之间出现空格(如果需要,此空格允许换行)。我在图像中用垂直红色线标记了此空格。如果您不想要空格(以及此处可能的换行),请使用代码(请自己尝试,将其添加到%
MWE 中并编译以将两个类的结果 pdf 与其他结果进行比较):
\end{subfigure}% <====================================================
\begin{subfigure}[b]{.51\textwidth}
%
注释后面是行}
的其余部分,因此 LaTeX 看不到一个(或多个)空格,结果是两个图像之间没有空格。有了空格,总宽度会比 稍长一点1.21\textwidth
,这就是我之前对两个图像建议的原因0.45\textwidth
。然后图像就适合文本宽度的空间。(感谢@DavidCarlisle 的评论!)
现在有了IEEEtran
和\centering
:
现在两幅图像一上一下,且都位于中央(见图中红色的 a 和 b)。
现在将结果与第一幅图像进行比较,article
并进行注释\centering
:
现在图像是左对齐的(注释了居中命令!),因为检测到两个图像都无法放置在给定的范围内\textwidth
。顺便问一下,您看到两个打字区域的区别了吗?
最后一点:IEEEtran
通常使用 class 来打印两列(请参阅日志文件中的相关消息)。如果您不必使用 class,IEEEtran
最好使用其他的。从标准 class 开始article
或scrartcl
(KOMA-Script 文章)。