Lista winnt@man.lodz.pl
[Lista archiwów] [Inne Listy]

Re: [WINNT] Notatnik a rzeczywiste zawijanie wierszy po X liniach

To: winnt@man.lodz.pl
Subject: Re: [WINNT] Notatnik a rzeczywiste zawijanie wierszy po X liniach
From: "Grzegorz Niemirowski" <grzegorz@grzegorz.net>
Date: Fri, 5 Jun 2020 22:03:10 +0200
jedrek <wonzespamem@w.on> napisał(a):
Czym zawijać linie jak jakieś "opowiadanie" tekstowe jest jednym ciągiem pisane?
Często gdy jakiś opis np. ze strony www się kopiuje i wkleja do
notatnika,  to otrzymujemy całą treść w jednej długiej linii (nie chodzi
o to, że sobie  włączę w notatniku funkcję automatyczne zawijanie
wierszy). Jest jakiś prosty darmowy automat, który nam z takiego
długiego tekstu zrobi tekst gdzie ładnie wstawi znak końca linii i zrobi
nam to "opowiadanie" w  n-liniach?

Pewnie jest sporo takich automatów. Zawsze też można napisać swój. Przykładowy skrypt w PowerShellu:

$text = gc $args[0]
$maxWidth = 80
$paragraphs = foreach ($paragraph in $text -split '(?:\r?\n){2,}') {
   $stringBuilder = New-Object System.Text.StringBuilder
   $column = 0
   foreach ($word in $paragraph -split '\s+') {
       if ($column -gt 0) {
           if ($column + $word.Length + 1 -gt $maxWidth) {
               $null = $stringBuilder.Append("`r`n")
               $column = 0
           } else {
               $null = $stringBuilder.Append(' ')
               $column++
           }
       }
       $null = $stringBuilder.Append($word)
       $column += $word.Length
   }
   $stringBuilder.ToString()
}
$newText = $paragraphs -join "`r`n"
$newText

Czy znak końca linii jest równoważny ze wstawionym ENTER czy raczej ENTER
na końcu linii to zwykła prowizorka i tak się nie powinno robić?

Enter to jest taki klawisz na klawiaturze. Wstawia on jeden lub więcej znaków oznaczających koniec linii. Na Windowsie zakończenie linii to dwa znaki, na Linuksie jeden.

Czyli tam gdzie chcemy złamać linię stukamy ENTER, czy raczej należy to robić w jakiś bardziej elegancki sposób?

Plik tekstowy sam z siebie jest prowizorką. Jak inaczej chcesz łamać linie niż znakiem końca linii? W Internecie (na stronach WWW) lub innych miejscach nie łamie się linii na sztywno. Po prostu tekst jest dostosowywany do szerokości kontenera w momencie wyświetlania. Jeśli jest jakiś bardziej zaawansowany edytor, to klawisz Enter wstawia nowy akapit a nie nową linię. Dlatego pytanie po co chcesz zawijać linie na stałe. Opowiadania lepiej trzymać w formacie bez zawijania, będzie uniwersalnie. Jak to będzie bardzo potrzebne, to najwyżej zrobisz nowy plik z wersją zawiniętą.

Robiłem nieśmiałą próbę w dokumencie DOC i liczyłem naiwnie, że wklejenie takiego gołego tekstu z notatnika do DOC-a i zapisanie go, a potem otworzenie i skopiowanie z tak zapisane DOC-a tego tekstu ponownie do
pliku  TXT ładnie już linie połamie.
Ale się przeliczyłem :)

Nie mam pojęcia na co liczyłeś :)

--
Grzegorz Niemirowski
https://www.grzegorz.net/

<Pop. w Wątku] Aktualny Wątek [Nast. w Wątku>