如何将双列文档中同一页面上的顶部图形*与图形和底部图形*合并?

如何将双列文档中同一页面上的顶部图形*与图形和底部图形*合并?

这个问题与这个问题,但考虑的是不同的情况。

figure*假设您有一个带有 a和 a 的蓝色文本figure,后跟一个带有另一个 的红色文本figure*

由于 Latex 将图形放在文档中太远的地方,甚至将第三个图形放在单独的页面上,因此您将图形放在代码中较早的位置,从而给出以下 MWE 和结果:

\documentclass[twocolumn,a4paper]{article}

\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage{tikzducks}
\usepackage{dblfloatfix} %allow figure* at bottom

\title{Debug}

\begin{document}

\maketitle

\begin{figure*}[ht!]
    \center
    \tikz\randuck;\\
    \tikz\randuck;\\
    \caption{Figure*}
    \label{fig1}
\end{figure*}
\begin{figure}[h]
    \center
    \tikz\randuck;\\
    \caption{Figure}
    \label{fig2}
\end{figure}
\begin{figure*}[hb!]
    \center
    \tikz\randuck;\\
    \tikz\randuck;\\
    \caption{Figure*}
    \label{fig3}
\end{figure*}

{\color{red} \lipsum[10-15]

SEE FIGS. \ref{fig1}-\ref{fig2}}

{\color{blue} \lipsum[1-9]

SEE FIG. \ref{fig3}}

\end{document}

在此处输入图片描述

唯一的问题是,最后一个图在第三页的底部,而你希望它与其他两个图位于同一页(如箭头所示)。如何实现呢?

  • 如果将 fig3 变成figure而不是figure*,它确实位于第二页的底部。

  • 如果你注释掉 fig2,你就会得到一个顶部figure*和一个底部figure*,它们被放置在同一页上(这要归功于dblfloatfix这些替代方案)。

  • 您可以尝试设置一些提到的分数和数字这里,例如减少\textfraction和增加\totalnumber,但似乎没有什么帮助。请注意,似乎没有\dblbottomfraction

答案1

在此处输入图片描述

\documentclass[twocolumn,a4paper]{article}

\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage{tikzducks}
\usepackage{dblfloatfix} %allow figure* at bottom

\title{Debug}

\begin{document}

\maketitle

\begin{figure*}[t]
    \center
    \tikz\randuck;\\
    \tikz\randuck;\\
    \caption{Figure*}
    \label{fig1}
\end{figure*}
\addtocounter{figure}{1}
\begin{figure*}[b]
    \center
    \tikz\randuck;\\
    \tikz\randuck;\\
    \caption{Figure*}
    \label{fig3}
\end{figure*}
\addtocounter{figure}{-2}
\begin{figure}[t]
    \center
    \tikz\randuck;\\
    \caption{Figure}
    \label{fig2}
\end{figure}
\addtocounter{figure}{1}

{\color{red} \lipsum[10-15]

SEE FIGS. \ref{fig1}-\ref{fig2}}

{\color{blue} \lipsum[1-9]

SEE FIG. \ref{fig3}}

\end{document}

答案2

它似乎与顺序有关。你可以让它工作,方法是将 放在figure两个figure*s 后面。当然,这会弄乱字幕,但这很容易修复。

\documentclass[twocolumn,a4paper]{article}

\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage{tikzducks}
\usepackage{dblfloatfix} %allow figure* at bottom
\usepackage{caption}% or capt-of

\newsavebox{\delaybox}

\title{Debug}

\begin{document}

\maketitle

\begin{figure*}[t!]
    \centering
    \tikz{\randuck;}\\
    \tikz{\randuck;}
    \caption{Figure*}
    \label{fig1}
\end{figure*}

\savebox{\delaybox}{\begin{minipage}{\columnwidth}
    \centering
    \tikz{\randuck;}
    \captionof{figure}{Figure}
    \label{fig2}
\end{minipage}}

\begin{figure*}[b!]
    \centering
    \tikz{\randuck;}\\
    \tikz{\randuck;}
    \caption{Figure*}
    \label{fig3}
\end{figure*}

\begin{figure}[h]
    \usebox{\delaybox}
\end{figure}

{\color{red} \lipsum[10-15]

SEE FIGS. \ref{fig1}-\ref{fig2}}

{\color{blue} \lipsum[1-9]

SEE FIG. \ref{fig3}}

\end{document}

相关内容