spacja nierozdzielająca ("twarda")

Użytkowanie edytora dokumentów
grzegi44
Posty: 5
Rejestracja: pn cze 01, 2009 7:18 pm

spacja nierozdzielająca ("twarda")

Post 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 :)
milek_pl
Posty: 12
Rejestracja: pt maja 22, 2009 1:46 pm
Kontakt:

Re: spacja nierozdzielające ("twarda")

Post 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ę.
Koordynator projektu http://pl.openoffice.org
Awatar użytkownika
mellonedain
Posty: 48
Rejestracja: pn maja 25, 2009 8:49 pm
Lokalizacja: Zabrze
Kontakt:

Re: spacja nierozdzielające ("twarda")

Post 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ć.
milek_pl
Posty: 12
Rejestracja: pt maja 22, 2009 1:46 pm
Kontakt:

Re: spacja nierozdzielające ("twarda")

Post 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
Koordynator projektu http://pl.openoffice.org
Awatar użytkownika
heillos
Posty: 164
Rejestracja: wt cze 02, 2009 8:19 am

Re: spacja nierozdzielające ("twarda")

Post 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 :(
grzegi44
Posty: 5
Rejestracja: pn cze 01, 2009 7:18 pm

Re: spacja nierozdzielające ("twarda")

Post 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.
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielające ("twarda")

Post 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.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
grzegi44
Posty: 5
Rejestracja: pn cze 01, 2009 7:18 pm

Re: spacja nierozdzielające ("twarda")

Post 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.
Awatar użytkownika
m_gol
Posty: 3
Rejestracja: sob cze 06, 2009 9:14 pm
Lokalizacja: Warszawa

Re: spacja nierozdzielające ("twarda")

Post 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 "\ ".
Michał Gołębiowski
student Jednoczesnych Studiów Informatyczno-Matematycznych na UW
Awatar użytkownika
mellonedain
Posty: 48
Rejestracja: pn maja 25, 2009 8:49 pm
Lokalizacja: Zabrze
Kontakt:

Re: spacja nierozdzielające ("twarda")

Post autor: mellonedain »

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.
NieDziel.zip
(7.58 KiB) Pobrany 662 razy
Postaram się teraz troszkę ogarnąć regułki zawarte w rozszerzeniu i oddać całość pod testy i wokandę.
[blockquote]
  • spójniki - spacja po
    • a
    • i
    • oraz
    • albo
    • bądź
    • czy
    • lub
    • ani
    • ni
    • ale
    • lecz
    • zaś
    • czyli
    • przeto
    • tedy
    • więc
    • zatem
  • przyimki - spacja po
    • do
    • za
    • od
    • na
    • po
    • o
    • u
    • z
    • w
    • bez
    • pod
    • nad
    • znad
    • poprzez
    • sprzed
    • zza
  • przed partykułami - spacja przed
    • się
    • no
  • jednostki miary spacja pomiędzy cyframi a:
    • cl
    • cm
    • dl
    • dm
    • g
    • hl
    • sk
    • kg
    • km
    • ks
    • l
    • m
    • mg
    • ml
    • mm
    • t
    • gr
  • tytuły, zaimkach, partykułach i stopniach - spacja po
    • mgr
    • inż.
    • dr
    • lek.
    • dent.
    • mjr
    • gen
    • hab.
    • prof.
    • zw.
    • ndzw.
    • lic.
    • ppor
    • pplk
    • ja
    • ty
    • my
    • wy
    • oni
    • one
    • mój
    • twój
    • nasz
    • wasz
    • ich
    • jego
    • jej
    • ten
    • ta
    • to
    • tamten
    • tam
    • tu
    • ów
    • tędy
    • taki
    • ci
    • tamci
    • owi
    • razy
    • tylko
    • nie
    • by
    • niech
    • niechaj
    • tak
    • bodaj
    • oby
  • liczby - zamienia separator cyfr ze zwykłej spacji na niełamliwą
  • symbole jednostek - spacja pomiędzy cyfry lub litery a:
    • °
    • %
[/blockquote]

Uff... 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.
Ostatnio zmieniony ndz cze 07, 2009 12:02 am przez Jan_J, łącznie zmieniany 1 raz.
Powód: zmiana zaczników: quote --> blockquote (niestandardowy)
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielające ("twarda")

Post 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.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
mellonedain
Posty: 48
Rejestracja: pn maja 25, 2009 8:49 pm
Lokalizacja: Zabrze
Kontakt:

Re: spacja nierozdzielające ("twarda")

Post 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 ;)
Awatar użytkownika
quest-88
Posty: 1105
Rejestracja: ndz maja 24, 2009 8:12 pm
Lokalizacja: Zabrze
Kontakt:

Re: spacja nierozdzielające ("twarda")

Post autor: quest-88 »

Zmień rozszerzenie na .oxt i dodaj autorskie logo, tak by nie gryzło się z pierwowzorem.
Standardowa diagnostyka rozwiązuje 90% problemów typu "wcześniej działało, ale już nie działa".
Przepis na LibreOffice
Uzyskałeś pomoc? Poinformuj innych o sprawdzonym rozwiązaniu i podziękuj. Dodaj [SOLVED] w tytule.
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielające ("twarda")

Post 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
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielająca ("twarda")

Post 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.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
mellonedain
Posty: 48
Rejestracja: pn maja 25, 2009 8:49 pm
Lokalizacja: Zabrze
Kontakt:

Re: spacja nierozdzielająca ("twarda")

Post 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 :)
Dynia
Posty: 9
Rejestracja: śr cze 03, 2009 10:02 pm

Re: spacja nierozdzielająca ("twarda")

Post 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
Awatar użytkownika
m_gol
Posty: 3
Rejestracja: sob cze 06, 2009 9:14 pm
Lokalizacja: Warszawa

Re: spacja nierozdzielająca ("twarda")

Post 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.
Michał Gołębiowski
student Jednoczesnych Studiów Informatyczno-Matematycznych na UW
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielająca ("twarda")

Post 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ą.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
rofrol
Posty: 1
Rejestracja: wt cze 23, 2009 11:36 am

Re: spacja nierozdzielająca ("twarda")

Post autor: rofrol »

Jak zamieniłem rozszserzenie z zip na oxt to pisało o jakiś błędach w menedżerze rozszerzeń.
grzegi44
Posty: 5
Rejestracja: pn cze 01, 2009 7:18 pm

Re: spacja nierozdzielająca ("twarda")

Post 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! :o
grzegi44
Posty: 5
Rejestracja: pn cze 01, 2009 7:18 pm

Re: spacja nierozdzielająca ("twarda")

Post 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.
Awatar użytkownika
mellonedain
Posty: 48
Rejestracja: pn maja 25, 2009 8:49 pm
Lokalizacja: Zabrze
Kontakt:

Re: spacja nierozdzielająca ("twarda")

Post 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?
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielająca ("twarda")

Post 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.
Załączniki
loremipsum.odt
(7.61 KiB) Pobrany 477 razy
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
m_gol
Posty: 3
Rejestracja: sob cze 06, 2009 9:14 pm
Lokalizacja: Warszawa

Re: spacja nierozdzielająca ("twarda")

Post 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).
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielająca ("twarda")

Post 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.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
kszulca
Posty: 1
Rejestracja: pn mar 22, 2010 6:31 pm

Re: spacja nierozdzielająca ("twarda")

Post 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
OpenOffice 3.2 na Windows XP SP3
mojo137
Posty: 1
Rejestracja: czw cze 17, 2010 11:09 am

Re: spacja nierozdzielająca ("twarda")

Post 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
OpenOffice 3.2, OS X 10.6
Sei
Posty: 35
Rejestracja: pt sie 21, 2009 11:06 am

Re: spacja nierozdzielające ("twarda")

Post 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).
Załączniki
blad.jpg
OpenOffice 3.2 /Windows 7
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielająca ("twarda")

Post 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ść.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ