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 specific page in which I want to change the float settings, but I do not want to change them globally. Specifically, I would like to increase the \bottomfraction of a page. Is this possible?

share|improve this question
3  
Under the normal settings, bottom floats are placed below footnotes. With \usepackage[bottom]{footmisc} you exchange the order. –  egreg Oct 25 '13 at 12:15
    
Excellent! This actually solved my particular problem. Out of pure interest, I would still be interested whether what I asked is possible anyway. –  Ingo Oct 25 '13 at 12:52
    
Well, you don't provide a MWE. Float placement is a sensitive thing. I don't know what you want: if you want the float above the footmark, use what @egreg says. If you want it for instance on the next page, just move it further down in the sourcecode and use [!b]. –  yo' Oct 25 '13 at 14:23
    
I cannot provide an MWE for exactly that reason, I cannot reproduce the exact same situation in one. But the way I pose the question, I think there is no need for an MWE. Either it is possible to change the float parameters locally, or it is not. Let's forget about the specific question I had. –  Ingo Oct 26 '13 at 16:05

1 Answer 1

up vote 4 down vote accepted

There is no predefined mechanism to locally change float parameters for a single page. Basically the current set of float parameter values is saved away at the start of each page by executing the two commands \@floatplacement and/or \@dblfloatplacement.

The definition for \@floatplacement, for example, is

\def\@floatplacement{\global\@topnum\c@topnumber
    % Textpage bit, global:
   \global\@toproom \topfraction\@colht
   \global\@botnum  \c@bottomnumber
   \global\@botroom \bottomfraction\@colht
   \global\@colnum  \c@totalnumber
    % Floatpage bit, local:
   \@fpmin   \floatpagefraction\@colht}

So if you locally change, say \bottomfraction and within the scope of that change a new page is started then you value is used to define \@botroom for that page.

The problem, of course, is that pages are started at random places in an asynchronous way, so it is not easy to make such a "local" change in a way that it just affects the next page break. Rather than using a local change, restricted by a group you can define a command that saves the old value and then changes it and a second command that restores it again. This may work a little better in practical terms but doesn't resolve the basic issue that page breaks are asynchonous.

However, having said all this, a probably simpler and more effective way is to simply use the ! specifier on an individual float that you want to place in a position that is normally not allowed by the float parameters --- this is assuming you want to place something, say in the bottom area that is too large, if you want to prevent placement then this approach doesn't work (and the only manual approach is to move the float in the source). See also How to influence the position of float environments like figure and table in LaTeX? for a general discussion of this area and the algorithm.

share|improve this answer

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.