尝试在算法环境中正确获得缩进时我遇到了麻烦,并且到目前为止发布的所有解决方案都无法解决我的问题,因为我希望看到它得到解决。
我希望后续行相对于初始行有一个缩进(我是这个论坛的新手,但无法发布图像)。
但是,根据我在该论坛上找到的结果,最好的方法是,所有连续行都使用固定缩进(即,无论首行是否缩进都没有区别),或者与首行缩进相同(请参阅下面的 MWE)。
有人能回答这个问题吗?
\documentclass[10pt, A4]{report}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithmic}\raggedright
\State Define N\_crf as the number of points on the circumference of the hyperstreamline, which will define its cross-sectional area at each r
\For {n = 1 : number of tracts}
\State \parbox[t]{\dimexpr\linewidth-\algorithmicindent\relax}{define N\_crf points creating a unit circle around r(n,i), in the plane perpendicular to t(n,i).}\strut
\EndFor
\end{algorithmic}
\end{document}
答案1
设置段落\hangindent
:
\documentclass{article}
\usepackage{algorithm,algpseudocode}% http://ctan.org/pkg/{algorithms,algorithmicx}
\begin{document}
\begin{algorithmic}
%\raggedright
\State Define \texttt{N\_crf} as the number of points on the circumference
of the hyperstreamline, which will define its cross-sectional area at each~$r$
\For {$n = 1$ : number of tracts}
\State \parbox[t]{\dimexpr\linewidth-\algorithmicindent\relax}{%
\setlength{\hangindent}{\algorithmicindent}%
define N\_crf points creating a unit circle around $r(n,i)$, in the plane
perpendicular to $t(n,i)$.}\strut
\EndFor
\end{algorithmic}
\end{document}
你可以定义自己一个\hangparbox
:
\newcommand{\hangparbox}[3][t]{\parbox[#1]{\dimexpr#2}{%
\setlength{\hangindent}{\algorithmicindent}#3}}
实现此目的的另一种粗略方法是插入和删除\algorithmicindent
之前/之后的\parbox
:
\State \hspace*{\algorithmicindent}\parbox[t]{\dimexpr\linewidth-\algorithmicindent}{%
\hspace*{-\algorithmicindent}
%...
}
在处理算法中深度嵌套的部分时这可能会很有用。