
Früher habe ich vspace and hspace
obere Abbildungen manuell an den unteren ausgerichtet, aber obere Unterbeschriftungen bewegen sich nicht mit den oberen Unterabbildungen. Welchen Befehl muss ich verwenden, um obere Unterbeschriftungen zwischen Abbildungen wie unteren Abbildungen und Unterbeschriftungen zu lokalisieren?
\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}
Antwort1
Hier gibt es zwei Probleme. Erstens müssen Sie die Bilder verschieben, um ihre Achsen auszurichten. Zweitens müssen Sie Subfigure glauben machen, dass sie alle gleich groß sind.
Der \raisebox
Befehl verschiebt Bilder in erster Linie durch Verschieben ihrer Grundlinien, kann aber auch ihre Höhe und Tiefe ändern, was in Umgebungen nützlicher ist, in denen Grundlinien ignoriert werden (wie bei Unterabbildungen). Der \makebox
Befehl kann die effektive Breite eines Bildes ändern. Sie sollten also zwischen den beiden in der Lage sein, alles auszurichten.
Das Folgende ist keine Lösung für Ihr spezielles Problem, keinen Zugriff auf Ihre Bilder zu haben, sondern eine Veranschaulichung, wie Sie Bilder verschieben können, ohne dass LaTeX davon Kenntnis erhält.
\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}
Antwort2
So was?
\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}
Wie Sie sehen, habe ich in Ihrem MWE geringfügige Änderungen vorgenommen: alle \vspace*
und \hspace*
-Befehle entfernen, zwischen Bildern einfügen \hfil
und zwischen dem zweiten und dritten Bild eine leere Zeile einfügen. Dadurch ist die zweite Bildreihe klar definiert. Für mehr Platz zwischen den Bildern füge ich vor der zweiten Reihe den Befehl hinzu \medskip
.
Da ich Ihre Bilder nicht habe, verwende ich die Option demo
in \documentclass
. Im realen Dokument müssen Sie sie löschen.
Außerdem graphics
sollten Sie anstelle von Paket ladengraphicx