带有 tufte 布局的 Algorithm2e:如何获取全宽和边距浮动?

带有 tufte 布局的 Algorithm2e:如何获取全宽和边距浮动?

我正在使用 tufte-book 布局,它提供了marginfigurefigure环境figure*来创建浮动图形,这些图形要么只占据边距,要么只占据主文本列,要么使用整个页面宽度。表格也定义了相同的内容,但我需要排版算法,我想知道如何实现相同的效果。我使用 algorithm2e(我宁愿不改变它),它定义了一个环境algorithm,默认情况下它将是浮动的,但[H]可以给出哪个选项。

我的问题是,如果我“作弊”并使用 afigure*来适应 a\begin{algorithm}[H]内部,我会得到一个图形标签,而我希望算法有一个单独的编号,就像 algorithm2e 默认的那样。你知道怎么做吗(例如全宽算法)?我猜可以通过复制 tufte-book 布局代码中用于图形的内容来创建一个新环境,但我不确定如何重新使用 algorithm2e 编号。

[编辑] 这里是 MWE。我尝试过:标准浮动算法(不错,但如果侧面有图例就更好了)、全宽环境中的静态算法(无法正确对齐)以及图形*环境中的静态算法(宽度不错,但我想用“算法……”作为标签替换图例)。此外,带有算法的图形*总是移动到单独的页面(即使它可以放在上一页),这不是我想要的,但我找不到如何防止这种情况,有什么想法吗?

[EDIT2] 我删除了全宽块,因为它无法正确编译。

\documentclass[notoc,nobib,a4paper,justified]{tufte-book}
\usepackage{amssymb,amsmath,amsthm}
\usepackage{fontspec,lipsum}
\usepackage{polyglossia}
\setmainlanguage{english}
\usepackage[ruled,algosection,vlined,linesnumbered]{algorithm2e}
\usepackage{framed}

\begin{document}

\begin{marginfigure}
    \begin{framed}
        This is a \texttt{marginfigure}.
    \end{framed}
    \caption{Caption of \texttt{marginfigure}.}
\end{marginfigure}

Some line of text, to avoid collisions.

\begin{figure}
    \begin{framed}
        This is a \texttt{figure}.
    \end{framed}
    \caption{Caption of \texttt{figure}.}
\end{figure}

\begin{figure*}
    \begin{framed}
        This is a \texttt{figure*}.
    \end{framed}
    \caption{Caption of \texttt{figure*}.}
\end{figure*}

Here is a floating algorithm. Nice, but would be better with a legend on the side, like for \texttt{figure}.

\begin{algorithm}
    \KwIn{Some inputs}
    \For{some condition}{
        $x ← $ some operations \;
    }
    \Return $x$\;
    \caption{This is a floating algorithm}
\end{algorithm}

Below is a floating figure with a fixed algorithm inside. It does wraps on the full width, which is nice, but the caption below is now "Figure 4", and I want it to be "Algorithm …".

\begin{figure*}
    \begin{framed}
        \begin{algorithm}[H]
            \KwIn{Some inputs}
            \For{some condition}{
                $x ← $ some operations \;
            }
            \Return $x$\;
            \caption{This is a fixed (H) algorithm.}
        \end{algorithm}
    \end{framed}
    \caption{Caption of \texttt{figure*}.}
\end{figure*}
\end{document}

相关内容