如何在 clrscode3e 中管理函数声明或代码中的长行输入

如何在 clrscode3e 中管理函数声明或代码中的长行输入

这是我的代码的一部分:

\begin{codebox}

\Procname{$\proc{\textbf{Connect_two_SamplePoints}}(Graph,S1, S2,connectionCostMat,cost)$}
\li \Comment S1 and S2 are sample points 
\li  cost[S1][S2] $=$ $\infty$ 
\li \Comment  cost holds the length of shortest path between S1 and S2
\li \For $pnt$ in connectionCostMat[S1]: \>\>\>\>\>\>\>\>\Comment candidate point for S1
\li \> \For $pnt2$ in connectionCostMat[S2]:  \>\>\>\>\>\>\>\>\Comment candidate point for S2
\li \> \> \If shortestPathLength($pnt$,$pnt2$) $+$ connectionCostMat[$S1$][$pnt$] $+$ connectionCostMat[$S2$][$pnt2$]< cost[S1][S2]:
\li \Then \> \> cost[S1][S2] $=$ shortestPathLength($pnt$,$pnt2$) $+$ connectionCostMat[$S1$][$pnt$] $+$ connectionCostMat[$S2$][$pnt2$] \End

\end{codebox}

您可以看到函数名称有多长,以及实际代码中的几行。使用 的默认设置clrscode3e,我得到了一组丑陋的代码,函数输入和代码行一直延伸到边缘并消失了……非常糟糕。我试过水平居中 clrscode3e 代码框,但并没有让情况变得更好。

任何帮助都将不胜感激!

答案1

我对这个包还不熟悉,但也许下面的内容可能接近你想要的:

\documentclass{article}
\usepackage{clrscode3e}

\begin{document}

\begin{codebox}
\Procname{$\proc{ConnectTwoSamplePoints}(Graph, S1, S2, connectionCostMat, cost)$}
\li  cost[S1][S2] $= \infty$
\li \Comment  cost holds the length of the shortest path between S1 and S2
\li \For $pnt$ in connectionCostMat[S1]: \Comment candidate point for S1
\li \For $pnt2$ in connectionCostMat[S2]: \Comment candidate point for S2
\li \If shortestPathLength($pnt , pnt2$) +
\\ \quad connectionCostMat[$S1$][$pnt$] +
\\ \quad connectionCostMat[$S2$][$pnt2$] \textless cost[S1][S2]
\li \Then cost[S1][S2] $=$ shortestPathLength($pnt$,$pnt2$) +
\\  \quad \quad \quad connectionCostMat[$S1$][$pnt$] +
\\ \quad \quad \quad connectionCostMat[$S2$][$pnt2$]
\End
\end{codebox}

\end{document}

给予:

在此处输入图片描述

这个包不在我的(最近的)CTAN 上,所以我使用.sty这里

我遇到的问题:

  1. 下划线(即“ _”)似乎不能很好地配合\Procname- 希望这不是必需的......
  2. 需要使用\\来强制换行。我手动完成了这个操作,因为这个包似乎不是为处理这么长的代码行而设计的。
  3. 明确\Then已经已弃用并且似乎已被\quad空格取代。
  4. 手动插入\quad间距以使文本按预期排列。

我不确定这个包是否适合呈现您所想的代码类型......

相关内容