
Estoy intentando establecer un diseño para un libro de dos columnas con un diseño de página particular (especificado con elgeometry
paquete) y con eltexto en ambas columnas alineado entre sí. Para esto ya he ajustado la longitud de los espacios entre párrafos y los flotadores antes y después:
%%% 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}
y funciona bien para el diseño de página estándar*:
Sin embargo, una vez que modifico el diseño de la página, específicamente el texto del cuerpo, el geometry
paquete deja de funcionar.
¿Alguien puede explicarme por qué sucede esto y cómo puedo solucionarlo?
Aquí está el 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}
Respuesta1
Al observar su ejemplo, no hay nada que fuerce la alineación de las líneas de texto con su cuadrícula, por lo que, si bien en un caso las líneas pueden haber aparecido muy alineadas, fue solo suerte.
Si desea alinear el texto a una cuadrícula, entoncestodoEl material vertical colocado debe ser múltiplo de \baselineskip
. Ha establecido las longitudes, pero la figura parece tener una altura arbitraria, la imagen tiene la altura que tiene cuando se escala su ancho y el título parece estar configurado en un tamaño de fuente diferente, por lo que la figura no será un múltiplo de el cuerpo principal \baselineskip
. Por lo tanto, el texto después de la figura estará fuera de la cuadrícula y se perderá el texto alineado con la siguiente columna.
Una forma de forzar el tamaño de la figura sería usar a minipage
con su argumento de altura opcional establecido en un múltiplo de \baselineskip
y colocar \includegraphics
y \caption
dentro de eso.
Hay paquetes que tienen como objetivo ayudar con el diseño de la cuadrícula y que probablemente automaticen algunas de las mediciones necesarias.