サブセクションの図を挿入し、画像の後に別のサブセクションを開始します。

サブセクションの図を挿入し、画像の後に別のサブセクションを開始します。
\subsection{Subsec1}
First content
\begin{figure}[h!]
\begin{center}
\includegraphics[width=0.25\textwidth]{fig1.png}
\caption{W}
\label{fig: W}
\end{center}
\end{figure}


\subsection{subsec2}
Second content
\begin{figure}[h!]
\begin{center}
\includegraphics[width=0.25\textwidth]{fig2.png}
\caption{D}
\label{fig: D}
\end{center}
\end{figure}

subsec1 の上と subsec2 の下にコンテンツがあります。出力 pdf では、subsec1 はシートの後半にあります。そのため、fig1 のための十分なスペースがありません。これにより、subsec2 が subsec1 の後のスペースを埋め、fig1 が subsec2 の後に押し出されます。これにより、fig1 と fig2 が交互に表示されます。ただし、これら 2 つの fig の間には subsec2 が必要です。

何を変えれば良いでしょうか?

答え1

\usepackage{float}をプリアンブルに追加し、where 変数[h!]を に変更すると[H]、指定した場所に図が正確に保持されます。

答え2

本当のことを言うと、オプションfloat付きのパッケージを使用するとH、子供にボールを与えて「サッカーをしてはいけない」と言うようなものです。

さらに、mwe では、center環境内に環境を使用していますfigureが、これは余分な垂直スペースが追加されるため、好ましくありません。

図を浮かせたくない場合は、環境を使用しないだけです。キャプション用のパッケージでfigure十分です。centercapt-of

\documentclass{book}
\usepackage{graphicx}
\usepackage{capt-of}

\begin{document}
\subsection{Subsec1}
First content
\begin{center}
    \includegraphics[width=0.25\textwidth]{example-image-a}
    \captionof{figure}{W}
    \label{fig: W}
\end{center}

\subsection{subsec2}
Second content
\begin{center}
    \includegraphics[width=0.25\textwidth]{example-image-b}
    \captionof{figure}{D}
    \label{fig: D}
\end{center}
\listoffigures
\end{document}

ここに画像の説明を入力してください

環境\listoffiguresを使用しなくても問題がないことを示すために、以下も追加しました。figureここに画像の説明を入力してください

関連情報