当不使用行号时,如何在 algorithmicx 中完全左对齐文本

当不使用行号时,如何在 algorithmicx 中完全左对齐文本

我正在使用该algorithmicx包,并且希望在不使用行号时完全左对齐文本。以下是示例:

在此处输入图片描述

注意只有RequireEnsure子句完全被推到左边。我怎样才能让其余代码也完全左对齐?

这是一个简单的例子:

\documentclass[a4paper,11pt]{article}

\usepackage{algorithmicx}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{amsmath}

\begin{document}

\begin{algorithm}
\caption{Algorithm Name}
\begin{algorithmic}
\Require some input
\Ensure some output
\Statex
\State \textbf{something}
\State more text
\begin{enumerate}
    \item list item 1
    \item an equation
        \begin{equation*}
            f(n) = \begin{cases}
            1 & i = 1\\
            f(n-1) + f(n-2) & i > 1
                  \end{cases}
        \end{equation*} 
    \item third item 
\end{enumerate}  
\State last line
\end{algorithmic}
\end{algorithm}

\end{document}

答案1

您应该考虑使用以下功能algorithmicx来产生您的格式要求,而不是仅仅将algorithmic环境用作常规文档元素的外壳。

不管怎样,这可能就是你想要的(使用 Marco 的建议enumitem):

在此处输入图片描述

\documentclass[a4paper,11pt]{article}
\setlength{\parindent}{0pt}% Just for this example
\usepackage{algorithm}% http://ctan.org/pkg/algorithms
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\makeatletter
\def\algbackskip{\hskip\dimexpr-\algorithmicindent+\labelsep}
\def\LState{\State \algbackskip}%
\makeatother
\begin{document}

\begin{algorithm}
  \caption{Algorithm Name}
  \begin{algorithmic}
    \Require some input
    \Ensure some output
  \Statex
  \LState \textbf{something}
  \LState more text
  \begin{enumerate}[leftmargin=0pt,itemindent=1.5em]
    \item list item 1
    \item an equation
        \begin{equation*}
            f(n) = \begin{cases}
            1 & i = 1\\
            f(n-1) + f(n-2) & i > 1
                  \end{cases}
        \end{equation*} 
    \item third item 
  \end{enumerate}  
  \LState last line
\end{algorithmic}
\end{algorithm}

\textbf{something}\par
more text
\begin{enumerate}
    \item list item 1
    \item an equation
        \begin{equation*}
            f(n) = \begin{cases}
            1 & i = 1\\
            f(n-1) + f(n-2) & i > 1
                  \end{cases}
        \end{equation*} 
    \item third item 
\end{enumerate}  
last line
\end{document}

我已经定义了\LState代表左对齐的\State。不确定如果在 中嵌套内容,这会有多大效果\LState(尚未测试)。

上方的算法显示了所需的输出,而下方的“算法”则显示了在常规文本中设置的相同内容(用于比较)。显示的公式略有水平调整。

相关内容