拆分文字

时间:2010-05-15 07:30:00

标签: algorithm split line

我想知道是否有算法将一条线分割成多条线,这样得到的多条线的集合就会变成方形而不是宽的矩形。让我举几个例子,

输入: 嗨,这是一个很长的路线。

输出:
嗨这是
真的很 长线

输入: a b c d e f

输出:
a b c
d e f

输入: 这真的是这样的loooooooooooooooooooong line。这就是结束。

输出:
这真的是这样的 looooooooooooooooooooong
这是结束。

如果您在上面的示例中看到,输入线适合宽矩形。但输出或多或少符合平方形状。

基本上,这里需要做的只是计算行中的字符数,取该数字的平方根。然后在每一行中加上平方根字符数。但在上面的例子中,拆分需要通过尊重词包而不是字符来完成。这有什么标准算法吗?任何代码示例/指针都将不胜感激!

1 个答案:

答案 0 :(得分:2)

正如您所观察到的,这基本上意味着使用最小最大宽度来破坏线条,而不是通常所做的最大宽度。 (并且您的示例显示,如果您不能对单词进行连字,则并非总是可行。)TeX可以执行此操作(查看\parshape命令):其换行算法支持任意形状(以及连字符也是如此) ),被认为是最先进的。因此,如果你想以任何严肃的方式创建正方形,你一定要适应Knuth / Plass算法(http://defoe.sourceforge.net/folio/knuth-plass.html)。