Jak mogę uzasadnić zwykły tekst w systemie Linux?


17

Tworzę dokument w formacie zwykłego tekstu (.txt), który zawiera akapity wyrównane do lewej i prawej strony. Ręcznie dodaję spacje, w razie potrzeby dzieląc słowa łącznikami, aż wiersze mają jednolitą długość. Aby użyć przykładu z mojego dokumentu, akapit taki jak ten:

Te fantazyjne kule mają pewne dziwne właściwości, niektóre schludne, niektóre
ciekawe, a inne tylko wskazują na leniwy design. Są prawie wszyscy
spowodowane tą samą wadą projektową: gra traktuje je zbyt często jak zwykłe
kulki.

skończy wyglądać tak:

Te fantasmatyczne kule mają dziwne właściwości,
niektóre schludne, niektóre interesujące, a inne tylko indyk-
leniwy design. Prawie wszystkie są spowodowane przez
ta sama wada projektu: gra traktuje ich zbyt podobnie
zwykłe piłki.

W jaki sposób mogę to zrobić?

Można dodawać spacje (bez dzielenia słów na linie), ale muszę kontrolować docelową szerokość akapitu (w # znakach). Powyższy przykład jest uzasadniony do 53 znaków w wierszu, ale szerokość wiersza w moim rzeczywistym dokumencie wynosi od 60 do 79.

Byłoby również świetnie, gdyby istniał edytor tekstu z taką funkcją.

Próbowałem już:

  • OpenOffice i TeX : Po prostu używają formatowania, aby zmienić sposób wyświetlania tekstu.
  • Polecenie justowania nano nie ma znaczenia, ponieważ tak naprawdę nie wyrównuje szerokości linii.

Zaakceptowałem następującą odpowiedź, ponieważ ta była dla mnie najlepsza . Znalazłem najłatwiejsze w użyciu polecenia wypełniania emacsa i doceniam sposób, w jaki rozpoznaje nawet wcięcia niebiałe (dla rzeczy takich jak # i // komentarze). Jednak wszystkie pozostałe odpowiedzi wypełniają swoje własne nisze i polecam innym osobom odwiedzającym to pytanie, aby również je zobaczyć.


1
Dlaczego? Jestem naprawdę ciekawa. Jedną z zalet zwykłego tekstu jest to, że jest niezależny od formatowania i można go spoliczkować do OpenOffice lub TeX i sprawić, że będzie ładnie wyglądać. Jaki jest twój cel?
— Doug Harris

Czy też szukasz tego narzędzia do pół-inteligentnego dzielenia wyrazów?
— Doug Harris

1
Powodem jest to, że jest to przewodnik po GameFAQ. GameFAQ przyjmuje tylko zwykły tekst, dokumenty TXT. Jeśli chodzi o dzielenie wyrazów, wolałbym to, ale nie jest to absolutny wymóg.
— Exp HP

Odpowiedzi:


5

Możesz to zrobić w emacsie, używając fill-paragraphlub fill-region( wypełnij dokumenty ).

Musisz przekazać argument prefiksu numerycznego. Domyślna kolumna wypełnienia to 70.

Wybierz tekst do wypełnienia i wykonaj M-3 M-x fill-region.

Dla przykładowego tekstu ustawiłem kolumnę wypełnienia na 53 i otrzymałem:

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.

To wygląda dobrze. Instaluję teraz pakiet dla emacsa, aby zobaczyć tę funkcję.
— Exp HP

Ok, zajęło mi trochę majsterkowania, aby przyzwyczaić się do nietypowego interfejsu i terminologii (przynajmniej nietypowych jak na dzisiejsze standardy), ale to świetnie. Cx f 53, M-1 Mq. Jest to z pewnością łatwiejsze niż mój Plan B (którym byłoby napisanie własnego skryptu Ruby, który uzasadniał tekst), i ku mojemu zadowoleniu, nawet rozpoznaje wcięcia i bierze to pod uwagę przy uzasadnianiu. Ładny.
— Exp HP

Jak ustawić kolumnę wypełnienia na 53 lub dowolną inną wartość, którą chcę w związku z tym? Jak mogę sprawdzić, co to jest obecnie?
— HelloGoodbye,

1
Nawiasem mówiąc, link w twojej odpowiedzi jest zepsuty.
— HelloGoodbye,

Zaktualizowałem link
— Doug Harris,

18

potrzebujesz par

np. aby pobrać na Ubuntu, wykonaj:

sudo aptitude install par

uzasadnić text.txt(przy szerokości 80 znaków), oszczędzając w newtext.txt:

par j1w80 < text.txt > newtext.txt

aby używać par w vim lub gvim:

:set formatprg=par\ j1w80

następnie zaznacz tekst, który chcesz sformatować, i użyj gqpolecenia.

Aby uzyskać więcej informacji, zobacz man par


1
Przetestowałem to i stwierdziłem, że jest dość drażliwy. Czasami powoduje błędy, nawet w najbardziej niewinnych okolicznościach. W porównaniu z poleceniem emacs jest to bezużyteczne.
— Exp HP

Czy możesz podać przykład? Wydaje mi się to dość stabilne.
— sml

1
Wydane polecenie jest nieprawidłowe. To musi być par w80 j1, nie par 80j. Edytuj: Lubpar jw80
— Gandaro

6

fmt jest oldschoolowym rozwiązaniem

Ze strony podręcznika:

fmt [-cmnps] [-d znaki] [-l num] [-t num] [bramka [maksymalna] | szerokość | -w szerokość] [plik ...]

i

Długość celu domyślnie wynosi 65, a maksymalnie 10 więcej niż długość celu. Alternatywnie, pojedynczy parametr szerokości można określić, dodając do niego łącznik lub używając -w. Na przykład fmt -w 72'',fmt -72 '' i `` fmt 72 72 '' dają identyczne wyniki.


Niektóre wersje fmtnie mają kilku z tych opcji i nie mogą w pełni uzasadnić.
— Wstrzymano do odwołania.

Przepraszamy, ale nie powiedziałeś wyraźnie, jak dokładnie uzasadnić tekst za pomocą fmt. Ponadto, jak powiedział Dennis, w moim systemie strona podręcznika nie zawiera żadnego tekstu, o którym wspominałeś i nie mówi, jak uzasadnić.
— jamadagni

2

Oto skrypt o nazwie Perl,paradj który może wykonać pełne uzasadnienie i dzielenie wyrazów.

Oto diffkilka zmian, które wprowadziłem, aby wesprzeć dodanie lewego marginesu:

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

To polecenie:

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

daje wynik bardzo zbliżony do twojego przykładu (dodatkowe spacje znajdują się w różnych miejscach).

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.

Świetne rozwiązanie, którego niestety nie mogę użyć. Mniej więcej miesiąc temu próbowałem uzyskać TeX w Perlu, ponieważ chciałem użyć TeX :: Hyphen (w przypadku innego, ale powiązanego problemu z tym pytaniem). IIRC, odkryłem, że repozytoria Ubuntu mają dostępne tylko niektóre części biblioteki TeX, a Hyphen nie ma wśród nich. Próbowałem ręcznie zainstalować bibliotekę Perl TeX, ale nie wyszło to dobrze. W końcu złamałem Perla i następne kilka godzin poświęciłem na zniszczenie obrażeń. Niechętnie wypuszczę to jeszcze raz. Jednak chciałbym mieć wystarczającą liczbę przedstawicieli, aby przynajmniej dać +1 za tę odpowiedź.
— Exp HP

@Exp HP: Przepraszam, że miałeś tyle problemów. Mam to w systemie Ubuntu 9.10 i nie mam problemów.
— Wstrzymano do odwołania.

0

Używam Nano.

Zmień nazwę pliku na krótszą nazwę (8.3). Otwórz w Nano, a następnie Alt- Jaby uzasadnić cały dokument. Alt- Oaby zapisać. Następnie Alt- Xaby wyjść. Następnie zmień nazwę pliku z powrotem na pierwotną nazwę.

Może to wydawać kłopotliwe, ale uratował mnie dużo czasu na robienie podręcznik Enter, Delete, Endaby ograniczyć do kolumny 90. Nano domyślnych do 72. Mogę z tym żyć.


2
Jaka jest magia skróconej nazwy pliku?
— Jawa

0

Można spróbować reformat.

Możesz zainstalować go na Debian / Ubuntu, uruchamiając sudo apt-get install reformat.

Użyj tego w ten sposób:

reformat -w 80 -j < mytext.txt

Wyjustowany tekst zostanie zapisany na standardowe wyjście.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.