在“算法”环境中对齐函数参数。

在“算法”环境中对齐函数参数。

在“算法”环境中,当函数调用跨越多行时,我希望它的参数对齐,如下所示:

MyFunction(long_arg_name0,
           long_arg_name1,
           long_arg_name2);

我怎样才能实现这个效果?

(第二)编辑:这是一个未能达到预期效果的最小示例:

\documentclass{article}

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

\begin{document}

\begin{algorithm}[t]
\begin{algorithmic}
  \While{true}
  \State MyLongWindedFunction(LongArgument0,\\ LongArgument1,\\ LongArgument2,\\ LongArgument3)
  \EndWhile
\end{algorithmic}
\end{algorithm}

\end{document}

当我在参数之间粘贴标准对齐标记时&,收到错误消息:

! Misplaced alignment tab character &.
l.10   \State MyLongWindedFunction(LongArgument0,&
                                               \\ LongArgument1, &\\ Lon...

答案1

一种可能的解决方案是计算对齐点之前的字符串的长度(在本例中为字符串MyLongWindedFunction(),然后使用该长度添加必要的水平空间:

\documentclass{article}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
\usepackage{algorithm}

\newlength\mylen
\settowidth\mylen{MyLongWindedFunction(}

\begin{document}

\begin{algorithm}[t]
\begin{algorithmic}
  \State MyLongWindedFunction(LongArgument0,\\\hspace{\mylen}LongArgument1,\\\hspace{\mylen}LongArgument2,\\\hspace{\mylen}LongArgument3)
\end{algorithmic}
\end{algorithm}

\end{document}

要回答原始问题中的编辑:只需将\parindent(算法中使用的缩进)添加到长度\mylen

\documentclass{article}

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

\newlength\mylen
\settowidth\mylen{MyLongWindedFunction(}
\addtolength\mylen{\parindent}

\begin{document}

\begin{algorithm}[t]
\begin{algorithmic}
  \While{true}
  \State MyLongWindedFunction(LongArgument0,\\\hspace*{\mylen}LongArgument1,\\\hspace*{\mylen}LongArgument2,\\\hspace*{\mylen}LongArgument3)
  \EndWhile
\end{algorithmic}
\end{algorithm}

\end{document}

相关内容