我在算法包中有一个重命名的命令:
\usepackage{algpseudocode,algorithm,algorithmicx}
\algrenewcommand\algorithmicrequire{\textbf{Launch:}}
我喜欢它的外观,没有数字,也没有缩进。
然而,我想到了一个新的案例,我想在行上有一些缩进(但仍然没有行号)。
我尝试添加\hspace
,但只添加空格后这发射:,之前没有。我怎样才能缩进该行?
梅威瑟:
\documentclass[11pt]{report}
\usepackage{algpseudocode,algorithm,algorithmicx}
\algrenewcommand\algorithmicrequire{\textbf{Launch:}}
\algrenewcommand\algorithmicensure{\textbf{End Kernel}}
\begin{document}
\begin{algorithm}
\begin{algorithmic}[1]
\Require{stuff 1} % this is OK
\For{for}
\State{loremIpsum()}
\Require{Unindented stuff 2} % This is what I want to indent to the same level as the previous line
\State{loremIpsum} % indent also, but I can \qquad
\Ensure{} % This is what I want to indent also
\EndFor
\Ensure{} % this is OK also
\end{algorithmic}
\end{algorithm}
\end{document}
答案1
这是一个应该能给出想要的结果的版本(如果我正确理解了要求的话)。
\documentclass[11pt]{article}
\usepackage{algpseudocode,algorithm,algorithmicx}
\makeatletter
\def\ALG@special@indent{%
\ifdim\ALG@thistlm=0pt\relax
\hskip-\leftmargin
\else
\hskip\ALG@thistlm
\fi
}
\newcommand{\Launch}[1]{\item[]\noindent\ALG@special@indent \textbf{Launch:}\ #1}
\newcommand{\EndKernel}{\item[]\noindent\ALG@special@indent \textbf{End Kernel}}
\makeatother
\begin{document}
\begin{algorithm}
\begin{algorithmic}[1]
\Launch{stuff 1}
\For{for}
\State{loremIpsum()}
\Launch{Unindented stuff 2}
\State{loremIpsum}
\EndKernel
\EndFor
\EndKernel
\end{algorithmic}
\end{algorithm}
\end{document}
我添加了新的命令\Launch
并使\EndKernel
代码更具可读性,因为我假设您只是使用了其他名称,因为输出看起来与您想要的有些相似。
这两个命令都只是插入没有行号的简单行(如\Statex
),但对缩进特别注意。如果其中一个命令出现在顶层,则不添加缩进;如果它出现在另一个块内的某个地方,则使用当前块缩进。