Come posso giustificare il testo normale in Linux?


17

Sto componendo un documento di testo semplice (.txt) con paragrafi giustificati a destra e sinistra. Aggiungo manualmente spazi, spezzando le parole con trattini se necessario, fino a quando le linee non sono uniformi. Per usare un esempio dal mio documento, un paragrafo come questo:

Queste palle fantasmatiche hanno alcune proprietà strane, alcune pulite, alcune
interessante e altri solo indicativi del design pigro. Sono quasi tutti
causato dallo stesso difetto di progettazione: il gioco li tratta troppo come un normale
palle.

finirà per apparire così:

Queste palle fantasmatiche hanno alcune strane proprietà,
alcuni ordinati, altri interessanti e altri solo indica-
tive di design pigro. Sono quasi tutti causati dal
stesso difetto di progettazione: il gioco li tratta troppo
palle regolari.

Come posso fare questo?

Va bene aggiungere spazi (senza spezzare le parole sopra le righe), ma devo controllare la larghezza target del paragrafo (in # caratteri). L'esempio sopra è giustificato a 53 caratteri per riga, ma la larghezza della riga nel mio documento effettivo varia da 60 a 79.

Sarebbe anche bello se ci fosse un editor di testo con una tale funzione.

Ho già provato:

  • OpenOffice e TeX : usano solo la formattazione per cambiare la modalità di visualizzazione del testo.
  • Il comando Justify di nano non conta perché in realtà non rende la larghezza uniforme delle linee.

Ho accettato la seguente risposta perché è stata quella che ha funzionato meglio per me . Ho scoperto che i comandi di emacs fill sono i più facili da usare tra le risposte e apprezzo il modo in cui riconosce anche il rientro di spazi non bianchi (per cose come # e // commenti). Tuttavia, le altre risposte riempiono tutte le proprie nicchie e consiglio ad altri di visitare questa domanda di guardarle.


1
Perché? Sono sinceramente curioso. Uno dei vantaggi del testo semplice è che è indipendente dalla formattazione e puoi schiaffeggiarlo in OpenOffice o TeX e farlo sembrare bello. A cosa ti serve?
Doug Harris,

Inoltre, stai cercando questa utility per eseguire anche la sillabazione semi-intelligente?
Doug Harris,

1
Il motivo è perché è una guida per GameFAQ. GameFAQs accetta solo testo semplice, documenti TXT. Per quanto riguarda la sillabazione, la preferirei, ma non è un requisito assoluto.
Scadenza HP

Risposte:


5

Puoi farlo in emacs usando fill-paragrapho fill-region( riempi i documenti ).

Devi passare un argomento con prefisso numerico. La colonna di riempimento predefinita è 70.

Seleziona il testo da compilare e da fare M-3 M-x fill-region.

Ho impostato la colonna di riempimento su 53 per il testo di esempio e ho ottenuto:

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.

Sembra bello. Sto installando il pacchetto per emacs adesso per dare un'occhiata a questa funzione.
Scadenza HP

Va bene, ci è voluto un po 'di armeggiamento per abituarsi all'interfaccia e alla terminologia insolite (insolite per gli standard di oggi, almeno), ma questo è fantastico. Cx f 53, M-1 Mq. È certamente più facile del mio Piano B (che sarebbe stato quello di scrivere il mio copione di Ruby con quel testo giustificato) e, con mia grande soddisfazione, riconosce persino il rientro e lo tiene in considerazione quando giustifica. Bello.
Espandi HP

Come posso impostare la colonna di riempimento su 53 o su qualsiasi altro valore che voglio per quella materia? E come posso verificare quello che è attualmente?
Ciao Arrivederci

1
A proposito, il link nella tua risposta è interrotto.
Ciao Arrivederci

Ho aggiornato il link
Doug Harris il

18

hai bisogno par

ad es. per scaricarlo su Ubuntu, fai:

sudo aptitude install par

giustificare text.txt(alla larghezza di 80 caratteri), risparmiando in newtext.txt:

par j1w80 < text.txt > newtext.txt

usare par in vim o gvim:

:set formatprg=par\ j1w80

quindi evidenziare il testo che si desidera formattare e utilizzare il gqcomando.

Per ulteriori informazioni, vedere man par


1
Ho provato questo e l'ho trovato abbastanza permaloso. A volte provoca errori anche in quella che sembrerebbe la più innocente delle circostanze. In confronto al comando emacs, questo è inutilizzabile.
Exp HP

Puoi fare un esempio? Mi sembra abbastanza stabile.
sml

1
Il comando che hai dato non è corretto. Deve essere par w80 j1, no par 80j. Modifica: Oppurepar jw80
Gandaro,

6

fmt è la soluzione della vecchia scuola

Dalla pagina man:

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

e

Per impostazione predefinita, la lunghezza dell'obiettivo è 65 e il massimo a 10 in più rispetto alla lunghezza dell'obiettivo. In alternativa, un singolo parametro di larghezza può essere specificato anteponendo un trattino o usando -w. Ad esempio, fmt -w 72'',fmt -72 '' e `` fmt 72 72 '' producono tutti un output identico.


Alcune versioni di fmtnon hanno molte di queste opzioni e non possono fornire una giustificazione completa.
In pausa fino a nuovo avviso.

Siamo spiacenti ma non hai detto chiaramente come giustificare esattamente l'uso del testo fmt. Inoltre, come ha detto Dennis, sul mio sistema la pagina man non fornisce alcun testo come hai menzionato e non dice come giustificarlo.
Jamadagni,

2

Ecco uno script Perl chiamatoparadj che può fare giustificazione e sillabazione complete.

Ecco un esempio diffdelle modifiche che ho apportato per supportare l'aggiunta di un margine sinistro:

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";

Questo comando:

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

produce un output molto vicino al tuo esempio (gli spazi extra sono in luoghi diversi).

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.

Un'ottima soluzione che, sfortunatamente, non posso usare. Circa un mese fa, ho cercato di ottenere TeX in Perl perché volevo usare TeX :: Hyphen (per un problema diverso ma correlato a questa domanda). IIRC, quello che ho scoperto è che i repository Ubuntu hanno solo alcune parti della libreria TeX disponibili e Hyphen non è tra questi. Ho provato a installare manualmente la libreria Perl TeX, ma non ha funzionato bene. Ho finito per rompere Perl e ho trascorso le ore successive a riparare il danno. Sono riluttante a fare un altro tentativo. Vorrei avere abbastanza rappresentante per darti almeno un +1 per questa risposta, però.
Espandi HP

@Exp HP: mi dispiace che tu abbia avuto così tanti problemi. Ho questo su un sistema Ubuntu 9.10 e non ho problemi.
In pausa fino a nuovo avviso.

0

Io uso Nano.

Rinominare il file con un nome più breve (8.3). Apri a Nano, quindi Alt- Jper giustificare l'intero documento. Alt- Oper salvare. Quindi Alt- Xper uscire. Quindi rinominare il file con il nome originale.

Potrebbe sembrare ingombrante ma mi ha salvato un sacco di tempo nel fare manuale Enter, Delete, Endper limitare le colonne 90. Nano default 72. posso vivere con questo.


2
Qual è la magia dietro il nome del file breve?
Jawa,

0

Si può provare reformat.

È possibile installarlo su Debian / Ubuntu, eseguendo sudo apt-get install reformat.

Usalo in questo modo:

reformat -w 80 -j < mytext.txt

Il testo giustificato verrà scritto nell'output standard.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.