spacja nierozdzielająca ("twarda")

Użytkowanie edytora dokumentów

spacja nierozdzielająca ("twarda")

Postprzez grzegi44 » Pn cze 01, 2009 7:40 pm

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 :)
grzegi44
 
Posty: 5
Dołączył(a): Pn cze 01, 2009 7:18 pm

Re: spacja nierozdzielające ("twarda")

Postprzez milek_pl » Pn cze 01, 2009 8:38 pm

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
milek_pl
 
Posty: 12
Dołączył(a): Pt maja 22, 2009 1:46 pm

Re: spacja nierozdzielające ("twarda")

Postprzez mellonedain » Pn cze 01, 2009 9:32 pm

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ć.
Avatar użytkownika
mellonedain
 
Posty: 48
Dołączył(a): Pn maja 25, 2009 8:49 pm
Lokalizacja: Zabrze

Re: spacja nierozdzielające ("twarda")

Postprzez milek_pl » Pn cze 01, 2009 10:05 pm

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
milek_pl
 
Posty: 12
Dołączył(a): Pt maja 22, 2009 1:46 pm

Re: spacja nierozdzielające ("twarda")

Postprzez heillos » Wt cze 02, 2009 8:36 am

grzegi44 napisał(a):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 :(
Avatar użytkownika
heillos
 
Posty: 143
Dołączył(a): Wt cze 02, 2009 8:19 am

Re: spacja nierozdzielające ("twarda")

Postprzez grzegi44 » Wt cze 02, 2009 6:39 pm

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.
grzegi44
 
Posty: 5
Dołączył(a): Pn cze 01, 2009 7:18 pm

Re: spacja nierozdzielające ("twarda")

Postprzez Jan_J » Wt cze 02, 2009 9:20 pm

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 (6.0|6.1) ∙ AOO 4.1.5 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3716
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielające ("twarda")

Postprzez grzegi44 » Śr cze 03, 2009 12:59 am

Jan_J napisał(a):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.
grzegi44
 
Posty: 5
Dołączył(a): Pn cze 01, 2009 7:18 pm

Re: spacja nierozdzielające ("twarda")

Postprzez m_gol » So cze 06, 2009 9:20 pm

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
Avatar użytkownika
m_gol
 
Posty: 3
Dołączył(a): So cze 06, 2009 9:14 pm
Lokalizacja: Warszawa

Re: spacja nierozdzielające ("twarda")

Postprzez mellonedain » So cze 06, 2009 11:15 pm

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) Pobrane 360 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 edytowano N cze 07, 2009 12:02 am przez Jan_J, łącznie edytowano 1 raz
Powód: zmiana zaczników: quote --> blockquote (niestandardowy)
Avatar użytkownika
mellonedain
 
Posty: 48
Dołączył(a): Pn maja 25, 2009 8:49 pm
Lokalizacja: Zabrze

Re: spacja nierozdzielające ("twarda")

Postprzez Jan_J » So cze 06, 2009 11:27 pm

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 (6.0|6.1) ∙ AOO 4.1.5 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3716
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielające ("twarda")

Postprzez mellonedain » So cze 06, 2009 11:40 pm

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 ;)
Avatar użytkownika
mellonedain
 
Posty: 48
Dołączył(a): Pn maja 25, 2009 8:49 pm
Lokalizacja: Zabrze

Re: spacja nierozdzielające ("twarda")

Postprzez quest-88 » N cze 07, 2009 12:11 pm

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.
Avatar użytkownika
quest-88
 
Posty: 1104
Dołączył(a): N maja 24, 2009 8:12 pm
Lokalizacja: Zabrze

Re: spacja nierozdzielające ("twarda")

Postprzez Jan_J » N cze 07, 2009 4:32 pm

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 (6.0|6.1) ∙ AOO 4.1.5 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3716
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielająca ("twarda")

Postprzez Jan_J » Pt cze 19, 2009 12:56 pm

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 (6.0|6.1) ∙ AOO 4.1.5 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3716
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielająca ("twarda")

Postprzez mellonedain » Pt cze 19, 2009 1:57 pm

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 :)
Avatar użytkownika
mellonedain
 
Posty: 48
Dołączył(a): Pn maja 25, 2009 8:49 pm
Lokalizacja: Zabrze

Re: spacja nierozdzielająca ("twarda")

Postprzez Dynia » Pt cze 19, 2009 3:26 pm

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
Dynia
 
Posty: 9
Dołączył(a): Śr cze 03, 2009 10:02 pm

Re: spacja nierozdzielająca ("twarda")

Postprzez m_gol » Pt cze 19, 2009 6:38 pm

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
Avatar użytkownika
m_gol
 
Posty: 3
Dołączył(a): So cze 06, 2009 9:14 pm
Lokalizacja: Warszawa

Re: spacja nierozdzielająca ("twarda")

Postprzez Jan_J » Pt cze 19, 2009 9:57 pm

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 (6.0|6.1) ∙ AOO 4.1.5 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3716
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielająca ("twarda")

Postprzez rofrol » Wt cze 23, 2009 11:56 am

Jak zamieniłem rozszserzenie z zip na oxt to pisało o jakiś błędach w menedżerze rozszerzeń.
rofrol
 
Posty: 1
Dołączył(a): Wt cze 23, 2009 11:36 am

Re: spacja nierozdzielająca ("twarda")

Postprzez grzegi44 » Śr cze 24, 2009 6:44 pm

rofrol napisał(a):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
Dołączył(a): Pn cze 01, 2009 7:18 pm

Re: spacja nierozdzielająca ("twarda")

Postprzez grzegi44 » Śr cze 24, 2009 6:57 pm

mellonedain napisał(a):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.
grzegi44
 
Posty: 5
Dołączył(a): Pn cze 01, 2009 7:18 pm

Re: spacja nierozdzielająca ("twarda")

Postprzez mellonedain » N cze 28, 2009 4:51 pm

grzegi44 napisał(a):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?
Avatar użytkownika
mellonedain
 
Posty: 48
Dołączył(a): Pn maja 25, 2009 8:49 pm
Lokalizacja: Zabrze

Re: spacja nierozdzielająca ("twarda")

Postprzez Jan_J » Cz paź 22, 2009 9:13 pm

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) Pobrane 228 razy
JJ
LO (6.0|6.1) ∙ AOO 4.1.5 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3716
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielająca ("twarda")

Postprzez m_gol » Cz paź 22, 2009 11:10 pm

Jan_J napisał(a):W załączeniu durny dokument z tą wadą -- spróbujcie dodać spację w drugim wierszu.

Potwierdzam u siebie (Ubuntu 9.10, OOo 3.1).
Avatar użytkownika
m_gol
 
Posty: 3
Dołączył(a): So cze 06, 2009 9:14 pm
Lokalizacja: Warszawa

Re: spacja nierozdzielająca ("twarda")

Postprzez Jan_J » Cz lis 05, 2009 11:09 pm

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 (6.0|6.1) ∙ AOO 4.1.5 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3716
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: spacja nierozdzielająca ("twarda")

Postprzez kszulca » Pn mar 22, 2010 6:57 pm

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
kszulca
 
Posty: 1
Dołączył(a): Pn mar 22, 2010 6:31 pm

Re: spacja nierozdzielająca ("twarda")

Postprzez mojo137 » Cz cze 17, 2010 12:27 pm

kszulca napisał(a):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
mojo137
 
Posty: 1
Dołączył(a): Cz cze 17, 2010 11:09 am

Re: spacja nierozdzielające ("twarda")

Postprzez Sei » Wt cze 22, 2010 9:39 am

Jan_J napisał(a):(...)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
Sei
 
Posty: 35
Dołączył(a): Pt sie 21, 2009 11:06 am

Re: spacja nierozdzielająca ("twarda")

Postprzez Jan_J » Wt cze 22, 2010 10:52 am

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 (6.0|6.1) ∙ AOO 4.1.5 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3716
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Następna strona

Powrót do Writer

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 gości