captions of wide longtables are indented

Some of my longtables are wider than \hsize (=\columnwidth). It’s ok. The problem is the left-aligned captions of such tables. If a table is X too wide, then the caption is indented by X.

An example to reproduce the problem:

\documentclass{article}
\usepackage{longtable}
\usepackage[nooneline,justification=raggedright]{caption}
\begin{document}
\begin{longtable}[l]{|p{\hsize}|p{50pt}|}
row1col1&row1col2\\
row2col1&row2col2\\
\caption{my table}
\end{longtable}
\end{document}

In this example, the caption is indented by 50pt.

I asked in comp.text.tex: Any suggestions how to avoid indenting? Or, at least, any ideas why it happens?

Axel Sommerfeldt, the author of the longtable package, explained that the caption in a longtable is typeset as centered multicolumn. It, and looking at the source code of \LT@makecaption, revealed me the source of the problem.

Among Axel’s suggestins, I’ve choosen patching the definition of \LT@makecaption. It combines code from the longtable and caption2 packages, and uses the fact that my captions are always of \hsize.

\def\LT@makecaption#1#2#3{%
  \LT@mcol\LT@cols l{\hskip-\tabcolsep\hbox to\z@{\parbox[t]\hsize{%
    \captionfont\selectfont {#2: }#3%
    \endgraf\vskip\baselineskip}%
  \hss}}}

Leave a Reply