algorithmicx 中带有自动换行的块的问题

algorithmicx 中带有自动换行的块的问题

为了实现良好的自动换行,我在 algorithmicx 中使用了以下代码:

\parbox[t]{\dimexpr\linewidth-\algorithmicindent}{<text>\strut}

但是当代码包含多个嵌套结构时,会留下一个代码块。该如何修复?

\documentclass{article}

\usepackage{algorithm} 
\usepackage{algpseudocode}

\begin{document}

\begin{algorithm}
  \caption{Examples}\label{alg:Examples}
  \begin{algorithmic}
  \While{$Y<5$}

  \If{$quality\ge 9$}
  \State \parbox[t]{\dimexpr\linewidth-\algorithmicindent}{bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla \strut}
  \EndIf

  \EndWhile
  \end{algorithmic}
\end{algorithm}

\end{document}

一只忙碌的猫 http://harrix.org/2013-04-24_013858.png

答案1

由于您位于第二个块嵌套级别内,因此您需要两个-\algorithmicindent

\documentclass{article}
\usepackage{showframe}% just for the example 
\usepackage{algpseudocode}
\usepackage{algorithm} 

\begin{document}

\begin{algorithm}
  \caption{Examples}\label{alg:Examples}
  \begin{algorithmic}
  \While{$Y<5$}

  \If{$quality\ge 9$}
  \State \parbox[t]{\dimexpr\linewidth-\algorithmicindent-\algorithmicindent\relax}{bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla \strut}
  \EndIf

  \EndWhile
  \end{algorithmic}
\end{algorithm}

\end{document}

在此处输入图片描述

showframe只是为了可视化目的而使用。

相关内容