如何水平设置字幕?

如何水平设置字幕?

我过去常常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

相关内容