Tabla larga y flotantes: saltos de tabla incorrectos en páginas con flotantes (parte 2)

Tabla larga y flotantes: saltos de tabla incorrectos en páginas con flotantes (parte 2)

Creo que me he topado con una característica no documentada relacionada con la división de páginas longtable.

El siguiente MWE produce (al menos en mi configuración de TeXlive 2014) un documento en el que los últimos párrafos sobrepasan la parte inferior de la página.

\documentclass{article}

\usepackage[margin=1in]{geometry}
\usepackage{lipsum}
\usepackage{longtable}

\begin{document}
  \begin{figure}
    \sffamily \lipsum[2]
    \caption{A figure}
  \end{figure}
  \lipsum[1-2]

 \begin{longtable}{ll}
    a & b \\
    c & d 
  \end{longtable}

  \begin{figure}
    \sffamily \lipsum[1]
    \caption{A figure}
  \end{figure}

  \lipsum[1-4]

\end{document}

El resultado es:

ingrese la descripción de la imagen aquí

El problema, creo, está relacionado conlongtabu y flotadores: saltos de tabla incorrectos en páginas con flotadores. Tenga en cuenta que estoy trabajando con una versión parcheada de longtable.sty, según las sugerencias de David Carlisle (parche disponible enhttp://www.latex-project.org/cgi-bin/ltxbugs2html?pr=tools/3512, que, por cierto, no llegó a TeXlive 2014, a pesar de haber durado más de 2 años).

La diferencia con la pregunta anterior es que aparece mi flotadordespuésla mesa larga. Mover el flotador sobre la mesa larga soluciona el problema, pero claramente no es una solución real. ¿Alguien sabe cómo solucionar este problema?

Respuesta1

No hay errores en longtable: solo características interesantes.

entonces... LT sobrepasa la página y TeX se queja:

Overfull \vbox (89.34776pt too high) has occurred while \output is active

En un mundo ideal, eso no sucedería, pero si sucede, puedes ayudar al separador de páginas y acortarlo en la cantidad indicada.

\begin{longtable}{ll}
    a & b \\
    c & d 
  \end{longtable}
\makeatletter
\global\advance\@colroom-90pt
\makeatother

Creo que es cruel enviar a los autores de rutinas a tener una tabla de varias páginas de menos de una página y tener una flotante antes de la tabla y otra flotante después de la tabla, todas en la misma página :-)

Respuesta2

No puedo comentar porque soy nuevo, así que tendré que poner esto en una respuesta. Me encontré con este problema el otro día porque pandoc pasó a usar longtable para todas las mesas de látex.

http://johnmacfarlane.net/pandoc/releases.html

"El escritor LaTeX ahora usa longtable en lugar de ctable. Esto permite dividir las tablas en los límites de las páginas".

De todos modos, imagino que mucha más gente se encuentra con esto, ya que pandoc es lo que se usa para generar tablas cuando se usa RMarkdown para generar documentos de látex.

Apliqué el parche anterior y lo solucionó, sin embargo, los números de línea ahora son ligeramente diferentes:

diff longtable.sty.bak longtable.sty
167c167
<     \advance\vsize-\ht\LT@foot
---
>     \global\advance\vsize-\ht\LT@foot
195a196,200
>   \ifvoid\LT@foot\else
>     \global\advance\vsize\ht\LT@foot
>     \global\advance\@colroom\ht\LT@foot
>     \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@
>   \fi
198d202
<   \pagegoal\vsize
394a399
>         \advance\dimen@\ht\LT@foot
399a405
>             \global\vsize\@colroom
403,406c409
<       \global\@colroom\@colht
<       \global\vsize\@colht
<       \vbox
<         {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
---
>       \unvbox\z@\ifvoid\LT@lastfoot\copy\LT@foot\else\box\LT@lastfoot\fi

información relacionada