我有一段代码:
\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}