这是我的代码的一部分:
\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
了这里。
我遇到的问题:
- 下划线(即“
_
”)似乎不能很好地配合\Procname
- 希望这不是必需的...... - 需要使用
\\
来强制换行。我手动完成了这个操作,因为这个包似乎不是为处理这么长的代码行而设计的。 - 明确
\Then
已经已弃用并且似乎已被\quad
空格取代。 - 手动插入
\quad
间距以使文本按预期排列。
我不确定这个包是否适合呈现您所想的代码类型......