Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I have a very long table (slightly more than 2 pages) and so, am using the ctabular environment of the memoir class. I understand how a float defeats the purpose of a continuous tabular but I would like to mimic the behaviour of only starting at the top of the next page, or after the previous floats.

Also, the table is quite wide (I would use table* environment) but the document is in two columns. ctabular doesn't seem to accept specifying the width.

How can I make a wide continuous table and mimic the float choice of placement?

share|improve this question
    
does \clearpage\onecolumn\begin{ctabular}....\end{ctabular}\twocolumn do the right thing? –  David Carlisle Mar 10 '13 at 15:11
    
@DavidCarlisle no. While it does move the table to the top of the next page, all the rest of the text is still skipped until the table is finished. I end up with 2 paragraphs of text, then the rest of the page empty, the following 3 pages with the table, and only then does the text continues. I really don't require the "place table right after this text" default behaviour, more of float that would span over pages. –  carandraug Mar 10 '13 at 15:29
    
You could try \afterpage{\clearpage\onecolumn\begin{ctabular}....\end{ctabular}\twocolumn} –  David Carlisle Mar 10 '13 at 16:21
    
@DavidCarlisle I did but it doesn't work with 2 column documents. I tried with the \one/twocolumn commands on the outside but that also didn't work. The afterpage package manual says the same. I have also tried the longtable environment but it has the same problem. –  carandraug Mar 10 '13 at 16:44
    
hmm so it does, I wonder who wrote that:-) simplest is of course to do as originally suggested (without afterpage) but move it by hand to the point of the page break. –  David Carlisle Mar 10 '13 at 18:38

1 Answer 1

up vote 4 down vote accepted

TeX typesets paragraphs of text on to a (conceptually) infinite galley and then at certain times the Output Routine is invoked which splits off part of this galley and makes up a page, adding floats, the page head and foot, and footnotes etc. An important thing to note about this asynchronous nature of the page breaking is that the page breaker can not affect line breaking. All aspects of fitting the content to a horizontal measure have already been completed before the page breaker is invoked.

This means that it is virtually impossible in classic TeX to change the page layout (for example as here change between one and two columns) without having a forced page break. If you force a page break you force a synchronisation point between the paragraph breaker adjusting the horizontal measure and the page breaker adjusting the vertical measure and things become a lot easier.

Unfortunately this means that you have to manually insert the command to switch to one column at the least disruptive place, add the table, then switch back. You can not rely on the latex float mechanism to find this for you.

This is essentially a limitation of the underlying engine rather than of LaTeX. You can find papers going back before TeX3 in the 1980's suggesting ways of extending TeX in this area.

See http://latex-community.org/know-how/latex/55-latex-general/475-e-tex for Frank's TUG article on how many of those old proposals for extending TeX are actually addressed by the current engines.

share|improve this answer
    
that's a great answer, very complete with references. Thank you very much for your time. In the end, we decided that the table was too long for the main text anyway and moved it to the appendices. –  carandraug Apr 12 '13 at 3:57

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.