Thanks for the suggestions. Unfortunately, they had no effect. In
the meantime, what did work was simply completely removing the [!ht]
options (and it's not the !ht in particular -- anything between those
brackets gives the same problem). You made a suggestion that depends
on where the figure ends up on the page (where to put the negative
vert space). I should thus clarify that the figure in question takes
up the whole page. An earlier solution, which I found
unsatisfactory,
was simply to change the scale from 1.0 to 0.95. So the problem was
that, with the figure at full size, LaTeX didn't think it had enough
room for both the figure and the textfloatsep, so it put the figure
at
the end. That's why reducing textfloatsep to zero fixed the problem
with that figure (keeping it in the middle of the document, where it
belonged) (but this of course also messed up all my other figs, which
need the default value of textfloatsep). I don't understand why
removing the options fixed the problem.
Thanks also for your explanation about scoping. I understand your
comments about scoping to mean that LaTeX scoping restricts a command
to within a certain part of the document (i.e., to within a certain
set of text)---and that this type of scoping won't work for floats,
because they don't have set locations. I.e., they ... float! So
what
would really be needed if one wanted to restrict the value of
textfloatsep to apply only to a given figure would be a "floating
scope" that extends from the end of a particular figure's environment
to the text immediately following the figure ... which may not be
within LaTeX's current capabilities.