[Tex/LaTex] Single-column float at top of second column, double-column float at bottom of page

floatspositioning

I am fighting LaTeX over this: I would like to have, in a twocolumn document, a small Fig. 1 at the top of the second column, and a wide Fig. 2 at the bottom of the page. This MWE illustrates this:

\documentclass[twocolumn]{article}
\usepackage{stfloats}
\usepackage{lipsum}

%\renewcommand{\topfraction}{0.1}

\begin{document}
    \global\csname @topnum\endcsname 0

    \lipsum[1]

    \begin{figure}[t]
        \caption{Fig. 1!}
    \end{figure}

    \begin{figure*}[b]
        \caption{Fig. 2!}
    \end{figure*}

    \lipsum[2-6]

\end{document}

However, regardless of what I try, this does not seem to work. Either Fig. 1 is at the top of the first column; or the wide Fig. 2 is on page 2. This seems to be a consequence of

  1. the wide figure having to appear early in the first column, and
  2. the small figure not being able to appear in the first column, otherwise it ends up in that column.

Is there a workaround? I know that once floats are positioned, numbering can be fixed (https://tex.stackexchange.com/a/356902/30810), but positioning has to be correct first.

Update: If that helps: my problem occurs on the last page of the document.

Best Answer

The figure* environment places its contents at top of place, and the optional argument doesn't work. You can try an \InsertBoxC, nested in a strip environment, from cuted (sttoolsbundle): strip is a sort of local one column environment.

\documentclass[twocolumn]{article}
\usepackage{stfloats}
\usepackage[unskipbreak]{cuted}
\usepackage{lipsum}
\usepackage{graphicx, caption}
\input{insbox}
\renewcommand{\topfraction}{0.4}

\begin{document}

    \lipsum[1-2]

    \begin{figure}[!t]
\centering\includegraphics[scale=0.5]{Nightmare_Fussli}
        \caption{Nightmare (\emph{Henry Fuseli})}
    \end{figure}
 \lipsum[3-4]
%
\begin{strip}
\InsertBoxC{
\includegraphics[scale =0.8]{SanRomano-all}}
\captionof{figure}{The Battle of San Romano (\emph{Paolo Uccello})}
\end{strip}
\lipsum[4-8]

\end{document} 

enter image description here