我过去常常vspace and hspace
手动将上图与下图对齐,但上部子标题不会随上部子图移动。我必须使用什么命令来定位上部子标题与下图和子标题的图形中心。
\documentclass{elsarticle}
\usepackage{graphics}
\usepackage[justification=centering]{caption}
\usepackage{subcaption}
\usepackage{caption}
\begin{document}
\begin{figure}[b]
\setlength\abovecaptionskip{+0.4\baselineskip}
\centering
\begin{subfigure}[b]{0.34\linewidth}
\vspace*{-0mm}\hspace*{-7mm}
\includegraphics[width=\linewidth]{1.eps}
\hspace*{\fill}\caption{airfoils shape}
\end{subfigure}
\begin{subfigure}[b]{0.34\linewidth}
\vspace*{-0mm}\hspace*{1mm}
\includegraphics[width=\linewidth]{2.eps}
\caption{Surface pressure distributions}
\end{subfigure}
\begin{subfigure}[b]{0.4\linewidth}
\includegraphics[width=\linewidth]{3.png}
\caption{Initial and Optimum airfoil results}
\end{subfigure}
\begin{subfigure}[b]{0.4\linewidth}
\includegraphics[width=\linewidth]{4.png}
\caption{Initial and Optimum airfoil results}
\end{subfigure}
\caption{Initial and Optimum airfoil results Initial and Optimum airfoil results Initial and Optimum airfoil results}
\label{fig7}
\end{figure}
\end{document}
答案1
这里有两个问题。首先,您需要移动图像以对齐它们的轴。其次,您需要让子图认为它们都是相同大小。
该\raisebox
命令主要通过移动基线来移动图像,但也可以改变其高度和深度,这在忽略基线(如子图)的环境中更有用。该\makebox
命令可以改变图像的有效宽度。因此,在这两者之间,您应该能够对齐所有内容。
以下并不是针对您的特定问题(无法访问您的图像)的解决方案,而是如何移动图像而不让 LaTeX 知道它们已被移动的说明。
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\movebox}{momom}% #1 = raise distance
% #2 = effective total height (optional)
% #3 = slide distance (positive right}
% #4 = effective width (optional)
% #5 = contents
{\bgroup
\sbox0{#5}%
\IfNoValueTF{#2}{\dimen0=\dimexpr \ht0+\dp0}{\dimen0=#2\relax}%
\IfNoValueTF{#4}{\dimen1=\wd0}{\dimen1=#4\relax}%
\raisebox{#1}[\dimexpr \dimen0-\dp0][\dp0]% for images \dp0=0pt
{\makebox[\dimen1][l]{\hspace{#3}\box0}}%
\egroup}
\begin{document}
Move a box to right without letting \verb|\fbox| know it moved.
\fbox{\movebox{0pt}{2em}{\rule{1em}{1ex}}}
Move a box to left without letting \verb|\fbox| know it moved.
\fbox{\movebox{0pt}{-2em}{\rule{1em}{1ex}}}
Move a box down without letting \verb|\fbox| know it moved.
\fbox{\movebox{-\baselineskip}{0pt}{\rule{1em}{1ex}}} baseline
\end{document}
答案2
像这样?
\documentclass[demo]{elsarticle}
\usepackage{graphicx}
\usepackage[justification=centerlast]{caption}
\usepackage{subcaption}
\begin{document}
\begin{figure}[b]
%\setlength\abovecaptionskip{0.4\baselineskip}
\centering
\begin{subfigure}[b]{0.4\linewidth}
\includegraphics[width=\linewidth]{1.eps}
\caption{airfoils shape}
\end{subfigure}
\hfil
\begin{subfigure}[b]{0.4\linewidth}
\includegraphics[width=\linewidth]{2.eps}
\caption{Surface pressure distributions}
\end{subfigure}
\medskip
\begin{subfigure}[b]{0.4\linewidth}
\includegraphics[width=\linewidth]{3.png}
\caption{Initial and Optimum airfoil results}
\end{subfigure}
\hfil
\begin{subfigure}[b]{0.4\linewidth}
\includegraphics[width=\linewidth]{4.png}
\caption{Initial and Optimum airfoil results}
\end{subfigure}
\caption{Initial and Optimum airfoil results Initial and Optimum airfoil results Initial and Optimum airfoil results}
\label{fig7}
\end{figure}
\end{document}
如您所见,我对您的 MWE 做了一些细微的更改:删除所有\vspace*
和\hspace*
命令,在图像之间插入\hfil
并在第二和第三幅图像之间插入空行。这样,第二行图像就定义得很好了。为了在图像之间留出更多空间,我在第二行命令之前添加了\medskip
。
由于我没有您的图像,我使用选项demo
。\documentclass
在实际文档中,您需要将其删除。
另外graphics
你应该加载graphicx