这是我的最小示例:
\documentclass{article}
\usepackage{algorithm}
\usepackage{algorithmic}
\begin{document}
\begin{algorithm}
\caption{Test}
\begin{algorithmic}[1]
\REQUIRE
\REPEAT
\STATE state
\STATE state
\STATE state
\UNTIL condition
\end{algorithmic}
\end{algorithm}
\end{document}
我得到这个结果:
但我更希望这个结果:
我怎样才能实现这个目标?
答案1
algorithmic
在环境开始时创建所有必要的伪代码宏。因此,仅以“通常”的方式进行修补和/或algorithmic
并不那么容易。\REPEAT
\UNTIL
以下 MWE 在algorithmic
环境启动后插入补丁。补丁使用\item
形式的“无步骤” \ALC@it@nostep
,而不是默认的\ALC@it
:
\documentclass{article}
\usepackage{algorithm,algorithmic}% http://ctan.org/pkg/algorithms
\usepackage{xpatch,letltxmacro}% http://ctan.org/pkg/etoolbox
\makeatletter
\newcommand{\ALC@it@nostep}{\item[]}% No-step algorithmic item
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\LetLtxMacro\oldalgorithmic\algorithmic
\LetLtxMacro\endoldalgorithmic\endalgorithmic
\renewenvironment{algorithmic}[1][0]{%
\oldalgorithmic[#1]%
\xpatchcmd{\REPEAT}{\ALC@it}{\ALC@it@nostep}{}{}%
\xpatchcmd{\UNTIL}{\ALC@it}{\ALC@it@nostep}{}{}%
}{\endoldalgorithmic}
\makeatother
\begin{document}
\begin{algorithm}
\caption{Test}
\begin{algorithmic}[1]
\REQUIRE
\REPEAT
\STATE state
\STATE state
\STATE state
\UNTIL condition
\end{algorithmic}
\end{algorithm}
\end{document}