Algorithm 拆分文本行

Algorithm 拆分文本行,algorithm,split,line,Algorithm,Split,Line,我想知道是否有一种算法可以将一条直线分割成多条直线,从而使生成的多条直线的集合适合于正方形而不是宽矩形。让我举几个例子, 输入: 嗨,这是一条很长的队伍 输出: 嗨,这里是 a真的 长队 输入: a b c d e f 输出: a b c d e f 输入: 这条线真是太长了,到此为止 输出: 这真是如此 looooooong 行,到此为止 如果您在上面的示例中看到,则输入行适合于一个宽矩形。但输出或多或少符合正方形的形状 本质上,这里需要做的是简单地计算行中的字符数,取该数字的平方根。然后在每

我想知道是否有一种算法可以将一条直线分割成多条直线,从而使生成的多条直线的集合适合于正方形而不是宽矩形。让我举几个例子,

输入: 嗨,这是一条很长的队伍

输出:
嗨,这里是
a真的
长队

输入: a b c d e f

输出:
a b c
d e f

输入: 这条线真是太长了,到此为止

输出:
这真是如此
looooooong
行,到此为止

如果您在上面的示例中看到,则输入行适合于一个宽矩形。但输出或多或少符合正方形的形状


本质上,这里需要做的是简单地计算行中的字符数,取该数字的平方根。然后在每行中输入字符数的平方根。但在上面的示例中,拆分需要遵循换行符而不是字符。这有什么标准算法吗?任何代码示例/指针都将不胜感激

正如您所观察到的,这基本上意味着用最小和最大宽度来断线,而不是通常使用的最大宽度。(您的示例表明,如果无法对单词进行连字符处理,则不可能始终做到这一点。)TeX可以做到这一点(请参阅
\parshape
命令):它的换行算法支持任意形状(以及连字符),并且被认为是最先进的。因此,如果你想以任何严肃的方式创建正方形,你一定要采用Knuth/Plass算法()。

正方形是矩形。但并非所有的矩形都是正方形;-)。不管怎样,我现在已经编辑了我的问题。希望它清楚:-)。