我正在使用以下代码来报告算法。
\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}
附注:有许多现有的软件包旨在方便算法的排版;根据您想要排版的算法风格(使用伪代码或代码),您可能会感兴趣algorithms
,algorithmicx
,minted
或者listings
。