Par: justifica o texto sem juntar linhas

0

Par é uma ótima ferramenta para formatar texto.

O Par une o texto e o formata ao novo tamanho.

O Par Par também pode justificar o texto sem juntar linhas?

p.e.

text text text text
text2 text2 text2 text2
txt txt txt txt txt 

justifique para 30

text     text     text    text
text2   text2   text2    text2
txt    txt    txt    txt   txt 

Li o manual sem encontrar a solução.

    
por Reman 18.12.2014 / 08:52

1 resposta

1

Eu suspeito que o mais próximo que você pode obter com par é usar a opção j1 em conjunto com um valor w muito bem escolhido.

De link

j[<just>]   If <just> is 1, par justifies the OP, inserting spaces
            between words so that all lines in the OP have length
            <width> (except the last, if <last> is 0).  Defaults to
            0.  (See also the w, l, and f options.)

par se comporta de forma pathalogicamente com o texto do seu exemplo, acho que ele detecta incorretamente um prefixo de linha.

$ cat test2.txt
text text text text
text2 text2 text2 text2
txt txt txt txt txt

O melhor que pude sair foi

$ ./par -w23 -j1 -p0 -h0 <test2.txt
text  text   text  text
text2 text2 text2 text2
txt txt txt txt txt

Acho que eu tentaria perl , talvez com Texto: : Autoformatar e alimentar autoformat uma linha por vez.

Essa ideia me levou ao bastante feio mas bastante eficaz

$ perl -pe 's/$/\r\n123456789 123456789 123456789 /;' test2.txt| \
> ./par -w30 -j1 -l1 -p0 -h0 | \
> perl -ne 'print unless /^123456789 123456789 123456789 $/'
text    text     text    text
text2   text2   text2   text2
txt    txt   txt    txt   txt

Não consigo deixar de pensar que uma solução muito mais elegante está disponível.

    
por 18.12.2014 / 10:34