在“算法”环境中,当函数调用跨越多行时,我希望它的参数对齐,如下所示:
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}