Dawid Weiss
PlTypo: poprawianie interpunkcji Worda
http://www.cs.put.poznan.pl/dweiss/xml/projects/pltypo/index.xml
PlTypo

Ten projekt powstał w wyniku frustracji wielokrotnymi próbami zmuszenia Worda do respektowania reguł polskiej interpunkcji (przenoszenia spójników z końca wiersza na początek następnego).

Problem może wydawać się błahy, bowiem nietrudno jest napisać makro, które zamieni wszystkie wystąpienia spacji przed pojedynczymi spójnikami na tak zwane "twarde spacje", czyli znak, który nie posiada wizualnej reprezentacji, a Word nie interpretuje go jako spacji, więc również nie łamie przed nim wiersza.

Wszystko byłoby dobrze, gdyby nie to, że twarde spacje w sposób tragiczny wpływają na estetykę dokumentów justowanych do obu marginesów. Powstają wtedy nieregularne światła między wyrazami, które poza innymi atrybutami, przede wszystkim denerwują oko autora dokumentu (zob. poniżej).

Przykład złych świateł w przypadku zastosowania twardych spacji

Konsultacja u Adama Twardocha [outlink] okazała się bardzo pomocna i w przeciągu paru godzin powstał skrypt, który jest dostępny poniżej.

Skrypt ma jedynie usprawnić pracę z Wordem. Każdy, kto korzysta z tego programu często (bo, na przykład, musi), na pewno wie, że przed wydrukiem warto spojrzeć na to, co się ma przenieść na papier.

UWAGA. Ten skrypt można dowolnie kopiować i modyfikować, jednak jeśli modyfikacje mają na celu ulepszenie jego działania, NALEŻY przesłać je na adres autora w celu upublicznienia dla wszystkich chętnych (inaczej: nie należy być sobkiem :)
Jak to działa?

Skrypt poszukuje wystąpień pojedynczych liter, odseparowanych z obu stron spacjami. Następnie, jeśli litera występuje na końcu wiersza, wstawiany jest znak wymuszenia złamania wiersza (^l), oraz jest on formatowany specjalnym stylem ("lineBreakStyle"), by można było operację odwrócić.

Usuwanie sztucznego formatowania polega na zlalezieniu wystąpień znaku ^l występującego w stylu "lineBreakStyle". Znaki takie są zamieniane z powrotem na spacje.

Co można jeszcze ulepszyć?

Jest parę rzeczy, których skrypt nie uwzględnia.

  • Implementacja w VB jest mojego autorstwa; nie czuję sie nawet nowicjuszem w tym języku.
  • Przetestowano jedynie pod Wordem XP
  • Nie będą poprawnie przenoszone zbitki dwóch spójników, np: "Wilk syty, a i owca cała" - gdyby "i" było na końcu wiersza, zostałoby przeniesione, lecz pozostałoby wtedy wiszące "a". Można sobie poradzić z tym fantem przez tylukrotne uruchomienie skryptu, aż nie będzie żadnych wprowadzonych zmian.
  • Ekran podczas szukania się odświeża, co znakomicie spowalnia wykonanie (na dłuuuugich dokumentach). Możnaby zaimplementować wyłączanie odświeżania.
  • Spójniki po których występuje znak interpunkcyjny nie są przenoszone: "Wilk był syty a, co warto wspomnieć, i owca ostała się cała". Gdyby "a" występowało na końcu linii, nie zostałoby przeniesione. Poprawienie wymagałoby detekcji różnych znaków interpunkcyjnych, zamiast spacji po pojedynczej literze.
  • Dopisać fragment kodu w VB żeby makra instalowały się pod przyciskami/ w menu i żeby można było dodać je jako "dodatek" Worda.

(c) Dawid Weiss. All rights reserved unless stated otherwise.