在 Algorithm2e 算法中设置标题/规则宽度

在 Algorithm2e 算法中设置标题/规则宽度

我使用包中的许多算法algorithm2e都无法扩展到整个页面宽度。如果我使用包boxruledruled选项,结果将是一个扩展页面宽度的框或规则,右侧有大量空白。

我已经使用 更改了算法本身的宽度\setlength{\algomargin}{2in},但这对规则的宽度没有影响。效果是将算法代码“居中”,但环境本身的宽度与页面宽度相同。

有没有办法可以改变它而不必将其挤进minipage

更新:最小示例:

\documentclass[10pt]{article}
\usepackage[ruled]{algorithm2e}
\begin{document}
\setlength{\algomargin}{2in}
\begin{algorithm}[t]
\caption{NaiveSelect}\label{algo:naive-option}
Some alg step \;
\end{algorithm}
\end{document}

答案1

根据@lockstep 的回答,我创建了一个包装器环境,允许将小页面宽度指定为参数。

  %adds minipage to inside of algorithms
  \newlength{\tightalgowidth}
  \newlength{\tightalgoremainder}

  % uncomment to use centered floating algorithms
  \newenvironment{tightalgo}[2][]
  {
     \setlength{\tightalgowidth}{#2}
     \setlength{\tightalgoremainder}{\linewidth-\tightalgowidth}
     \begin{algorithm}[#1] }
  { \end{algorithm} }

  \makeatletter
  \patchcmd{\@algocf@start}{%
    \begin{lrbox}{\algocf@algobox}%
  }{%
    \rule{0.5\tightalgoremainder}{\z@}%
    \begin{lrbox}{\algocf@algobox}%
    \begin{minipage}{\tightalgowidth}%
  }{}{}
  \patchcmd{\@algocf@finish}{%
    \end{lrbox}%
  }{%
    \end{minipage}%
    \end{lrbox}%
  }{}{}
  \makeatother

像这样使用

  \begin{tightalgo}[ht]{0.5\linewidth}
  \caption{NaiveSelect}\label{algo:naive-option}
  Some alg step \;
  Some other \;
  \end{tightalgo}

对于这个结果

在此处输入图片描述

答案2

在我的解决方案中,我使用etoolbox补丁包\algocf@start\algocf@finish分别在内部环境的开头和结尾执行algocf。我添加了一个minipage。使用0.6\textwidth长度为的隐形规则0.2\textwidth将 minipage 居中。

\documentclass[10pt]{article}
\usepackage[ruled]{algorithm2e}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@algocf@start}{%
  \begin{lrbox}{\algocf@algobox}%
}{%
  \rule{0.2\textwidth}{\z@}%
  \begin{lrbox}{\algocf@algobox}%
  \begin{minipage}{0.6\textwidth}%
}{}{}
\patchcmd{\@algocf@finish}{%
  \end{lrbox}%
}{%
  \end{minipage}%
  \end{lrbox}%
}{}{}
\makeatother
\begin{document}
% \setlength{\algomargin}{2in}
\begin{algorithm}[t]
\caption{NaiveSelect}\label{algo:naive-option}
Some alg step \;
\end{algorithm}
\end{document}

在此处输入图片描述

相关内容