如何设置算法排版的左边距,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}
我添加了一些\strut
s 以确保基线跳转正确,特别是在 的第一行和最后一行algorithmic
,以及可能在 之前/之后,具体取决于内容是否有下降部/上升部。这是为了避免框设置得太靠近(垂直)其上方/下方的其他内容。