單列浮動在第二列頂部,雙列浮動在頁面底部

單列浮動在第二列頂部,雙列浮動在頁面底部

我正在與 LaTeX 爭論這一點:我希望在文件中twocolumn,在第二列頂部有一個小圖 1,在頁面底部有一個寬圖 2。這個 MWE 說明了這一點:

\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}

然而,無論我嘗試什麼,這似乎都不起作用。圖 1 位於第一欄的頂部;或寬圖 2 在第 2 頁。

  1. 寬圖必須出現在第一列的早期,且
  2. 小數字不能出現在第一列中,否則它最終會出現在該列中。

有解決方法嗎?我知道一旦定位了浮點數,編號就可以固定(https://tex.stackexchange.com/a/356902/30810),但首先定位必須正確。

更新:如果有幫助:我的問題出現在文件的最後一頁。

答案1

環境figure*將其內容放在位置的頂部,並且可選參數不起作用。您可以嘗試\InsertBoxC嵌套在strip環境中, from cuted( sttoolsbundle):strip是一種本機單列環境。

\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} 

在此輸入影像描述

答案2

我已經嘗試過了。它看起來像一個可怕的黑客,但我可以忍受它:

\documentclass[twocolumn]{article}
\usepackage{mwe,lipsum}

% Solution:
\usepackage{capt-of}
\newcommand{\figureTwo}[1]{\makebox[0pt][l]{\raisebox{-#1}[0pt][0pt]{\parbox{\textwidth}{
    \centering
    \includegraphics[scale=0.5]{example-image-16x9}
    \captionof{figure}{Caption}
    \label{fig:Label}
}}}}

% for Calibration:
\usepackage{stfloats}

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

    \lipsum[1]

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

    \enlargethispage{-10\baselineskip}

    % compare with and without - same thing!
    \noindent\figureTwo{10cm}\indent
    \lipsum[2-5]

%\end{document}

    \cleardoublepage
    Calibration:

    \begin{figure*}[b]
        \centering
        \includegraphics[scale=0.5]{example-image-16x9}
        \captionof{figure}{Caption}
    \end{figure*}

\end{document}

\figureTwo必須在左列段落的開頭呼叫。\makebox確保結果的寬度為零(似乎是單行高度);\raisebox將人物垂直移動到適當的位置;\parbox是必要的,因為\captionof在其他兩個框中都不起作用(比較\captionof 在一個盒子裡)。如果這個組合可以簡化,我也希望如此:)

校準的工作原理是編譯兩個頁面,導入 Inkscape,測量兩個圖形的垂直偏移,並10cm相應地調整參數。應該在文檔真正完成時完成。

相關內容