Como posso justificar o texto simples no Linux?

15

Estou compondo um documento de texto sem formatação (.txt) com parágrafos justificados à esquerda e à direita. Eu adiciono manualmente espaços, quebrando palavras com hifens, se necessário, até que as linhas tenham um comprimento uniforme. Para usar um exemplo do meu documento, um parágrafo como este:

These phantasmic balls have some strange properties, some neat, some
interesting, and others just indicative of lazy design. They're almost all
caused by the same design flaw: The game treats them too much like regular
balls.

terminará assim:

These phantasmic balls have some  strange properties,
some neat,  some interesting, and others just indica-
tive of lazy design. They're almost all caused by the
same design flaw:  The game treats them too much like
regular balls.

Como posso fazer isso?

Não há problema em adicionar espaços (sem quebrar palavras sobre linhas), mas preciso controlar a largura de destino do parágrafo (em # caracteres). O exemplo acima é justificado para 53 caracteres por linha, mas a largura da linha no meu documento real varia de 60 a 79.

Também seria ótimo se houvesse um editor de texto com esse recurso.

Eu já tentei:

  • OpenOffice e TeX : Eles apenas usam formatação para alterar a forma como o texto é exibido.
  • O comando Justify do nano não conta, porque na verdade não torna as linhas uniformes.

Aceitei a seguinte resposta porque era a que funcionava melhor para mim . Eu encontrei os comandos de preenchimento do emacs mais fáceis de usar entre as respostas, e eu aprecio como ele reconhece até mesmo recuo não-espaço em branco (para coisas como # e // comentários). No entanto, as outras respostas preenchem os seus próprios nichos e eu recomendo aos outros que visitem esta questão para também observá-las.

    
por Exp HP 03.08.2010 / 23:40

5 respostas

4

Você pode fazer isso no emacs usando fill-paragraph ou fill-region ( preencha os documentos ).

Você precisa passar um argumento de prefixo numérico. A coluna de preenchimento padrão é 70.

Selecione o texto a preencher e faça M-3 M-x fill-region .

Eu configurei a coluna de preenchimento como 53 para o seu texto de exemplo e obtive:

These phantasmic balls  have some strange properties,
some   neat,  some   interesting,  and   others  just
indicative of lazy  design. They're almost all caused
by  the same design  flaw: The  game treats  them too
much like regular balls.
    
por 03.08.2010 / 23:58
18

você precisa de par

por exemplo. para obtê-lo no Ubuntu, faça:

sudo aptitude install par

para justificar text.txt (na largura de 80 caracteres), economizando em newtext.txt :

par j1w80 < text.txt > newtext.txt

para usar par no vim ou no gvim:

:set formatprg=par\ j1w80

em seguida, destaque o texto que você deseja formatar e use o comando gq .

para mais informações, consulte man par

    
por 04.08.2010 / 06:03
6

fmt é a solução da velha escola

Da página do manual:

fmt [-cmnps] [-d chars] [-l num] [-t num] [goal [maximum] | -width | -w width] [file ...]

e

The goal length defaults to 65 and the maximum to 10 more than the goal length. Alterna- tively, a single width parameter can be specified either by prepending a hyphen to it or by using -w. For example, fmt -w 72'',fmt -72'', and ''fmt 72 72'' all produce identical output.

    
por 05.08.2010 / 05:23
1

Aqui está um script em Perl chamado paradj que pode fazer a justificação completa e a hifenização.

Aqui está um diff mostrando algumas alterações que fiz para dar suporte à adição de uma margem esquerda:

12c12
< my ($indent, $newline);
---
> my ($indent, $margin, $newline);
15a16
>   "margin:i" => \$margin,
21a23
> $margin = 0 if (!$margin);
149a152
>     print " " x $margin;
187a191,193
>   print "--margin=n (or -m=n or -m n)  Add a left margin of n ";
>   print "spaces\n";
>   print "                                (defaults to 0)\n";

Este comando:

./paradj.pl -h --width=53 --both --indent=0 inputfile

produz uma saída muito próxima do seu exemplo (os espaços extras estão em lugares diferentes).

These  phantasmic balls have some strange properties,
some  neat, some interesting, and others just indica-
tive of lazy design. They're almost all caused by the
same  design flaw: The game treats them too much like
regular balls.
    
por 04.08.2010 / 01:07
0

Eu uso o Nano.

Renomeie o arquivo para um nome mais curto (8.3). Abra em Nano, depois em Alt - J para justificar o documento inteiro. Alt - O para salvar. Então Alt - X para sair. Em seguida, renomeie o arquivo de volta para o nome original.

Pode parecer complicado, mas economizou muito tempo ao fazer o manual Enter , Excluir , Finalizar para limitar as colunas a 90 O padrão do Nano é 72. Eu posso viver com isso.

    
por 28.08.2013 / 03:11