为了实现良好的自动换行,我在 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}
答案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
只是为了可视化目的而使用。