浮点定理

浮点定理

我有一个使用 amsthm 的新定理定义的环境 thm,其中一个定理有多个小代码 (lstlisting) 和文本。这个定理大约占了 2/3 页,我希望整个定理包含在一页内。

我最初的解决方案是将整个定理包含在一个小页面中,这是成功的。问题是现在分页符很糟糕,我希望我的定理是浮动的。

我的第一个直觉是使用

\usepackage{float}
\newfloat{floatingstuff}{t}{lop}
\floatname{floatingstuff}{}

但:

  1. 我无法编译。似乎我的定理中的列表标题和标签会破坏将其包含在浮点中。
  2. 我不需要额外的标题或名称。我希望使用 floatingstuff 不会为我的整个定理引入额外的标题……我真的希望使用通过 newtheorem 定义的定理。

因此,我正在寻找一个除了改变元素位置外几乎不做任何事情的浮动环境。但我还没有找到,尽管浮动可能基于它...

如果有人知道如何定义这样的环境,我们将不胜感激。

[编辑] afterpage 解决方案是一个很好的解决方案,但我无法让它工作。下面给出了一个不起作用的简化代码。评论列表或 afterpage 都可以。

\documentclass{article}
\usepackage{amsthm}
\newtheorem{thm}{Theorem}
\usepackage{afterpage} % for '\afterpage' macro
\usepackage{lipsum}
\usepackage{listings}
\usepackage{afterpage}
\usepackage{xcolor}

\lstdefinestyle{def}{
    language=C++,
    mathescape,
    belowcaptionskip=1\baselineskip,
    breaklines=true,
    literate={<-}{$\leftarrow{}$}{2},
    literate={<>}{$\ne{}$}{2},
    frame=none,
    numbers=none,
    basicstyle=\footnotesize\ttfamily,
    keywordstyle=\bfseries\color{green!40!black},
    commentstyle=\itshape\color{purple!40!black},
    identifierstyle=\color{blue},
    backgroundcolor=\color{gray!10!white},
    emphstyle={[2]\ttfamily\bfseries\color{blue!50!black}},
    emphstyle={[1]\color{orange!70!black}},
}

\lstset{style=def}

\begin{document}

\lipsum[1-4]

\afterpage{
\begin{thm}[$insts_P^{abs}(expr, ctx), relevant(a_{var}, \omega)$] $\ $\\\label{alg:cell:inst} 

\begin{lstlisting}[language=caml, mathescape, caption={Instantiation heuristic for cell abstraction.}, label={lst:insts:cell}]
let $insts_P^{abs}$ expr ctx =
  let $a_{var}$ = new_variable () in (* We need $a_{var}$ to be unused in expr and ctx*)
  let R = relevant $a_{var}$ ($a_{var} = expr \wedge \neg ctx$) in
  ler R' = filter (fun e -> e $\ne \top$) R in (*We remove $\top$*)
  if R = [] then [(($\bot$, expr[$\bot$]), ())] (*We need $R$ non-empty*)
  else map (fun e -> ((e, expr[e]), ())) R
  Blabla
\end{lstlisting}
Some result about this function
\bigskip 
\begin{lstlisting}[language=caml, mathescape, caption={Computation of a relevant set of cells for basic array theory.}, label={lst:relevant}]
let relevant $a_{var}$ $\omega$ =
  (*We add two parameters that we set in first position 
    to keep track of full context and visited variables*)
  relevant_impl $\omega$ [] $a_{var}$ $\omega$  
 Blabla
\end{lstlisting}
Some result about this function
\end{thm}
\clearpage}

\lipsum[1-3]

\end{document}

相关内容