Propozycja poprawek do narzędzia librarian == ładniejsze książki z Wolnych Lektur

Fundacja Nowoczesna Polska utrzymuje w GitHubie wszystkie swoje narzędzia, również te wykorzystywane do konwersji do formatów ePub oraz Mobi o nazwie librarian.

W związku z tym, że są one dostępne na licencji GNU AGPL można sobie te narzędzia pobrać, doskonalić, przerabiać do własnych celów.  I ja też zdecydowałem się na ten krok. Rozwidliłem kod librariana: https://github.com/quiris11/librarian i dodałem do niego kilka poprawek, głównie w stylach CSS oraz szablonach xsl, mające na celu oczyścić kod z niepotrzebnej nadmiarowości i wdrożyć poprawki w zakresie prezentacji akapitów z wcięciem oraz zmiany sposobu wyświetlania przypisów, których to wygląd był i pewnie dalej jest przedmiotem powszechnej krytyki.

  1. Teraz akapity tekstu głównego nie mają marginesu górnego i dolnego.
  2. Posiadają natomiast wcięcie pierwszego wiersza, ale tylko te, które rozpoczynają się zaraz za innym akapitem tekstu głównego, dlatego np. pierwszy wers akapitu rozpoczynającego rozdział takiego wcięcia nie ma.
  3. Przypisy zostały pozbawione fatalnie wyglądających nawiasów kwadratowych i zostały przeniesione do indeksu górnego. Dzięki temu zajmują mniej miejsca.
  4. Lista z przypisami również została dopasowana do reguł polskiej typografii.

Dodatkowo zmieniłem format generowanego pliku Mobi na hybrydowy (Mobi + KF8), dzięki temu nie jest konieczne utrzymywanie oddzielnego pliku stylów CSS dla Mobi, a także Mobi teraz staje się beneficjentem dodatkowych atrakcji, takich jak np. font wydawcy.

W planach mam również dodanie  obsługi dzielenia wyrazów w oparciu o moduł hyphenator.py. Na swoim komputerze posiadam już działającą roboczą wersję tego rozwiązania, ale jego kod wymaga optymalizacji i dostosowania go do współpracy z innymi narzędziami librariana.

Poniżej możecie pobrać plik w formatach ePub oraz Mobi dwóch książek: Potop oraz Jądro ciemności (ta pozycja zawiera wszystkie korekty dodane na platformie redakcyjnej), będące wynikiem działania narzędzia z  wyżej opisanymi modyfikacjami.

Zapraszam do folderu Wolne Lektury (udoskonalony librarian) w lokalizacji:

Osoby zainteresowane tematem proszę o konstruktywną krytykę i propozycję dalszych ulepszeń 🙂

Informację o tych zmianach przekazałem właściwym osobom w Fundacji Nowoczesna Polska, więc istnieje szansa, że poprawki zostaną włączone do głównej gałęzi kodu i w rezultacie wkrótce będziemy cieszyć się znacznie lepszymi jakościowo ebookami z Wolnych Lektur.

PS. Jeśli ktoś jest niecierpliwy i nie chce czekać, aż jego wybrana książka z katalogu Wolnych Lektur będzie beneficjentem powyższych poprawek, to może zamówić u mnie generację obydwu formatów już teraz.

22 przemyślenia nt. „Propozycja poprawek do narzędzia librarian == ładniejsze książki z Wolnych Lektur

    1. Hmm… Muszę wyjaśnić dlaczego zdecydowano się na trzyliterowe określenie języka podczas, gdy powszechnie występuje dwuliterowe. Widać, że są z tym problemy nie tylko w Nooku.

      Kindlegen podczas konwersji takiego ePuba na Mobi protestuje, że taki ePub nie ma poprawnego oznaczenia języka:

      Error(prcgen):E23006: Language not recognized in metadata. The dc:Language field is mandatory. Aborting.

  1. Wczoraj zapomniałem napisać, że nie działało mi dzielenie wyrazów (przez wbudowany słownik w czytniku). Było to spowodowane przez wersje epub
    unique-identifier=”BookId” version=”1.0″
    Wystarczyło zmienić na 2.0 i działa poprawnie.

    1. Dzięki za sygnał. Też się nad tym zastanawiałem, ponieważ Sigil czepia się tego, że jest to nie jest zgodne ze standardem ePub:

      The package element version attribute value needs to be „2.0”, but is „1.0”

    2. Znalazłem jeden dość gruby błąd w kodzie librariana, który powodował, że cała książka epub była praktycznie niezgodna ze standardem EPUB 2.0. Wygenerowałem ponownie obydwie książki ta i paroma innymi poprawkami. Teraz już package ma atrybut version=”2.0″ z całą pewnością. Dodatkowo poprawiłem jeszcze trzy inne elementy w zakresie poprawności i zgodności ze standardem EPUB.

      Jeśli masz chwilę to pobierz ponownie powyższe książki i sprawdź, czy automatyczne dzielenie wyrazów już działa. Podejrzewam, że nie będzie działać, bo jako winowajcę typuję trzyliterowy dc:language, z którym na razie nic nie zrobiłem.

    1. Wdrożyłem w librarianie automatyczną konwersję trzyliterowego kodu języka na dwuliterowy. Wygenerowałem nowe pliki. Sprawdź proszę, czy zniknął już błąd związany z czcionkami oraz czy już dzielenie działa.

  2. Dobra robota!
    Przydałby się chyba jeszcze odstęp przed divem klasy „note” (w WL-XML znacznik „nota”), oddzielający go od poprzedzającego akapitu. Zob. np. „Trylogia księżycowa”, fragment (końcówka part2.html):

    W głowie mi huczy straszliwy młyn; zdaje się, że mam gorączkę.
    Po zachodzie słońca w wąwozach między górami.
    Zwlokłem się jeszcze z hamaka….

  3. Jest odstęp przed i po nocie. Jednak wg mnie odstęp poprzedzający notę powinien być wyraźnie większy. Zwykle nota albo następuje po nagłówku rozdziału, jako streszczenie, podtytuł rozdziału itp., albo zastępuje nagłówek jakiegoś poziomu (jak w „Trylogii”, albo kończy fragment lub utwór, zawierając miejsce, datę, podpis itp. Sposób justowania też się zmienił, ale czy rozróżnienie sposobu wyrównywania po tym, czy wewnątrz znacznika noty jest znacznik akapitu, zawsze zadziała zgodnie z oczekiwaniami dla danego fragmentu, to trudno powiedzieć. Krótkie fragmenty w notach tez są znakowane jako akapity.

    1. Hm… Myślę, że margin-top:1em powinien tu wystarczyć. Wszak do tej pory marginesu górnego nie było wcale 😉 Wieczorem się tym zajmę.

      Jeśli chodzi o wyrównanie do prawej i justowanie. Moja propozycja dotyczy generalnie ominięcia problem braku znacznika wyrównania do prawej strony o którym można przeczytać w zagadnieniu: http://redmine.nowoczesnapolska.org.pl/issues/602:

      „W pustyni i w puszczy – odpis Stanisław Tarkowski – żeby osiągnąć
      efekt wyrównanego do prawej strony podpisu, owy fragment tekstu został
      oznaczony jako < motto_podpis >, choć nie mamy tu do czynienia z
      mottem.”

      Potem zauważyłem inną praktykę. W związku z tym, że noty zaczęły być wyrównywane do prawej strony (co nie wygląda pięknie) to wygodnym stało się wykorzystywanie tego znacznika do oznaczania podpisów i zamiast motto_podpis J.C /motto_podpis w „Jądrze ciemności” pojawiło się: nota akap J.C. /akap /nota

      Szczerze, to jeśli miałbym wybierać, to J.C. jest dla mnie bardziej
      podpisem niż notą.

      A ponieważ uważam, że dłuższe noty generalnie powinny się zachowywać jak zwykłe akapity zaproponowałem takie rozwiązanie, że jak są akapity w notach to jest justowanie, a jak są noty bez akapitu to wyrównanie do prawej. Pozwoliłoby to rozwiązać problem podpisów.

Dodaj komentarz