algorithm2e 环境补丁使用中 hbox 溢出

algorithm2e 环境补丁使用中 hbox 溢出

algorithm2e我正在以修改的方式使用算法环境,并减小了宽度(遵循解决方案这里),请参阅下文的 MWE。

这会产生一个溢出的盒子,我想将其删除。我该如何实现?

\documentclass{article}
\usepackage{lipsum}
\usepackage{etoolbox}
\usepackage[ruled]{algorithm2e}
\SetCustomAlgoRuledWidth{0.6\textwidth}
\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}
    \lipsum[1]
    \begin{algorithm}[h]
        \caption{NaiveSelect}\label{algo:naive-option}
        Some alg step \;
    \end{algorithm}
    \lipsum[2]
\end{document}

日志文件显示Overfull \hbox (276.00105pt too wide) in paragraph at lines 24--27

答案1

您需要修复\algowidth

\documentclass{article}
\usepackage{lipsum}
\usepackage{etoolbox}
\usepackage[ruled]{algorithm2e}

\AtBeginDocument{%
  \SetCustomAlgoRuledWidth{0.6\textwidth}%
  \setlength{\algowidth}{0.8\textwidth}%
}

\makeatletter
\patchcmd{\@algocf@start}
  {\begin{lrbox}{\algocf@algobox}}
  {%
   \hspace*{0.2\textwidth}%
   \begin{lrbox}{\algocf@algobox}%
   \begin{minipage}{0.6\textwidth}%
  }
  {}{}
\patchcmd{\@algocf@finish}
  {\end{lrbox}}
  {\end{minipage}\end{lrbox}}
  {}{}
\makeatother

\begin{document}

\lipsum[1]

\begin{algorithm}[h]
\caption{NaiveSelect}\label{algo:naive-option}
Some alg step \;
\end{algorithm}

\lipsum[2]

\end{document}

在开始文档时就已经确定了的值\textwidth,因此最好在那里设置依赖于它的参数。

使用\hspace*{0.2\textwidth}比规则更简单。

相关内容