在代码中的准确位置设置一个新的浮点数

在代码中的准确位置设置一个新的浮点数

我正在使用以下代码来报告算法。

\usepackage{caption}
\floatstyle{ruled}
\newfloat{Algorithm}{thp}{lop}
\floatname{Algorithm}{Algorithm}
\newcommand{\listofAlgorithms}{\listof{Algorithm}{Algo List}}
.....


Here my explanation 1

\begin{Algorithm}[!ht]
\begin{verbatim}
here my algo 1
\end{verbatim}
\caption{Encrypt}
\end{Algorithm}

Here my explaination2

\begin{Algorithm}[!ht]
\begin{verbatim}
here my algo 2
\end{verbatim}
\caption{Encrypt2}
\end{Algorithm}

但是有时所表示的算法并不放在代码中相同的位置。我的意思是它会移到下一页,而文本则留在上面。

我想保留相同的代码,但算法在完全相同的位置。也就是说,在两个页面之间打破算法是可能的。我该怎么做?

事实上,在我的例子中,它在 pdf 上显示如下:

 Here my explanation1
 Here my explanation2
 here my algo1
 here my algo2

我不想将算法引到某个特殊的地方。

答案1

由于您正在使用该float包,请使用H位置说明符强制浮点数准确地出现在“此处”:

\documentclass{article}
\usepackage{caption}
\usepackage{float}

\floatstyle{ruled}
\newfloat{Algorithm}{thp}{lop}
\floatname{Algorithm}{Algorithm}
\newcommand{\listofAlgorithms}{\listof{Algorithm}{Algo List}}

\begin{document}

\begin{Algorithm}[H]
\begin{verbatim}
here my algo
\end{verbatim}
\caption{First}
\end{Algorithm}
Some text between the two algorithms
\begin{Algorithm}[H]
\begin{verbatim}
here my algo
\end{verbatim}
\caption{Second}
\end{Algorithm}

\end{document}

在此处输入图片描述

如果你希望这种行为全部环境Algorithm,添加到序言中:

\floatplacement{Algorithm}{H}

附注:有许多现有的软件包旨在方便算法的排版;根据您想要排版的算法风格(使用伪代码或代码),您可能会感兴趣algorithmsalgorithmicxminted或者listings

相关内容