Wpis z mikrobloga

#word #komputery #vba

Czy macie jakiś sposób jak automatycznie poprawić sierotki w Wordzie?

Chodzi o wiszące spójniki ("i", "a", "w" itd) na końcu wiersza. Ręcznie to się robi tak, że wstawia się twardą spację jak jest taki spójnik na końcu.

Miałem pomysł, żeby zamienić wszystkie "[spacja][spójnik]" na "[twarda spacja][spójnik]". Ale nie mogę tak zrobić, bo tekst mam wyjustowany. A twarda spacje ma stałą szerokość (w Wordzie nie jest dostępna spacja niełamliwa, która by się nie łamała, ale jej rozmiar by się dostosował). Dlatego nie mogę wstawić wszędzie, bo będzie źle wyglądało. I tak nieraz źle wygląda nawet jak się ostatnią taką wstawi (wtedy trzeba wstawić miękki enter).

Jedyne co mi przychodzi do głowy, to napisać makro z pierdyliardem tych wszystkich warunków (wykrywanie końca linii i wstawianie miękkiego entera). Serio nikt takiego czegoś do tej pory nie napisał? Mam do przerobienia 200 stron i ręcznie to trochę zajmie.
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mk321: nie wiem czy to pomoże, bo daaawno z tego nie korzystałem, ale w ustawieniach akapitu (prawy klik po zaznaczeniu tekstu) jest zakładnka bodajże podział strony - a w niej haczyk do zaznaczenia "sierotki i wdowy"; nie pamiętam już jak to działało i czy wiele dawało, ale może spróbuj od tego?
  • Odpowiedz
@Eswemenasja: wyrażeniami regularnymi nie da się obsługiwać końca linii. Bo koniec linii w wyrażeniach regularnych to po prostu nowy akapit. A koniec wiersza w Wordzie jest "płynny" (zależy od wielkości czcionki, strony itd) i wyrażenia regularne tego nie wykrywają.

@fledgeling: nie ma takiej opcji w Wordzie. Jest tylko "Kontrola bękartów i wdów":
https://support.office.com/pl-pl/article/Podzia%C5%82y-wierszy-i-stron-419441d0-0963-4cfe-a79f-57c83b92e5ae#__toc287880668
http://praktykatrenera.pl/automatyczne-rozmieszczanie-tekstu-na-stronach-w-ms-word/
To działa tak, że automatycznie przenosi pojedyncze linie tekstu na kolejną stronę (żeby pojedyncze
  • Odpowiedz
@Eswemenasja: nie jest. Tam wyrażenie regularne podmienia wszystkie kombinacje [spacja][spójnik] na [twarda spacja][spójnik]. Czyli dokładnie to co ja napisałem, że to był pierwszy pomysł i tak nie może być:

Miałem pomysł, żeby zamienić wszystkie "[spacja][spójnik]" na "[twarda spacja][spójnik]". Ale nie mogę tak zrobić, bo tekst mam wyjustowany. A twarda spacje ma stałą szerokość (w Wordzie nie jest dostępna spacja niełamliwa, która by się nie łamała, ale jej rozmiar by się
  • Odpowiedz
@Eswemenasja: na screenie zaznaczyłem na czerwono, że spacja jest nierównomierna. Powinna być równomierna (zaznaczone na zielono). Przy długich wyjustowanych tekstach to robi dużą różnicę. Jak zamieni się wszystkie spójniki w tekście (a nie tylko te na końcu), to robi się sieczka z tekstu. Na Wikipedii nawet o tym piszą:

Unikaniu sierotek służą twarda spacja oraz bardziej elastyczna spacja niełamliwa. W ostateczności możliwe jest łamanie linii przed sierotką (jeśli nie powinna
  • Odpowiedz
@mk321: wydaje mi się, że większość ludzi po prostu zmienia całe zdania, żeby pozbyć się takich "pustych" fragmentów - bo nawet jeśli stworzysz kod wyrównujący, to i tak będzie wyglądać to kiepsko.
Zadałbym to samo pytanie na jakimś formum DTP (goldenline, jeśli to żyje?) żeby dowiedzieć się, jak oni sobie z takim czymś radzą - w sensie zgodnie z zasadami sztuki - no bo raczej nie zmieniają treści książek.

Osobiście chyba wolałbym
  • Odpowiedz
@mk321: Dziwne, u mnie działało :). Może dla tego, że nie spojrzałem, czy działa dobrze. Rozwiązanie jest w takim razie mocno skomplikowane. Trzeba napisać kod VBA, który poleci wszystkie wiersze i wstawi znak następnego wiersza tam gdzie znajdzie na końcu spójnik. A może wyrażeniem regularnym zamiast spacji nierozdzielającej wstawiać nowy wiersz?
  • Odpowiedz