![在“算法”环境中对齐函数参数。](https://linux22.com/image/235714/%E5%9C%A8%E2%80%9C%E7%AE%97%E6%B3%95%E2%80%9D%E7%8E%AF%E5%A2%83%E4%B8%AD%E5%AF%B9%E9%BD%90%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0%E3%80%82.png)
在“算法”环境中,当函数调用跨越多行时,我希望它的参数对齐,如下所示:
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}