No Ubuntu, como reformatar o texto para caber na largura (exceto a linha final), adicionando espaços quando necessário? O mais próximo que consigo chegar é com fmt --width=64
, mas isso não adiciona os espaços entre as palavras.
Entrada
- trecho retirado
man zip
com todas as quebras de linha removidas e espaços duplos transformados em espaços simples
Do not operate on files modified prior to the specified date, where mm is the month (00-12), dd is the day of the month (01-31), and yyyy is the year. The ISO 8601 date format yyyy-mm-dd is also accepted. For example:
fold --width=64
saída
- quebra palavras, o que é indesejável
Do not operate on files modified prior to the specified date, wh
ere mm is the month (00-12), dd is the day of the month (01-31),
and yyyy is the year. The ISO 8601 date format yyyy-mm-dd is al
so accepted. For example:
fmt --width=65
saída
- quase perfeito, mas também preciso adicionar espaços entre as palavras
Do not operate on files modified prior to the specified date,
where mm is the month (00-12), dd is the day of the month
(01-31), and yyyy is the year. The ISO 8601 date format
yyyy-mm-dd is also accepted. For example:
Saída desejada
- trecho retirado de
man zip
- onde os espaços duplos/triplos são inseridos não é importante para mim, desde que a linha caiba na largura especificada e as palavras estejam mais ou menos espaçadas uniformemente
Do not operate on files modified prior to the specified date,
where mm is the month (00-12), dd is the day of the month
(01-31), and yyyy is the year. The ISO 8601 date format
yyyy-mm-dd is also accepted. For example:
Talvez seja necessário considerar o uso do nroff para esse trabalho. Aqui está um exemplo de como usá-lo com seu texto em um arquivo chamado infile:
A marcação .pl 1 roff define a altura da página para uma única linha, desativando assim a paginação.
.ll 40 define o comprimento da linha para 40 caracteres.
nroff é um utilitário especial de formatação de marcação com excelentes possibilidades de personalização.
Você não ficará muito feliz com isso se não adicionar suporte para hifenização localizada; 65 letras é muito curto, especialmente se o seu texto, ao contrário do trecho que você usou, consistir em palavras compostas mais longas. Os falantes de alemão e finlandês irão odiá-lo se você tentar justificar uma linha com 10 letras, porque são duas palavras entre uma palavra de 35 e uma de 40 letras.
De qualquer forma, supondo que você não se importe muito com tipografia, não é tão difícil assim: o Python traz o
textwrap
módulo, e ele faz a "quebra em linhas de no máximo 65 caracteres", e tudo que você precisa fazer é adicionar os espaços em branco que faltam.Algo como este script. (De nada!)
Baixe o script
justify.py
(coloque-o em algum lugar do seu arquivo$PATH
, se não quiser especificar o caminho completo para o script) echmod 755 /path/to/justify.py
. Então você pode correrobter
Eu escolhi permitir que ele quebrasse
-
; se você não quiser isso, modifique awrapper = textwrap.Textwrapper(…
linha para incluirbreak_on_hyphens=False
.