我有一份文档,其中有一个占据整个页面的浮动图形。我希望浮动页面出现在第一次引用它的页面之后。我还希望引用页面的底部填充文本。例如,如果引用在第 n 页,则图形应在第 n+1 页。如果我将图形插入为“\begin{figure}”或“\begin{figure}[p]”,则图形将放置在第 n+2 页。我怎样才能将其移动到第 n+1 页?
以下是 MWE:
\documentclass[12pt]{article}
\pagestyle{plain}
\usepackage{calc}
\usepackage[english]{babel}
\usepackage[pangram]{blindtext}
\usepackage{caption}
\usepackage{floatrow}
\usepackage{afterpage}
\setlength{\textfloatsep}{20pt}
\setlength{\intextsep}{20pt}
\begin{document}
\vspace*{0.9\textheight}
\blindtext[40]
\blindtext[12]\textbf{(See Figure \ref{Fig1})} \blindtext[12]
\begin{figure}[p]
\noindent \centering{}\ffigbox[\FBwidth]{%
\framebox{\begin{minipage}[t][0.8\textheight]{0.8\textwidth}%
\hspace*{\fill}%
\end{minipage}}}{\caption{\label{Fig1}This is figure 1. \blindtext[8]}}
\end{figure}
\blindtext[50] \textbf{(See Figure \ref{Fig2})}. \blindtext[10]
\begin{figure}
\ffigbox[\FBwidth]{%
\framebox{\begin{minipage}[t][3cm]{0.8\textwidth}%
\hfill{}%
\end{minipage}}}{\caption{\label{Fig2}This is figure 2. \blindtext[4]}}
\end{figure}
\blindtext[6] \textbf{(See Figure \ref{Fig3})} \blindtext[3]
\begin{figure}
\noindent \centering{}\ffigbox[\FBwidth]{%
\framebox{\begin{minipage}[t][0.3\textheight]{0.8\textwidth}%
\hspace*{\fill}%
\end{minipage}}}{\caption{\label{Fig3}This is figure 3. \blindtext[2] }}
\end{figure}
\end{document}
输出结果如下:
答案1
Werner 解决方案的替代方法是将图形环境直接插入到引用之后,而不是插入到其他几行文本之后。例如:
\blindtext[12]\textbf{(See Figure \ref{Fig1})}
\begin{figure}[tbp]
\noindent \centering{}\ffigbox[\FBwidth]{%
\framebox{\begin{minipage}[t][0.8\textheight]{0.8\textwidth}%
\hspace*{\fill}%
\end{minipage}}}{\caption{\label{Fig1}This is figure 1. \blindtext[8]}}
\end{figure}
\blindtext[12]
tbp
与放置一起工作或仅仅p
进行放置。
答案2
这里的基本问题是你插入了一大堆文本后参考使用\blindtext
:
...
\blindtext[6] \textbf{(See Figure \ref{Fig3})} \blindtext[3]
...
这可能意味着实际的浮点插入可能远远超出你的参考范围。相反,你可以使用以下通用方法:
...
<reference>
\afterpage{
<figure>
}
...
where<figure>
使用[H]
浮点说明符,以便将其准确放置在调用的位置。以下是使用上述建议进行调整的最小示例:
\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage[pangram]{blindtext}
\usepackage{caption}
\usepackage{floatrow}
\usepackage{afterpage}
\setlength{\textfloatsep}{20pt}
\setlength{\intextsep}{20pt}
\begin{document}
\vspace*{0.9\textheight}
\blindtext[40]
\blindtext[12]\textbf{(See Figure \ref{Fig1})}
\afterpage{%
\begin{figure}[H]
\centering
\ffigbox[\FBwidth]{%
\framebox{\begin{minipage}[t][0.8\textheight]{0.8\textwidth}%
\hspace*{\fill}%
\end{minipage}}}
{\caption{\label{Fig1}This is figure 1. \blindtext[8]}}
\end{figure}
\clearpage
}
\blindtext[12]
\blindtext[50] \textbf{(See Figure \ref{Fig2})}.
\afterpage{
\begin{figure}[H]
\ffigbox[\FBwidth]{%
\framebox{\begin{minipage}[t][3cm]{0.8\textwidth}%
\hfill{}%
\end{minipage}}}
{\caption{\label{Fig2}This is figure 2. \blindtext[4]}}
\end{figure}
\clearpage
}
\blindtext[10]
\blindtext[6] \textbf{(See Figure \ref{Fig3})}
\afterpage{
\begin{figure}[H]
\centering
\ffigbox[\FBwidth]{%
\framebox{\begin{minipage}[t][0.3\textheight]{0.8\textwidth}%
\hspace*{\fill}%
\end{minipage}}}
{\caption{\label{Fig3}This is figure 3. \blindtext[2] }}
\end{figure}
\clearpage
}
\blindtext[3]
\end{document}
添加\clearpage
可确保仅将特定内容figure
放置在页面上。