Strona 1 z 2
spacja nierozdzielająca ("twarda")
: pn cze 01, 2009 7:40 pm
autor: grzegi44
Czy ktoś natnął sie na makro, które zamieniałoby zwykłe spacje po spójnikach "i" "a" itp oraz po przyimkach typu "do" "na" "za" "u" "w"?
Chodzi o to by nie zostawały na końcu wiersza
Re: spacja nierozdzielające ("twarda")
: pn cze 01, 2009 8:38 pm
autor: milek_pl
Nie ma takiego, ale można np. zmodyfikować rozszerzenie Predlogi:
http://extensions.services.openoffice.o ... t/Predlogi
Albo czeskie makro Vlnka:
http://www.openoffice.cz/doplnky/prepra ... -verze-0-4
To drugie jest chyba nawet bardziej rozbudowane i powinno być stosunkowo łatwo zrobić polską wersję.
Re: spacja nierozdzielające ("twarda")
: pn cze 01, 2009 9:32 pm
autor: mellonedain
Niestety nie znam czeskiego i ciężko jest mi ocenić to drugie makro. Jest na extensions site?
Kiedyś napisałem sobie takie makro, ale ma wiele błędów, tzn. robi to zawsze i bezwzględnie, a w OOo twarda spacja miała wtedy zawsze tę samą szerokość i efekt nie zawsze był zgodny z zamierzonym.
Jeżeli potrzebujesz to mogę go wygrzebać z mojego archiwum. Swoją zasadę działania opierał na słowniku. I chyba nawet pozwalał na odwrócenie operacji, ale tę kwestię musiałbym sobie przypomnieć.
Re: spacja nierozdzielające ("twarda")
: pn cze 01, 2009 10:05 pm
autor: milek_pl
Nie jest, ale można je ściągnąć z podanego adresu. Rzuciłem okiem, dostosowanie do polszczyzny to kwestia kilkunastu minut. Kod klarowny, w Pythonie. Mógłbym to dostosować, ale nie dziś - może za tydzień lub dwa.
Jeśli chodzi o szerokość spacji, to ono wstawia chyba wąską twardą spację (są tam jakieś komentarze na ten temat). Bardziej inteligentne makro mogłoby zmieniać tylko spacje w okolicach miękkiego końca wiersza, żeby nie było problemów tego rodzaju, ale wtedy trzeba by inaczej tekst przetwarzać (na pewno nie wystarczy normalne zastępowanie tekstu).
Aha, na extensions site jest jeszcze makro do spacji nierozdzielających w języku francuskim - nie patrzyłem na kod:
http://extensions.services.openoffice.o ... /insecable
Re: spacja nierozdzielające ("twarda")
: wt cze 02, 2009 8:36 am
autor: heillos
grzegi44 pisze:Czy ktoś natnął sie na makro, które zamieniałoby zwykłe spacje po spójnikach "i" "a" itp oraz po przyimkach typu "do" "na" "za" "u" "w"?
Chodzi o to by nie zostawały na końcu wiersza
No nie wiem czy to dobry pomysł, bo spacja niełamliwa jest we Writerze źle zrobiona i jest niestety również nierozciągliwa
i jej wstawianie wszędzie, jak to się robi w LaTeXu, jest bardzo często bez sensu
Re: spacja nierozdzielające ("twarda")
: wt cze 02, 2009 6:39 pm
autor: grzegi44
Dziękuję wszystkim za szybką reakcję, może coś się da dostosować, niestety jestem tylko użytkownikiem, nieco bardziej zaawansowanym jak mniemam.
Przejrzałem podane linki, francuskie rozszerzenie nie nadaje się, czeskie wydaje sie super po zrzutach ekranu, nie znam czeskiego ale domyslam sie, że można wybrac wstawianie twardej spacji po jednoliterowych, dwuliterowych, przed %, jednostkami miary. Byłoby wspaniale jakby to ktoś zaadoptował do języka polskiego.
Re: spacja nierozdzielające ("twarda")
: wt cze 02, 2009 9:20 pm
autor: Jan_J
Tak, Vlnka wygląda solidnie.
Dla użycia od przypadku do przypadku pozostaje całkiem skuteczne użycie formularza Znajdź/Zamień, z wyrażeniami regularnymi. Tzn. zautomatyzowana praca ręczna. W razie zainteresowania podeślę dalsze szczegóły.
Re: spacja nierozdzielające ("twarda")
: śr cze 03, 2009 12:59 am
autor: grzegi44
Jan_J pisze:Tak, Vlnka wygląda solidnie.
Dla użycia od przypadku do przypadku pozostaje całkiem skuteczne użycie formularza Znajdź/Zamień, z wyrażeniami regularnymi. ...
Dla jedno lub dwustronicowego dokumentu i literek i, a, w, można sie "pobawić", mam to opanowane, ale dla dalszych typu na, do , za itd i przy większej ilości stron to zabiera dużo czasu.
Re: spacja nierozdzielające ("twarda")
: sob cze 06, 2009 9:20 pm
autor: m_gol
Problem w tym, że rozwiązanie z użyciem twardej spacji jest... tragiczne. Cały problem z tym rodzajem spacji polega na tym, że jest ona traktowana jako pojedynczy, zwykły znak. "O to przecież chodzi", powiecie. No nie całkiem o to. Spacja musi mieć zdolność do rozszerzania się, gdy musi (przy justowanym tekście). Twarda spacja zawsze ma natomiast stałą szerokość. Jeśli chcę, by tekst wyglądał ładnie, muszę nie tylko znajdować linie kończące się na 'w', 'a' itp., ale również wstawiać tyle twardych spacji, by to jakoś wyglądało. A potem wprowadzę jedną zmianę do dokumentu i znowu jest bieda.
Nie dałoby się tego jakoś zautomatyzować? Dam sobie głowę uciąć, że to jeden z najszerszych problemów, na jakie ludzie się w życiu natykają...
Innymi słowy, potrzeba nam spacji nierozdzielającej, NIE zaś spacji twardej -- ta druga ma stałą szerokość, co jest tutaj wadą. LaTeX sobie z tym radzi -- nierozdzielająca spacja to "~", twarda to "\ ".
Re: spacja nierozdzielające ("twarda")
: sob cze 06, 2009 11:15 pm
autor: mellonedain
Re: spacja nierozdzielające ("twarda")
: sob cze 06, 2009 11:27 pm
autor: Jan_J
Kodowi się przyjrzę. Warto, niezależnie czy spacja klejąca jest elastyczna, czy nie.
Między liczbą a znakiem stopnia lub procenta nie powinno w ogóle być spacji.
Długie (wielosylabowe, a nawet tylko wieloliterowe) przyimki i spójniki -- czy to nie jest przedobrzenie? muszę przejrzeć wydawnictwa poprawnościowe, ale z tych co mam teraz pod ręką, żadne nie wskazuje takich przypadków. Podobnie zaimki: ja, ty, my itd. są samodzielnymi słowami i nie trzeba ich z niczym kleić.
Stosunkowo często spotykane, a nie ujęte przypadki:
str. przed cyfrą
godz. przed cyfrą
rok, roku, rokiem itp. przed cyfrą
między słowem a itd.|itp.
Re: spacja nierozdzielające ("twarda")
: sob cze 06, 2009 11:40 pm
autor: mellonedain
Miałem wątpliwości czy ująć co najmniej w związku z 30% całej tej listy, ale lepiej je wykluczyć od razu i już do tego nie wracać.
str. przed cyfrą
godz. przed cyfrą
Istotnie brakuje. Trzeba dodać nową regułkę. Możemy na forum zbudować listę, a ja w przyszłym tygodniu wprowadzę to w kod.
Może ma ktoś propozycję na inną nazwę rozszerzenia? Możemy poszaleć w przeróbkach
Re: spacja nierozdzielające ("twarda")
: ndz cze 07, 2009 12:11 pm
autor: quest-88
Zmień rozszerzenie na .oxt i dodaj autorskie logo, tak by nie gryzło się z pierwowzorem.
Re: spacja nierozdzielające ("twarda")
: ndz cze 07, 2009 4:32 pm
autor: Jan_J
Jak to robią w innych systemach:
Skutecznie, lecz minimalistycznie.
A. Wolański,
Edycja tekstów, PWN 2008, str. 24--25 wymienia m.in. zasady regulujące podział tekstu pomiędzy wiersze na znaku spacji. Nie załączam dosłownego cytatu, tylko przygotowany przeze mnie wyciąg:
[blockquote]Nie wolno rozdzielać:
- liczb rozdzielonych na grupy cyfrowe, np. 1 000 000
- liczb między którymi stoi znak proporcji, np. 1 : 25 000
- oznaczeń miar po liczbie, np. 13 km
- skrótów ze znakiem /, np. m/s
- słowa tworzącego sensowną całość z liczbą po niej następującą, np. rozdział 8
- oznaczenia porządkowego i treści, np. a. chleb, b. mleko
- tekstu i skrótu itp.., itd, i podobnych
- skrótu odnoszącego się do następującego po nim tekstu, np. tj. coś tam, tzn. coś
- elementów daty w notacji cyfrowej, np. 13 IV 1955
Nie należy rozdzielać:
- w wierszach o długości powyżej 40 znaków: jednoliterowych spójników (a, i, o, u, w, z) i następujących po nich słów
[/blockquote]Pominąłem reguły dotyczące innych aspektów przenoszenia, bo są tu bezprzedmiotowe.
Ciekawe, ale nie ma nic o przyimkach, takich jak na, po, przed. Tu bym dał możliwość klejenia, ale tylko tych jednosylabowych. Natomiast klejenie dłuższych jest nienaturalne, bo preferuje dzielenie wyrazów, które jest zabiegiem bardziej drastycznym od dzielenia na spacji.
// edit date=2009.06.23
Z kolei Donald E. Knuth w sławnym
TeXbook-u (WNT 2005) wymienia na str. 109--111 (podobnie jak poprzednio nie cytuję, tylko załączam luźny wyciąg; także niektóre przykłady są moje):[blockquote]
- odsyłacze do nazwanych części dokumentu, jak Rozdział~12, Twierdzenie~1.2 itp., ale Strony 5 i~6;
- imiona jednej osoby i nazwiska wieloczłonowe pisane ze spacją (komentarz DEK: lepiej w takim wypadku podzielić słowo, niż złamać wiersz na spacji);
- symbole matematyczne + rzeczownik, liczba + miano: rozmiar~d, szerokość~w, ciąg o długości~3;
- między symbolami w ciągach znaków: 1,~2 lub 3, a,~b i~c;
- przy związku symbolu z przyimkiem: z~x, od~A do~B;
- w słownych wyrażeniach związków ilościowych: mniej niż~N, dla każdego~K;
- po symbolach wyliczeń: a.~pierwszy, b.~drugi, c.~trzeci.
[/blockquote]Okoliczności wskazane przez Knutha wiążą się bardziej z semantyką tekstu niż z lokalną tradycją typograficzną, i nie zawsze dają się wykryć automatycznie.
PS.
Dot. elastyczności znaku nbsp w OOoWriter: wiedziałem, że kiedyś wiedziałem. I rzeczywiście:
http://www.openoffice.org/issues/show_bug.cgi?id=89129
Re: spacja nierozdzielająca ("twarda")
: pt cze 19, 2009 12:56 pm
autor: Jan_J
Ba! wydaje się, że rozwiązanie istnieje, przynajmniej z punktu widzenia praktyki.
Znak ,,nonbreaking space'' (U+00a0) istotnie ma we Writerze stałą szerokość, podczas gdy ,,space'' (U+0020) jest elastyczny.
Mało kto wie/pamięta o znaku ,,word joiner'' (U+2060), będącym zerowym odstępem z zakazem podziału.
Kombinacja <słowo>U+2060U+0020<słowo> oddziela słowa elastycznym niełamliwym odstępem -- i o to chodzi.
Oczywiście ten sposób równie dobrze nadaje się do oskryptowania, jak tradycyjny.
Jeszcze tylko zrobić skrót klawiaturowy, dajmy na to <Ctrl><Spacja> (jako że nbsp jest wyzwalana przez <Ctrl><Shift><Spacja>), i już można używać na codzień.
Aha: dialog Wstaw/znak specjalny daje dostęp tylko do podzbioru Unikodu, i znaku wj tam nie znajdziecie.
Pytanie, czy znak nbsp powinien być elastyczny, to zupełnie inna sprawa. Przed zajęciem stanowiska odsyłam do lektury dokumentacji Unikodu.
W ogóle, tabele Unikodu warto przejrzeć sobie od czasu do czasu. To kształci.
Re: spacja nierozdzielająca ("twarda")
: pt cze 19, 2009 1:57 pm
autor: mellonedain
Spróbuję to zaimplementować. Chciałem podobnego rozwiązania użyć w wspominanym przeze mnie makrze, ale mi nie wyszło. Basic jest uboższy. Może Python mi w tym pomoże
Re: spacja nierozdzielająca ("twarda")
: pt cze 19, 2009 3:26 pm
autor: Dynia
Spróbowałem skorzystać (z U+2060U+0020), ale stwierdzam, że u mnie działa to trochę niedeterministycznie. To znaczy w niektórych przypadkach mi się jednak łamie (choć w większości działa jak powinno) i, przynajmniej na razie, nie jestem tu w stanie dostrzec jakiejś reguły, która by tym rządziła.
OO310m11, Windows Vista Business SP1
Re: spacja nierozdzielająca ("twarda")
: pt cze 19, 2009 6:38 pm
autor: m_gol
A czy aby tego word joinera nie trzeba użyć po obu stronach spacji? Bo tak na logikę, to jak się wpisze tylko z jednej, to spacja może zostać rozdzielona z drugiej strony.
Re: spacja nierozdzielająca ("twarda")
: pt cze 19, 2009 9:57 pm
autor: Jan_J
Z
http://unicode.org/versions/Unicode5.0.0/ch16.pdf, str 534:
Word Joiner. U+2060 word joiner behaves like U+00A0 no-break space in that it indicates the absence of word boundaries; however, the word joiner has no width. The function of the character is to indicate that line breaks are not allowed between the adjoining characters, except next to hard line breaks. For example, the word joiner can be inserted after the fourth character in the text “base+delta” to indicate that there should be no line break between the “e” and the “+”. The word joiner can be used to prevent line breaking with other characters that do not have nonbreaking variants, such as U+2009 thin space or U+2015 horizontal bar, by bracketing the character.
The word joiner must not be confused with the zero width joiner or the combining grapheme joiner, which have very different functions. In particular, inserting a word joiner between two characters has no effect on their ligating and cursive joining behavior. The word joiner should be ignored in contexts other than word or line breaking.
@m_gol
Chyba masz rację, z tym że standardowo łamanie wiersza następuje
przed spacją po słowie. Pozwolenie na podział
między spacją a słowem może w ogóle nie być dopuszczane w niektórych systemach. Może też jest tak, że algorytm dopuszcza taki podział w szczególnych (zaplanowanych lub nie) sytuacjach, co przynajmniej częściowo mogłoby tłumaczyć wspomnianą przez Dynia ,,niestabilność''.
@m_gol
Offtopowe sprostowanie: w LaTeX-u ~ wstawia elastyczną spację klejącą, a \ elastyczną spację zwykłą. Sztywne spacje wprowadzasz np. przez \hspace, \hskip, \mbox, \kern ze sztywną długością.
Re: spacja nierozdzielająca ("twarda")
: wt cze 23, 2009 11:56 am
autor: rofrol
Jak zamieniłem rozszserzenie z zip na oxt to pisało o jakiś błędach w menedżerze rozszerzeń.
Re: spacja nierozdzielająca ("twarda")
: śr cze 24, 2009 6:44 pm
autor: grzegi44
rofrol pisze:Jak zamieniłem rozszserzenie z zip na oxt to pisało o jakiś błędach w menedżerze rozszerzeń.
Nie trzeba zmieniac rozszerzenia!
Re: spacja nierozdzielająca ("twarda")
: śr cze 24, 2009 6:57 pm
autor: grzegi44
mellonedain pisze:To co piszesz jest słuszne. Daje okazję do zgłoszenia tego developerom OOo jako nową cechę, o którą warto powalczyć. Jednak może minąć trochę czasu zanim wszystko zostanie zrobione. dlatego na bazie Vlnka zbudowałem nowe rozszerzenie. Nowe ze względu na to, że ktoś może chcieć używać oryginału do pracy z językiem czeskim.
Jak widać powyżej, już w tej chwili jest tego sporo. Błędy i uwagi językowe proszę zgłaszać w dalszej części tematu.
czy można by dodać jeszcze do wyboru przed nawiasem otwierajacym a poprzedzającym wyrazem.
Często pisze teksty gdzie odsyłam do oznaczeń na rysunku. Na pewno przyda sie piszacym teksty techniczne.
Re: spacja nierozdzielająca ("twarda")
: ndz cze 28, 2009 4:51 pm
autor: mellonedain
grzegi44 pisze:
czy można by dodać jeszcze do wyboru przed nawiasem otwierajacym a poprzedzającym wyrazem.
Często pisze teksty gdzie odsyłam do oznaczeń na rysunku. Na pewno przyda sie piszacym teksty techniczne.
Oczywiście, można.
Odnośnie kombinacji wszelkich zamienników do twardej spacji: przetestowałem i muszę niestety odrzucić ten sposób bo w OOo (przynajmniej u mnie) nie widziałem oczekiwanego efektu. Może są inne propozycje?
Re: spacja nierozdzielająca ("twarda")
: czw paź 22, 2009 9:13 pm
autor: Jan_J
Odgrzewam starty temat, bo właśnie próbowałem dociec dlaczego klejenie za pomocą \u2060\u0020 nie zawsze działa. Wyniki są zadziwiające.
Przy dostatecznie szerokich spacjach w wierszu fraza "litera\2060\spacja", o ile znajdzie się na końcu, jest przerzucana do następnego wiersza. Dodawanie spacji, czy też skracanie słów w wierszu sprawia, że na spację przypada mniej wolnego miejsca. W pewnym momencie skraca się ona jeszcze bardziej, i fraza nagle ,,wskakuje'' z początku następnego wiersza na koniec bieżącego.
Zatem końcówka: litera + word joiner jest wtłaczana do wiersza niejako ,,na siłę'' wtedy, kiedy jest on już bliski przepełnienia. Przy tym joiner kończący wiersz wcale nie jest zerowej szerokości. Podejrzewam bug w systemie podziału akapitów na wiersze.
W załączeniu durny dokument z tą wadą -- spróbujcie dodać spację w drugim wierszu.
Re: spacja nierozdzielająca ("twarda")
: czw paź 22, 2009 11:10 pm
autor: m_gol
Jan_J pisze:W załączeniu durny dokument z tą wadą -- spróbujcie dodać spację w drugim wierszu.
Potwierdzam u siebie (Ubuntu 9.10, OOo 3.1).
Re: spacja nierozdzielająca ("twarda")
: czw lis 05, 2009 11:09 pm
autor: Jan_J
To chyba będzie tu (dotyczy wersji OOo3.2beta, a ściślej: jej kodu źródłowego OOO320_m2): plik /i18npool/source/breakiterator/breakiterator_unicode.cxx, metoda BreakIterator_Unicode::getLineBreak(), wiersze 405--420. Jest to jedyne miejsce, gdzie znak x2060 jest jawnie wykorzystywany przy dzieleniu tekstu na wiersze. I wygląda na (doraźną?) łatę.
IMHO jedyną skuteczną drogą rozwiązania tego problemu jest rewizja algorytmu wymienionej funkcji, a nie wykluczone, że także czegoś więcej.
Re: spacja nierozdzielająca ("twarda")
: pn mar 22, 2010 6:57 pm
autor: kszulca
Witam Panowie,
czytając ten, niesamowicie istotny dla większych dokumentów temat, odnoszę wrażenie, że nie udało się Wam znaleźć pełnego rozwiązania problemu. Ale znaleźliście wyjście za pomocą stworzonego makra. Czy mógłbym prosić o zamieszczenie ostatecznej - najnowszej jego wersji.
A może od czasu ostatniego postu coś się w tej kwestii zmieniło?
Pozdrawiam
Re: spacja nierozdzielająca ("twarda")
: czw cze 17, 2010 12:27 pm
autor: mojo137
kszulca pisze:Witam Panowie,
czytając ten, niesamowicie istotny dla większych dokumentów temat, odnoszę wrażenie, że nie udało się Wam znaleźć pełnego rozwiązania problemu. Ale znaleźliście wyjście za pomocą stworzonego makra. Czy mógłbym prosić o zamieszczenie ostatecznej - najnowszej jego wersji.
A może od czasu ostatniego postu coś się w tej kwestii zmieniło?
Pozdrawiam
Dołączam się do tej prośby. To bardzo ważne niedociągnięcie w Openoffice, rozwiązanie tego problemu przywróciłoby uśmiech na wielu twarzach
Pozdrawiam
Re: spacja nierozdzielające ("twarda")
: wt cze 22, 2010 9:39 am
autor: Sei
Jan_J pisze:(...)Między liczbą a znakiem stopnia lub procenta nie powinno w ogóle być spacji.(...)
Tutaj chyba tak prosto nie jest i może być problem z pełną automatyzacją. Z tego co wiem jeśli stopień oznacza np. stopień Celsjusza to spacja powinna być. Tak jak przed każdą jednostką (7 mm, 25 oC). Jeśli stopień dotyczy kątów to spacji nie powinno być.
Chciałem się jeszcze dopytać o problem z uruchomieniem skryptu z załącznika do
tego postu. Po przegraniu go do katalogu skryptów i próbie uruchomienia otrzymuję błąd (zrzut ekranu z załączniku).
Re: spacja nierozdzielająca ("twarda")
: wt cze 22, 2010 10:52 am
autor: Jan_J
Z pełną automatyzacją zgadza się: może być duży problem. Donald Knuth przytacza w TeXBook-u kilka ciekawych sytuacji, ale z działki anglojęzycznej.
Same stopnie kątowe (°, u+00B0), minuty (prime, u+2032), sekundy (double prime, u+2033), procenty (%, u+0025 == ASCII 37) i promile (‰, u+2030) pisze się bez odstępu po liczbie.
Ciekawostka: stopień Celsjusza to nie oC (nawet z o we frakcji górnej) ani °C, tylko jeden znak: ℃ == u+2103.
Co do spacji przy stopniach temperatury, to ja nie jestem pewien. Twój argument brzmi logicznie: liczbę od miana oddziela spacja niełamliwa. Wpis w Wikipedii stwierdza podobnie, lecz nie jest przekonywający: powołuje się na
rozporządzenie w którym wszystko jest opisane jak mówisz, ale
§ 15. Oznaczenia jednostek miar, których budowa lub pisownia nie odpowiada zasadom, o których mowa w § 11—14, są następujące:
1) °C — stopień Celsjusza;
2) eV — elektronowolt;
3) ° — stopień;
4) ′ — minuta;
[...]
(nb. w pdf-ie z rozporządzeniem zamiast prime jest inny znak...).
//del Słownika ortograficznego PWN pod ręką nie mam.
//insert
W Wielkim Słowniku Ortograficznym PWN (wyd. 2003) nie ma o tym ani słowa. Poniekąd słusznie, wszak to nie ortografia.
Za to w kilku poważnych książkach z PWN (konkretnie: Nowa Encyklopedia Powszechna, 1997; P. G. Hewitt: Fizyka wokół nas, 2003) temperatura jest pisana bez spacji: 90°C.
//tresni
Także Adam Wolański (Edycja tekstów, PWN 2008) na stronie 125 pokazuje przykład ze stopniami Celsjusza bez odstępu jako poprawny. Osoby autora i konsultantów oraz miejsce przygotowania tego poradnika pozwalają nie wątpić w jego rzetelność.