Pozbywanie się wiszących spójników w OpenOffice.org
Informacje o wpisie.
Opublikowano 28 listopada 2009 o 23:11:31 w kategoriach: Miniblog, Poradniki, Typografia, Zerojedynka.
Jak wiadomo (a jeśli jeszcze nie wiadomo, to już wiadomo), w opublikowanym tekście nie mogą się znaleźć wiszące spójniki, czyli tzw. sieroty1. Niestety, OpenOffice.org nie udostępnia żadnego sposobu na ich automatyczne się pozbycie, poprzez przeniesienie do następnego wiersza (jeżeli się mylę, dajcie znać w komentarzu). Nie oznacza to jednak, że nie da się tego zrobić — a ten, krótki, tekst opisuje wypracowaną przeze mnie metodę.
Polega ona na wyszukaniu w tekście każdej litery otoczonej z obu stron spacją, a następnie zastąpienie drugiej z nich spacją niełamliwą (non-breaking space), co spowoduje przyklejenie takiej litery do następnego wyrazu.
Niestety, chociaż standardowa wyszukiwarka dostarczana wraz z Open Office potrafi wyszukiwać tekst na podstawie wyrażenia regularnego, w zastąpieniu nie potrafi wstawiać odwołań wstecznych (backreferences) do fragmentów znalezionego ciągu znaków. Na szczęście potrafi to Alternative Find & Replace, którego trzeba wpierw zainstalować.
(Dla tych którzy nigdy nie instalowali rozszerzeń do OOo: po wejściu na podaną stronę należy kliknąć przycisk „Get It!” i zapisać plik gdziekolwiek na dysku. Następnie w OOo należy wybrać Narzędzia -> Menedżer Rozszerzeń. Po kliknięciu Dodaj… należy wybrać zapisany wcześniej plik .oxt po czym wybrać Otwórz. Następnie może być konieczne zaakceptowanie warunków licencyjnych programu. Rozszerzenia będzie można użyć po ponownym uruchomieniu OOo.)
Po wybraniu rozszerzenia z menu (Edycja -> Alt. Find & Replace…) pojawi się odpowiednie okno. W pierwszym polu tekstowym należy wpisać (\l) (spacja, otwarcie nawiasu, odwrócony ukośnik, literka małe „L”2, zamnięcie nawiasu, spacja) zaś w drugim \1\S (spacja, odwrócony ukośnik, jeden, odwrócony ukośnik, litera wielkie „S”). Potem jeszcze tylko w Options zaznaczyć Regular expressions i można wybrać Replace all. Po pewnym czasie (zależnym od długości dokumentu; niestety rozszerzenie jest dość powolne i przetwarzanie nawet krótkich dokumentów może trwać kilkanaście sekund) wszystkie jednoliterowe wyrazy zostaną „przyklejone” do wyrazów następujących po nich, co powinno skutecznie powstrzymać je przed występowaniem na końcu wiersza.
Jak ktoś chce, może jeszcze zapisać sobie operację jako batch. Wtedy można ją również podpiąć pod dowolnie wybrany skrót klawiszowy.
^ 1 W polskiej tradycji typograficznej „sierotami” nazywa się pojedyncze litery znajdujące się na końcu wiersza. W angielskiej tym samym określeniem (oprhan) nazywa się pierwszy wiersz akapitu znajdujący się na końcu strony. W Polsce z kolei ten sam wiersz określa się mianem „szewca”. Gdy Open Office proponuje „Kontrolowanie sierot” (PPM -> Akapit -> Przepływ tekstu), tak naprawdę ma na myśli szewców.
^ 2 Zapis \l nie jest rozpoznawalny w żadnym znanym mi systemie wyrażeń regularnych. Oznacza on „dowolną literę”. Zazwyczaj na określenie dowolnej litery używa się zapisu [:alpha:] (jest to zakres znaków, definiowany przez locale określone w zmiennej LC_CTYPE). Należy zauważyć że zapis [a-z] nie określa dowolnej litery, a dowolną literę z alfabetu łacińskiego. Taki zapis, w przeciwieństwie do [:alpha:], nie dopasuje się do występujących w danym języku znaków diakrytycznych.
Komentarze
W twoim wpisie już w pierwszej linijce jest wiszący spójnik. Ah ironio ;)
U siebie na blogu ten problem rozwiązuję prostym snippetem, który dodaje w odpowiednich miejscach (tak, wiem, mogłem to zrobić unikodowym znakiem niełamliwej spacji, shame on me).
Z sierotami i wdowami można sobie poradzić ustawiając style dla tekstu - są tam specjalne ustawienia dla ww.
O matko, a po jakąż cholerę do zestrzelenia muchy używać barbety okrętowej? Ja robię tak: piszę tekst - oglądam - po stwierdzonych sierotach ręcznie wpisuję Ctrl-Shift-spacja, kasując normalną spację, i po krzyku.
Zasadnicza uwaga: w polskich normach ortograficznych nie ma żadnego zapisu zabraniającego pozostawiania "wiszących spójników" (co od jakiegoś czasu poświadcza również miarodajny słownik ortograficzny PWN). Owszem, niektóre wydawnictwa jeszcze ich unikają, ale wynika to raczej z pewnych przekonań estetycznych. Nie ma nic gorszego niż ręczne dostawianie spacji, by pozbyć się takich spójników - po otwarciu dokumentu na innym komputerze lub po wprowadzeniu drobnej zmiany w tekście całość może się straszliwie posypać.
torero: Twój sposób sprawdza się w przypadku eksportu do PDF, jeśli dokument będzie później edytowany lub słowa będą się swobodnie przesuwać zależnie od wielkości papieru to lepiej nie zmieniać ręcznie wybranych spacji na twarde odpowiedniki.
Podoba mi się to rozwiązanie z regexpem. Szkoda, że sam OO.org nie udostępnia takiej funkcjonalności. Szczególnie, ze do LaTeX-a perlowy skrypt dodający tyldy we właściwe miejsce istnieje już od jakichś 10 lat (ten na bazie awk ma jakieś 13) ;]
schem: Ale te "sieroty" i "wdowy" z ustawienia stylu nie dotyczą wiszących spójników.
@Zal: daj linka do tego skryptuuuu... kthx :)
@Caladan: Szukaj porzadki.pl :D
Ja natomiast korzystam z wersji dostępnej w repo mojej pracy magisterskiej. Diffa nie robiłem, więc nie wiem, czy się czymś różnią ;>
@Zal i @Caladan
Jak ktoś edytuje pliki TeXowe Vim-em, to warto doinstalować sobie zestaw makr „LaTeX-suite”. Tyldy dodają się same zgodnie z językiem ustawionym w preambule dokumentu. Prócz tego wiele innych udogodnień.
A twarde spacje można robić wszędzie tam gdzie trzeba, bez żadnych dodatków, jeśli się tylko mapę klawiszy podrasuje.
tja, a ma ktos motyw z tym, że wszstkie spójniki się usuwają przez to rozszerzenie ? strasznie irytujace to jest.....