
Solía vspace and hspace
alinear las figuras superiores con las inferiores manualmente, pero los subtítulos superiores no se mueven con las subfiguras superiores. ¿Qué comando debo usar para ubicar los subtítulos superiores al galope de figuras como las figuras inferiores y los subtítulos?
\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}
Respuesta1
Hay dos problemas aquí. Primero, debe mover las imágenes para alinear sus ejes. En segundo lugar, debes hacer que la subfigura piense que todas son del mismo tamaño.
El \raisebox
comando mueve principalmente imágenes moviendo sus líneas de base, pero también puede cambiar su altura y profundidad, lo cual es más útil en entornos que ignoran las líneas de base (como las subfiguras). El \makebox
comando puede cambiar el ancho efectivo de una imagen. Entonces, entre los dos, deberías poder alinear todo.
Lo siguiente no es una solución a su problema particular de no tener acceso a sus imágenes, sino una ilustración de cómo mover imágenes sin que LaTeX sepa que han sido movidas.
\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}
Respuesta2
¿Como esto?
\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}
Como puede ver, hice cambios mínimos en su MWE: eliminar todos los comandos \vspace*
y \hspace*
, insertar entre imágenes \hfil
e insertar una línea vacía entre la segunda y la tercera imagen. De esta manera la segunda fila de imágenes queda bien definida. Para obtener más espacio entre imágenes, agrego antes del comando de la segunda fila \medskip
.
Como no tengo tus imágenes, uso la opción demo
en \documentclass
. EN documento real necesitas eliminarlo.
También en lugar del graphics
paquete deberías cargargraphicx