Linux'ta düz metni nasıl yaslayabilirim?


17

Sola ve sağa yaslanmış paragrafları olan bir düz metin (.txt) belgesi oluşturuyorum. Çizgiler tek tip uzunlukta olana kadar boşlukları manuel olarak ekler, gerekirse kelimeleri tire ile keserim. Belgemden bir örnek kullanmak için aşağıdaki gibi bir paragraf:

Bu fantezik topların bazı garip özellikleri vardır, bazıları temiz, bazıları
ilginç ve diğerleri sadece tembel tasarımın göstergesi. Neredeyse hepsi
aynı tasarım kusuru neden oldu: Oyun onlara normal gibi çok davranır
topları.

sonunda şöyle görünecek:

Bu hayali topların bazı garip özellikleri var,
bazıları temiz, bazıları ilginç, bazıları ise sadece
tembel tasarım tive. Neredeyse hepsi
Aynı tasarım hatası: Oyun onlara çok fazla davranıyor
düzenli toplar.

Bunu nasıl yapabilirim?

Boşluk eklemek iyidir (satırların üzerine sözcükleri kırmadan), ancak paragrafın hedef genişliğini (# karakter olarak) kontrol etmem gerekiyor. Yukarıdaki örnek satır başına 53 karaktere yaslanmış, ancak asıl belgemdeki satır genişliği 60 ila 79 arasında değişiyor.

Böyle bir özelliğe sahip bir metin editörü olsaydı da harika olurdu.

Zaten denedim:

  • OpenOffice ve TeX : Metnin görüntülenme şeklini değiştirmek için biçimlendirmeyi kullanırlar.
  • nano'nun Justify komutu sayılmaz çünkü satırları tek biçimli genişlik yapmaz.

Aşağıdaki cevabı kabul ettim, çünkü benim için en uygun olan buydu . Emacs doldurma komutlarını cevaplar arasında kullanımı en kolay buldum ve beyaz boşluk olmayan girintileri bile (# ve // ​​comments gibi şeyler için) nasıl tanıdığını takdir ediyorum. Ancak, diğer cevapların hepsi kendi nişlerini doldurur ve başkalarına bu soruyu ziyaret etmelerini tavsiye ederim.


1
Neden? Gerçekten merak ediyorum. Düz metnin avantajlarından biri, biçimlendirmeden bağımsız olmasıdır ve OpenOffice veya TeX'e tokatlayabilir ve güzel görünmesini sağlayabilirsiniz. Bunun için ne kullanıyorsunuz?
Doug Harris

Ayrıca, yarı akıllı tireleme yapmak için bu yardımcı programı mı arıyorsunuz?
Doug Harris

1
Bunun nedeni, GameFAQ'lar için bir rehber olmasıdır. GameFAQ'lar yalnızca düz metin, TXT belgeleri alır. Tireleme konusunda, bunu tercih ederim, ama bu mutlak bir gereklilik değil.
Exp HP

Yanıtlar:


5

Bunu emac'larda fill-paragraphveya fill-region( doldurma belgeleri ) kullanarak yapabilirsiniz .

Sayısal bir önek bağımsız değişkeni iletmeniz gerekir. Varsayılan doldurma sütunu 70'tir.

Doldurulacak ve yapılacak metni seçin M-3 M-x fill-region.

Doldurma sütununu örnek metniniz için 53 olarak ayarladım ve aldım:

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.

İyi görünüyor. Bu özelliğe bir göz atmak için şu anda emacs paketini kuruyorum.
Exp HP

Tamam, alışılmadık arayüze ve terminolojiye alışmak biraz zaman aldı (en azından bugünün standartlarına göre alışılmadık), ama bu harika. Cxf 53, M-1 Mq. Plan B'den (metni haklı tutan kendi Ruby senaryomu yazmak olurdu) kesinlikle daha kolay ve memnuniyetime göre, girintiyi bile tanıyor ve bunu gerekçelendirirken dikkate alıyor. Güzel.
Exp HP

Doldurma sütununu 53 veya bu konu için istediğim başka bir değere nasıl ayarlayabilirim? Ve şu anda ne olduğunu nasıl kontrol edebilirim?
HelloGoodbye

1
Bu arada, cevabınızdaki bağlantı koptu.
HelloGoodbye

Bağlantıyı güncelledim
Doug Harris

18

ihtiyacın var par

örneğin ubuntu'da almak için:

sudo aptitude install par

haklı göstermek text.txt(80 karakter genişliğinde), tasarruf newtext.txt:

par j1w80 < text.txt > newtext.txt

vim veya gvim'de par kullanmak:

:set formatprg=par\ j1w80

ardından biçimlendirmek istediğiniz metni vurgulayın ve gqkomutu kullanın.

Daha fazla bilgi için bakınız man par


1
Bunu test ettim ve oldukça dokunaklı buldum. Bazen en masum koşullar gibi görünse bile hatalarla sonuçlanır. Emacs komutuyla karşılaştırıldığında, bu kullanılamaz.
Exp HP

Bir örnek verebilir misin? Benim için oldukça kararlı görünüyor.
sml

1
Verdiğiniz komut doğru değil. Olmalı par w80 j1, değil par 80j. Düzenleme: Veyapar jw80
Gandaro

6

fmt eski okul çözümü

Man sayfasından:

fmt [-cmnps] [-d karakter] [-l num] [-t num] [hedef [maksimum] | genişlik | -w genişlik] [dosya ...]

ve

Hedef uzunluğu varsayılan olarak 65 ve hedef uzunluğundan maksimum 10 daha fazladır. Alternatif olarak, tek bir genişlik parametresi bir tire işareti eklenerek veya -w kullanılarak belirtilebilir. Örneğin, fmt -w 72'',fmt -72 '' ve `` fmt 72 72 '' nin hepsi aynı çıktıyı üretir.


Bazı sürümleri fmtbu seçeneklerden birkaçına sahip değildir ve tam gerekçe yapamaz.
sonraki duyuruya kadar duraklatıldı.

Maalesef metni kullanarak tam olarak nasıl gerekçelendireceğinizi açıkça söylemediniz fmt. Ayrıca, Dennis'in dediği gibi, sistemimde man sayfasında bahsettiğiniz gibi bir metin yoktur ve nasıl gerekçelendirileceğini söylemez.
jamadagni

2

İşteparadj tam bir gerekçe ve tireleme yapabilen Perl betiği .

İşte bu diffbir sol kenar boşluğu ekleme desteklemek için yapılan bazı değişiklikler gösterilen:

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

Bu komut:

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

örneğinize çok yakın çıktılar üretir (fazladan boşluklar farklı yerlerdedir).

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.

Ne yazık ki kullanamayacağım harika bir çözüm. Yaklaşık bir ay önce, TeX :: Hyphen'i kullanmak istediğim için Perl'de TeX almaya çalıştım (bu soruya farklı ama ilgili bir sorun için). Keşfettiğim şey, Ubuntu depolarının TeX kütüphanesinin sadece belirli bölümlerinin mevcut olması ve Hyphen bunların arasında olmamasıydı. Perl TeX kütüphanesini manuel olarak yüklemeyi denedim, ancak bu iyi çalışmadı. Perl'i kırdım ve sonraki birkaç saati hasarı geri alarak geçirdim. Başka bir şans vermek istemiyorum. Keşke bu cevap için en azından +1 vermek için yeterli temsilcim olsaydı.
Exp HP

@Expp HP: Çok fazla sorun yaşadığınız için üzgünüm. Bunu bir Ubuntu 9.10 sisteminde aldım ve sorunum yok.
sonraki duyuruya kadar duraklatıldı.

0

Nano kullanıyorum.

Dosyayı daha kısa bir adla (8.3) yeniden adlandırın. Nano'da açın, sonra Alt- Jtüm belgeyi haklı çıkarmak için. Alt- Okaydetmek için. Sonra Alt- Xçıkmak için. Ardından dosyayı orijinal adıyla yeniden adlandırın.

Hantal ses ama kitabını yapıyor üzerinde bana çok zaman kaydedilmiş olabilir Enter, Delete, Endben bununla yaşayabilirim 72'de 90. Nano varsayılan sütunları sınırlamak için.


2
Kısa dosya adının ardındaki sihir nedir?
Jawa

0

Deneyebilirsiniz reformat.

Debian / Ubuntu'ya çalıştırarak kurabilirsiniz sudo apt-get install reformat.

Şöyle kullanın:

reformat -w 80 -j < mytext.txt

Yaslanmış metin standart çıktıya yazılır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.