不良行为:无论如何,编译器都会跳过图片进入下一页

不良行为:无论如何,编译器都会跳过图片进入下一页

这让我发疯了,我真的希望有人能告诉我发生了什么事......

在此打印屏幕中,您可以看到代码与编译结果的比较:

在此处输入图片描述

无论我将图像缩小到多小(0.1\textwidth0.01\textwidth...),我都无法使其出现在正确的页面中。图像会单独转到下一页。

该图像的尺寸为 2506x2014 像素,因此,除了0.3\textwidth图形下方的两行文字之外,页面底部还有足够的空间。

如果您需要有关代码的任何其他信息,请告诉我。


编辑:上传了带有图像的简化版本的 .tex 项目(它可以很好地编译并像以前一样跳过图像),可以在此处下载:http://www.mediafire.com/download/uztssz91s9yyyru/latex_test.zip


自包含的 MWE 不需要下载:

\documentclass[12pt]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}

\renewcommand{\familydefault}{\sfdefault} % modern style
\usepackage{graphicx}

\usepackage{multicol}
\setlength\columnsep{20pt} 

\pagenumbering{alph}
\pagestyle{plain} % page numbers but no headers

\usepackage[hmargin=1.9cm,vmargin=1.9cm,footskip=1cm]{geometry}

\begin{document}\large

\section{La columna vertebral}

\begin{figure}[!htb]
  \centering
  \rule{3cm}{13cm}

  \caption[Columna vertebral adulta] % index text
  {Columna vertebral adulta. 7 vértebras cervicales, 12 torácicas, 5
    lumbares, 5 sacras y las 4 últimas, fusionadas, forman el
    cóccix.} % text under figure
  \label{} % for ref and pageref 
\end{figure}

\begin{multicols}{2}

  \textbf{La columna vertebral adulta} tiene curvas en forma de
  S. Está formada por huesos llamados vértebras y por discos
  intervertebrales cartilaginosos. Si las curvas están bien
  estructuradas, la musculatura del tronco trabaja de una manera
  armónica y habitualmente se adoptan posturas correctas, los discos
  intervertebrales están sometidos a una presión adecuada.

En el caso de \textbf{la columna vertebral infantil}, dentro del útero
materno, el feto descansa con la columna vertebral flexionada y las
piernas dobladas. Por ello, al principio, el recién nacido tiene la
columna vertebral doblada hacia delante y no tiene las curvas en S
como el adulto. Poco a poco, se va formando la curvatura lumbar cuando
el bebé yace estirado de espalda sobre una superficie semidura. Más
adelante, cuando se pone en la posición denominada de la esfinge, boca
abajo y apoyado sobre los antebrazos estira la cabeza (ver Fig.5.3),
se va reforzando la musculatura que recubre la columna y se va
formando la curvatura de la zona cervical.

Las curvas en S van alcanzando su mayor desarrollo cuando el niño
empieza a andar y no están bien formadas hasta los cuatro años,
aproximadamente. (Fig. \ref{006}).La forma definitiva de la columna
vertebral se alcanza entre los cinco y los siete años.

\end{multicols}

\begin{figure}[!htb]
  \centering
  \rule{2cm}{5cm}

  \caption[Columna vertebral bien formada] % index text
  {Columna vertebral bien formada: A: curva cervical / B: curva
    torácica / C: curva lumbar / D: curva sacra.} % text under figure
  \label{006} % for ref and pageref 
\end{figure}

% New subsection:
\subsection{Principales causas de los problemas de columna}

\textbf{a) Falta de entrenamiento de la musculatura}

\begin{figure}[!htb]
  \centering
  \rule{1cm}{1cm}

  \caption[Bebé con el tronco inmovilizado] % index text
  {Es aconsejable tener poco tiempo al bebé con el tronco
    inmovilizado.} % text under figure
  \label{008} % for ref and pageref 
\end{figure}

\end{document} 

答案1

这是与最近发现的有关 marginpars 的错误类似的错误multicol。在页面末尾,LaTeX 的正常输出例程会重置变量\@mparbottom\@textfloatsminheight。该multicol包忽略了这样做,因此\@textfloatsminheight仍然包含第一页的此处浮点的高度 --- 结果可用空间计算偏离了轨道。

因此,仅当开始页面上有一个“此处”浮动multicols,而结束页面上有另一个“此处”浮动时,才会出现问题。

在加载软件包后尝试以下修复,multicol直到我能够将新版本上传到 CTAN(您需要 1.8m 版本才能使补丁成功):

\usepackage{etoolbox}

\makeatletter
\patchcmd{\multi@column@out}
   { \global \@mparbottom \z@}
   { \global \@mparbottom \z@ \global\@textfloatsheight\z@}
   {\typeout{patched}}
   {\ERROR}              % the patch failed for some reason
\makeatother

答案2

我所能推测的是,这个数字无法合适,这与你在问题中的陈述相反。

就像上面的评论者所说的那样,删除它,\begin{center}...\end{center}因为它会增加额外的(和不必要的)垂直空间。以下示例显示您应该能够将这样的图像挤压到页面上:

\documentclass[a4paper]{article}
\usepackage[margin=3cm]{geometry}
\def\1{text }\def\2{\1\1\1\1\1}\def\3{\2\2\2\2\2}\def\4{\3\3\3\3}
\begin{document}
\4

\begin{figure}[!htbp]
\centering
\rule{0.25\textheight}{0.3\textheight}
\caption{\3}
\end{figure}

\4

\begin{figure}[!htbp]
\centering
\rule{0.25\textheight}{0.3\textheight}
\caption{\3 \3}
\end{figure}
\end{document}

如果要确保不是图形放置算法移动了浮动,则可以通过几种方式插入非浮动图形。一种方法是:

\usepackage{float}
...
\begin{figure}{H}

通常不推荐这样做,但如果您正处于出版前的最后阶段,那么更容易证明像这样的排版决定是合理的。

相关内容