我试图强制算法停留在两段之间,但编译后,它出现在下一页。我的算法占用了半页以上,如下所示:
\begin{algorithm}[tbh]
\caption{Game}
\begin{algorithmic}
\State \bf{Initialize:} \normalfont
\begin{itemize}
\item \bf{A preferences:} \normalfont
\begin{itemize}
\item 1 for A
\item 2 for A
\item 3 for A
\end{itemize}
\item \bf{B preferences::} \normalfont
\begin{itemize}
\item 1 for B
\item 2 for B
\item 3 for B
\end{itemize}
\item \bf{Nature sets the laws:} \normalfont
\begin{itemize}
\item The nature chooses a set of incentives $\mathcal{R}$.
\end{itemize}
\end{itemize}
\State
\While {Set of Incentives $\mathcal{R}$ Exists}
\State
\State \bf{Defend:} \normalfont
\begin{itemize}
\item I
\item II
\item III
\end{itemize}
\State
\State \bf{Attack:} \normalfont
\begin{itemize}
\item I
\item II
\item III
\end{itemize}
\State
\State \bf{Nature:} \normalfont
\begin{itemize}
\item The Nature updates $\mathcal{R}$.
\end{itemize}
\State
\EndWhile
\end{algorithmic}
\end{algorithm}
好像[tbh]
在这里不起作用。
答案1
到力量浮动保持在特定位置,添加float
包裹你的序言
\usepackage{float}% http://ctan.org/pkg/float
并使用[H]
浮动位置说明符。完成。
\documentclass{article}
\usepackage[margin=1in]{geometry}% For this example
\usepackage{algorithm,algpseudocode,float}
\usepackage{lipsum}% For this example
\begin{document}
\lipsum[1]
\begin{algorithm}[H]% Use "stay right HERE" already!
\caption{Game}
\begin{algorithmic}
\State \textbf{Initialize:}
\begin{itemize}
\item \textbf{A preferences:}
\begin{itemize}
\item 1 for A
\item 2 for A
\item 3 for A
\end{itemize}
\item \textbf{B preferences::}
\begin{itemize}
\item 1 for B
\item 2 for B
\item 3 for B
\end{itemize}
\item \textbf{Nature sets the laws:}
\begin{itemize}
\item The nature chooses a set of incentives~$\mathcal{R}$.
\end{itemize}
\end{itemize}
\State
\While {Set of Incentives~$\mathcal{R}$ Exists}
\State
\State \textbf{Defend:}
\begin{itemize}
\item I
\item II
\item III
\end{itemize}
\State
\State \textbf{Attack:}
\begin{itemize}
\item I
\item II
\item III
\end{itemize}
\State
\State \textbf{Nature:}
\begin{itemize}
\item The Nature updates~$\mathcal{R}$.
\end{itemize}
\State
\EndWhile
\end{algorithmic}
\end{algorithm}
\lipsum[2]
\end{document}
浮动元素之所以没有停留在它应该停留的位置,可能是因为它太大了,一开始就不适合页面。参见如何影响 LaTeX 中图形和表格等浮动环境的位置?。最有可能的变量如\topfraction
或\textfraction
导致浮动元素自行移动到页面上。
使用浮点说明符可能会有一些缺点[H]
,尽管这些缺点很小。请参阅H
说明符的缺点。
答案2
中有两种环境algorithmicx
。
一种是
algorithmic
,其算法排版与普通文本非常相似。如果您将其放在两段之间,它将位于两段之间,但它会跨页。另一个是
algorithm
,它是一个浮动对象。这意味着它可以获得标题,它将停留在一页上,LaTeX 会尝试将其放置在您想要的位置,但基本上,它最终会停留在 LaTeX 最喜欢的位置。
您使用的是后者。您[tbh]
指示 LaTeX 尝试以其他方式放置算法:
这里,在你的两个段落之间。
位于页面顶部(可以是本页或下一页)。
在页面底部(相同)。
如果您的算法没有放在段落之间,那是因为 LaTeX 认为它不适合那里。您必须决定是否要跨页面拆分它(仅使用algorithmic
)或将其放在 LaTeX 建议的位置。或者您可以强制执行它,使用float
Werner 的答案中的包,但这很可能看起来很丑陋。