将左边距添加到算法中

将左边距添加到算法中

如何设置算法排版的左边距,algorithmic以便整个内容移动到右侧?

我曾尝试在块\leftmargin内部进行更改algorithmic,但没有成功。

以下是 MWE:

\documentclass{article}
\usepackage[noend]{algorithmic}
    \renewcommand{\algorithmicrequire}{\bf function}
    \renewcommand{\algorithmicensure}{\bf end}
    \def\PROCEDURE{\normalfont\REQUIRE}
    \def\ENDPROCEDURE{\ENSURE~}
\begin{document}
\parindent=0pt
Before
\begin{algorithmic}\leftmargin=3em
\PROCEDURE $sign(X)$
    \IF {$X < 0$}
        \RETURN $-1$
    \ELSIF {$X > 0$}
        \RETURN $1$
    \ELSE
        \RETURN $0$
    \ENDIF
\ENDPROCEDURE
\end{algorithmic}
After
\end{document}

答案1

您可以调整\itemindent内部algorithmic环境,因为它\list在内部使用。

\documentclass{article}
\usepackage[noend]{algorithmic}
    \renewcommand{\algorithmicrequire}{\bf function}
    \renewcommand{\algorithmicensure}{\bf end}
    \def\PROCEDURE{\normalfont\REQUIRE}
    \def\ENDPROCEDURE{\ENSURE~}
    \algsetup{indent=11pc}
\begin{document}
\parindent=0pt
Before
\begin{algorithmic}\itemindent=10pc
\PROCEDURE $sign(X)$
    \IF {$X < 0$}
        \RETURN $-1$
    \ELSIF {$X > 0$}
        \RETURN $1$
    \ELSE
        \RETURN $0$
    \ENDIF
\ENDPROCEDURE
\end{algorithmic}
After
\end{document}

答案2

如果您不介意algorithmic不超出页面边界,您可以将整个内容放在一个varwidth框内。然后您可以按照您想要的方式移动它:

在此处输入图片描述

\documentclass{article}

\usepackage{varwidth}
\usepackage[noend]{algorithmic}
\renewcommand{\algorithmicrequire}{\textbf{function}}
\renewcommand{\algorithmicensure}{\textbf{end}}
\newcommand{\PROCEDURE}{\normalfont\REQUIRE}
\newcommand{\ENDPROCEDURE}{\ENSURE~}

\setlength{\parindent}{0pt}% Just for this example
\begin{document}

Before\strut

\hspace{3em}%
\begin{varwidth}{\linewidth}
\begin{algorithmic}
  \PROCEDURE $sign(X)$\strut
    \IF {$X < 0$}
      \RETURN $-1$
    \ELSIF {$X > 0$}
      \RETURN $1$
    \ELSE
      \RETURN $0$
    \ENDIF
  \ENDPROCEDURE\strut
\end{algorithmic}
\end{varwidth}

After
\end{document}

我添加了一些\struts 以确保基线跳转正确,特别是在 的第一行和最后一行algorithmic,以及可能在 之前/之后,具体取决于内容是否有下降部/上升部。这是为了避免框设置得太靠近(垂直)其上方/下方的其他内容。

相关内容