2列ドキュメント内の図とテキストの垂直配置

2列ドキュメント内の図とテキストの垂直配置

私は特定のページレイアウト(パッケージで指定geometry)と、両方の列のテキストが互いに揃っているこのため、段落間のスペースとフロートの前後のスペースの長さはすでに調整してあります。

%%% adjust all spacings to \baselineskip to align text paragraphs and floats 
\usepackage{setspace}
\setstretch{1.5}
\setlength{\parskip}{\baselineskip}
\usepackage{etoolbox}
\BeforeBeginEnvironment{figure}{\kern \baselineskip}

標準のページレイアウトでは問題なく動作します*:

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

ただし、パッケージでページ レイアウト (具体的には本文) を変更すると、geometry機能しなくなります。

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

なぜこのようなことが起こるのか、またどうすれば修正できるのか誰か説明してもらえますか?

こちらがMWEです。

\documentclass[twocolumn]{book}

% page layout settings with geometry 
\usepackage[papersize={240mm,300mm}
            ,hmargin={25mm}
            ,top={20mm}
            ,columnsep={10mm}
            ,body={190mm, 220mm} % <- when textbody is changed, fig/float placement changes!
            ]{geometry} %,

\usepackage{lipsum}         % generates filler dummy text          
\usepackage[demo]{graphicx} % demo option replace images with black rectangles for testing purposes
\usepackage{caption}

% adjust all spacings to \baselineskip to align text paragraphs and floats 
\usepackage{setspace}
\setstretch{1.5}
\setlength{\parskip}{\baselineskip}
\usepackage{etoolbox}
\BeforeBeginEnvironment{figure}{\kern \baselineskip}

\begin{document}

\lipsum[4]    

\begin{figure}[tb]
  \centering
  \includegraphics[width=0.8\columnwidth]{castle}
  \caption{This is a caption This is a caption This is a caption This is a cThis is a captionThis is a captionThis is a captionThis is a captionaption This is a caption.}
\end{figure}

\lipsum

\end{document}

答え1

あなたの例を見ると、テキストの行をグリッドに強制的に揃えるものは何もありません。そのため、あるケースでは行が密接に揃っているように見えたとしても、それは単に運が良かっただけです。

テキストをグリッドに揃えたい場合は全て配置する垂直方向の素材は の倍数でなければなりません\baselineskip。長さは設定しましたが、図は任意の高さで表示され、画像は幅が拡大縮小されたときの高さになり、キャプションは異なるフォント サイズに設定されているように見えるため、図は本体の倍数にはなりません\baselineskip。そのため、図の後のテキストはグリッドから外れ、次の列との位置合わせが失われます。

図のサイズを強制する 1 つの方法は、minipageオプションの高さ引数を の倍数に設定して を使用し\baselineskip、その中に\includegraphicsと を配置することです\caption

グリッドレイアウトを支援することを目的としたパッケージがあり、おそらく必要な測定の一部を自動化します。

関連情報