算法包中 \Ensure、\Require 后的缩进

算法包中 \Ensure、\Require 后的缩进

我有一段代码:

\documentclass[11pt]{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{varwidth}

\begin{document}

   \begin{algorithmic}
      \Require   \begin{varwidth}[t]{\linewidth}
                  A \par
                  AA  
               \end{varwidth}
      \Ensure      \begin{varwidth}[t]{\linewidth}
                  B \par
                  BB
               \end{varwidth}
   \end{algorithmic}

\end{document}

得出

在此处输入图片描述

我希望后面的文本\Ensure缩进到紧接着后面的文本的下方\Require。如何实现?

答案1

您可以修改的定义来\Ensure构建一个宽度为要求:;你可以在全局或本地执行此操作:

全球的

\documentclass[11pt]{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{varwidth}
\usepackage{calc} % for \widthof
\algrenewcommand\algorithmicensure{%
  \makebox[\widthof{\textbf{Require:}}][l]{\textbf{Ensure:}}}

\begin{document}

   \begin{algorithmic}
      \Require   \begin{varwidth}[t]{\linewidth}
                  A \par
                  AA\strut
               \end{varwidth}
      \Ensure      \begin{varwidth}[t]{\linewidth}
                  B \par
                  BB\strut
               \end{varwidth}
   \end{algorithmic}

\end{document}

当地的

\documentclass[11pt]{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{varwidth}
\usepackage{calc} % for \widthof

\begin{document}

   \begin{algorithmic}
   \algrenewcommand\algorithmicensure{%
     \makebox[\widthof{\textbf{Require:}}][l]{\textbf{Ensure:}}}
      \Require   \begin{varwidth}[t]{\linewidth}
                  A \par
                  AA\strut
               \end{varwidth}
      \Ensure      \begin{varwidth}[t]{\linewidth}
                  B \par
                  BB\strut
               \end{varwidth}
   \end{algorithmic}

\end{document}

还要注意\strut末尾的varwidth以获得均匀的垂直间距。

在此处输入图片描述

答案2

\documentclass[11pt]{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{varwidth}

\begin{document}

\newlength{\reqwidth}
\settowidth{\reqwidth}{\textbf{Require:}}

\algrenewcommand{\algorithmicensure}{\makebox[\reqwidth][l]{\textbf{Ensure:}}}

   \begin{algorithmic}
      \Require   \begin{varwidth}[t]{\linewidth}
                  A \par
                  AA  
               \end{varwidth}
      \Ensure      \begin{varwidth}[t]{\linewidth}
                  B \par
                  BB
               \end{varwidth}
   \end{algorithmic}

\end{document}

在此处输入图片描述

相关内容