Bagaimana saya bisa membenarkan teks biasa di Linux?

17

Saya sedang menyusun dokumen teks biasa (.txt) yang memiliki paragraf kiri dan kanan yang dibenarkan. Saya menambahkan spasi secara manual, memecah kata-kata dengan tanda hubung jika perlu, sampai garis panjangnya seragam. Untuk menggunakan contoh dari dokumen saya, paragraf seperti ini:

Bola-bola phantasmic ini memiliki beberapa sifat aneh, beberapa rapi, beberapa
menarik, dan lain-lain hanya indikasi desain malas. Mereka hampir semuanya
disebabkan oleh cacat desain yang sama: Permainan memperlakukan mereka terlalu banyak seperti biasa
bola.

akan berakhir seperti ini:

Bola-bola phantasmic ini memiliki beberapa sifat aneh,
beberapa rapi, beberapa menarik, dan lainnya hanya indica-
tive desain malas. Mereka hampir semuanya disebabkan oleh
cacat desain yang sama: Permainan memperlakukan mereka terlalu mirip
bola reguler.

Bagaimana saya bisa melakukan ini?

Tidak apa-apa untuk menambahkan spasi (tanpa melanggar kata-kata di atas baris), tetapi saya perlu mengontrol lebar target paragraf (dalam # karakter). Contoh di atas dibenarkan untuk 53 karakter per baris, tetapi lebar baris dalam dokumen saya yang sebenarnya bervariasi dari 60 hingga 79.

Ini juga akan bagus jika ada editor teks dengan fitur seperti itu.

Saya sudah mencoba:

  • OpenOffice dan TeX : Mereka hanya menggunakan pemformatan untuk mengubah cara teks ditampilkan.
  • Perintah Justify nano tidak masuk hitungan karena tidak benar-benar membuat garis seragam menjadi lebar.

Saya menerima jawaban berikut karena itu yang paling berhasil bagi saya . Saya menemukan perintah emacs fill yang paling mudah digunakan di antara jawaban, dan saya menghargai bagaimana ia mengenali bahkan lekukan non-spasi putih (untuk hal-hal seperti # dan // komentar). Namun, jawaban yang lain semua mengisi ceruk mereka sendiri dan saya sarankan orang lain mengunjungi pertanyaan ini untuk melihatnya juga.

Exp HP
sumber
1
Mengapa? Saya benar-benar ingin tahu. Salah satu kelebihan dari teks biasa adalah tidak memformat dan Anda dapat menamparnya ke OpenOffice atau TeX dan membuatnya terlihat bagus. Apa gunanya kamu untuk ini?
Doug Harris
Juga, apakah Anda mencari utilitas ini untuk melakukan tanda hubung semi-cerdas juga?
Doug Harris
1
Alasannya adalah karena ini adalah panduan untuk GameFAQs. GameFAQs hanya membutuhkan teks biasa, dokumen TXT. Sedangkan untuk tanda hubung, saya lebih suka, tapi itu bukan persyaratan mutlak.
Exp HP

Jawaban:

5

Anda dapat melakukan ini di emacs menggunakan fill-paragraphatau fill-region( isi dokumen ).

Anda harus melewati argumen awalan angka. Kolom isi default adalah 70.

Pilih teks untuk diisi dan dilakukan M-3 M-x fill-region.

Saya mengatur kolom isian ke 53 untuk teks sampel Anda dan mendapat:

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.
Doug Harris
sumber
Itu terlihat bagus. Saya sedang menginstal paket untuk emacs sekarang untuk melihat fitur ini.
Exp HP
Oke, butuh sedikit mengutak-atik untuk terbiasa dengan antarmuka dan terminologi yang tidak biasa (setidaknya menurut standar hari ini, setidaknya), tapi ini bagus. Cx f 53, M-1 Mq. Ini tentu lebih mudah daripada Plan B saya (yang seharusnya menulis skrip Ruby saya sendiri yang membenarkan teks), dan banyak yang membuat saya puas, bahkan mengenali lekukan dan memperhitungkannya ketika membenarkan. Bagus.
Exp HP
Bagaimana cara mengatur kolom isian ke 53 atau ke nilai lain yang saya inginkan dalam hal ini? Dan bagaimana saya bisa memeriksa apa itu saat ini?
HelloGoodbye
1
Omong-omong, tautan dalam jawaban Anda rusak.
HelloGoodbye
Saya telah memperbarui tautan
Doug Harris
18

kamu membutuhkan par

mis. untuk mendapatkannya di ubuntu, lakukan:

sudo aptitude install par

untuk membenarkan text.txt(dengan lebar 80 karakter), hemat dalam newtext.txt:

par j1w80 < text.txt > newtext.txt

untuk menggunakan par in vim atau gvim:

:set formatprg=par\ j1w80

kemudian sorot teks yang ingin Anda format dan gunakan gqperintah.

untuk informasi lebih lanjut, lihat man par

sml
sumber
1
Saya menguji ini dan ternyata cukup sensitif. Kadang-kadang menghasilkan kesalahan bahkan di bawah apa yang tampaknya paling tidak bersalah dari keadaan. Dibandingkan dengan perintah emacs, ini tidak dapat digunakan.
Exp HP
Bisakah Anda memberi contoh? Sepertinya cukup stabil bagi saya.
sml
1
Perintah yang Anda berikan tidak benar. Itu harus par w80 j1, bukan par 80j. Sunting: Ataupar jw80
Gandaro
6

fmt adalah solusi jadul

Dari halaman manual:

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

dan

Panjang sasaran default ke 65 dan maksimum 10 lebih dari panjang sasaran. Atau, parameter lebar tunggal dapat ditentukan dengan menambahkan tanda hubung ke dalamnya atau dengan menggunakan -w. Sebagai contoh, fmt -w 72'',fmt -72 '', dan `` fmt 72 72 '' semuanya menghasilkan output yang identik.

dmckee
sumber
Beberapa versi fmttidak memiliki beberapa opsi tersebut dan tidak dapat melakukan pembenaran penuh.
Dijeda sampai pemberitahuan lebih lanjut.
Maaf tetapi Anda belum mengatakan dengan jelas bagaimana tepatnya membenarkan penggunaan teks fmt. Juga, seperti kata Dennis, pada sistem saya halaman manual tidak menyediakan teks seperti yang telah Anda sebutkan dan tidak mengatakan bagaimana membenarkan.
jamadagni
2

Berikut ini skrip Perl yang disebutparadj yang dapat melakukan pembenaran penuh dan tanda hubung.

Berikut ini adalah diffbeberapa perubahan yang saya buat untuk mendukung penambahan margin kiri:

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

Perintah ini:

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

menghasilkan output yang sangat dekat dengan contoh Anda (ruang ekstra ada di tempat yang berbeda).

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.
Dijeda sampai pemberitahuan lebih lanjut.
sumber
Solusi hebat yang, sayangnya, tidak bisa saya gunakan. Sekitar sebulan yang lalu, saya mencoba untuk mendapatkan TeX di Perl karena saya ingin menggunakan TeX :: Hyphen (untuk masalah yang berbeda tetapi terkait dengan pertanyaan ini). IIRC, yang saya temukan adalah bahwa repo Ubuntu hanya memiliki bagian tertentu dari perpustakaan TeX yang tersedia, dan Hyphen tidak ada di antara mereka. Saya mencoba menginstal perpustakaan Perl TeX secara manual, tetapi itu tidak berhasil. Saya akhirnya melanggar Perl dan menghabiskan beberapa jam berikutnya memperbaiki kerusakan. Saya enggan mencobanya lagi. Saya berharap saya memiliki cukup perwakilan untuk setidaknya memberi Anda +1 untuk jawaban ini.
Exp HP
@Exp HP: Maaf Anda mengalami begitu banyak masalah. Saya mendapatkan ini di sistem Ubuntu 9.10 dan saya tidak punya masalah.
Dijeda sampai pemberitahuan lebih lanjut.
0

Saya menggunakan Nano.

Ubah nama file menjadi nama yang lebih pendek (8.3). Buka di Nano, lalu Alt- Juntuk membenarkan seluruh dokumen. Alt- Ountuk menyimpan. Lalu Alt- Xuntuk keluar. Kemudian ganti nama file kembali ke nama aslinya.

Mungkin terdengar rumit tapi itu menyelamatkan saya banyak waktu selama melakukan manual Enter, Delete, Enduntuk membatasi kolom untuk 90. default Nano ke 72. Aku bisa hidup dengan itu.

Daniel
sumber
2
Apa keajaiban di balik nama file pendek?
Jawa
0

Anda bisa mencoba reformat.

Anda dapat menginstalnya di Debian / Ubuntu, dengan menjalankan sudo apt-get install reformat.

Gunakan seperti ini:

reformat -w 80 -j < mytext.txt

Teks yang dibenarkan akan ditulis ke output standar.

Aliran
sumber