Archiwa tagu: page-list

„Skąd się biorą numery stron w książkach wysłanych na Kindle – i jak je dodać tam, gdzie ich nie ma

W październiku 2023 r. Robert Drózd zapytał w artykule „Część polskich książek wysyłanych na Kindle ma już numery stron. Ale skąd?!”, dlaczego część EPUB-ów wysłanych przez Send to Kindle pokazuje numery stron, a część nie.

Pojawiły się trzy hipotezy: Calibre, numer ISBN wydania papierowego albo przeliczanie znaków przez Amazon. Przyjrzałem się temu dokładnie na kilkunastu polskich książkach. Poniżej podaję odpowiedź, wyjaśniam, dlaczego niektóre książki stron nie dostają, i opisuję, jak to naprawiłem w epubQTools.

W skrócie

  • Numery stron w książce wysłanej przez Send to Kindle pochodzą z jednego z dwóch źródeł. Pierwsze to lista stron zapisana w samym EPUB-ie przez wydawcę. Drugie to strony przybliżone, które Amazon wylicza sam podczas konwersji.
  • ISBN nie ma tu nic do rzeczy. Calibre też numerów nie dodaje.
  • Amazon nie wylicza stron dla każdej książki. Potwierdziłem jedną przeszkodę: tabele w tekście. Prawdopodobnie przeszkadza też bardzo duża objętość.
  • Jeśli EPUB ma własną listę stron, Amazon ją zachowuje. epubQTools dopisuje więc taką listę książkom, które jej nie mają. Opcja „Strony” działa wtedy w każdej książce.

Gdzie na Kindle widać strony

W lewym dolnym rogu ekranu czytnik pokazuje postęp czytania: lokację, czas do końca rozdziału lub książki albo numer strony. Przełącza się je dotknięciem. Gdy w menu wyboru opcja „Strony” (Pages) jest wyszarzona, książka nie ma żadnej listy stron. Lokacje są zawsze, bo Kindle wylicza je sam. Strony są tylko wtedy, gdy plik je zawiera.

Od dłuższego już czasu Amazon zamienia EPUB-y wysłane przez Send to Kindle na format KFX, ten sam co w książkach ze sklepu. Lista stron jest zapisana w pliku KFX. Niezależnie od czcionki, marginesów i interlinii książka ma zawsze tę samą liczbę stron. Dlatego autor artykułu widział 315 stron bez względu na ustawienia.

Źródło nr 1: lista stron od wydawcy

Część polskich e-booków ma w środku numerację z wydania papierowego. W kodzie EPUB-a to niewidoczne znaczniki „tu zaczyna się strona 57”. Do tego dochodzi spis tych znaczników: w EPUB 2 jest to pageList w pliku toc.ncx, a w EPUB 3 sekcja page-list w dokumencie nawigacji.

Amazon taką listę przenosi do KFX bez zmian. Przykład: „Wiara” Anny Kańtoch to EPUB 3 z numeracją z druku zapisaną w dokumencie nawigacji. W KFX ma 448 stron z numerami od 5 do 467, z lukami, dokładnie jak w druku.

Takie strony odpowiadają stronom konkretnego wydania papierowego. Można je cytować i porównywać z papierem.

Źródło nr 2: strony wyliczone przez Amazon

Większość polskich EPUB-ów nie ma żadnej listy stron. Mimo to część z nich dostaje strony na Kindle. Rozpakowałem pliki KFX z czytnika (wtyczka KFX Input do Calibre) i sprawdziłem, gdzie zaczynają się kolejne strony. Wynik jest jednoznaczny: Amazon dzieli tekst mniej więcej co 1750–1850 znaków. To typowa wartość, pojedyncze strony bywają krótsze lub dłuższe. Algorytm nie zależy od wydania papierowego, tylko od długości tekstu.

Czasem w plikach po Calibre widać znaczniki mbp_pagebreak. To nie są strony, tylko wymuszone przejście do nowej strony między rozdziałami. Amazon nie traktuje ich jak numeracji.

Przeszkody: dlaczego nie każda książka ma strony

Amazon nie publikuje reguł, według których wylicza strony. Porównałem więc książki, które je dostały, z tymi, które ich nie dostały.

Książka Strony w KFX Własna lista stron w EPUB Tabele
Błyski i cień 296 nie nie
Oblężenie i nawałnica 409 nie nie
Morze Niegościnne 278 nie nie
Dziennik Bridget Jones brak nie tak (2)
Lalka brak nie nie

Przeszkoda nr 1: tabele (potwierdzona)

„Dziennik Bridget Jones” ma w tekście dwie tabele. Przygotowałem więc wersję testową: dwie tabele zamieniłem na zwykłe akapity, a resztę zostawiłem bez zmian. Po wysłaniu przez Send to Kindle ta wersja dostała od Amazona 301 stron. Oryginał z tabelami nie dostał żadnej. Gdy w książce jest tabela, Amazon nie wylicza stron sam. Własną listę z EPUB-a zachowuje jednak także w książkach z tabelami, o czym niżej.

Przeszkoda nr 2: długość (podejrzenie)

„Lalka” nie ma tabel, a mimo to stron nie dostała. Ma około 1,55 mln znaków, czyli kilka razy więcej niż przeciętna powieść. Podejrzewam, że Amazon ma górny limit objętości, ale tego nie sprawdzałem. To tylko korelacja.

Rozwiązanie: dać Amazonowi gotową listę stron

Skoro Amazon zawsze zachowuje listę stron z EPUB-a, nie trzeba zgadywać jego reguł. Wystarczy dopisać listę do pliku przed wysłaniem. Sprawdziłem to na „Bridget” z tabelami: dodałem do EPUB 2 listę 242 stron i wysłałem plik przez Send to Kindle. W KFX było 242 strony, a każda zaczynała się dokładnie w miejscu mojego znacznika. Tabele zostały.

To samo działa w EPUB 3. „Po roku 1177 przed Chr.” Erica H. Cline’a nie ma numeracji z druku, za to ma 9 tabel, więc Amazon sam stron by nie wyliczył. Po dodaniu listy 438 stron opcja „Strony” jest na czytniku dostępna, a książka ma 438 stron.

Został jeszcze jeden problem: gdzie postawić znaczniki, żeby strony przypominały prawdziwe.

Algorytm: ile tekstu mieści się na stronie polskiej książki

Stała liczba znaków, np. 1800, jest kusząca, bo tyle ma „strona znormalizowana” maszynopisu (30 wierszy po 60 znaków). Strona książki to jednak co innego. Zmierzyłem 16 polskich EPUB-ów z numeracją z druku i wyszło od 1050 do 1770 znaków na stronę, typowo około 1450. Przy 1800 znakach stron wychodzi wyraźnie za mało, podobnie jak u Amazona.

Ważniejsze od liczby znaków okazało się co innego: w druku liczą się wiersze, nie znaki. Krótka kwestia w dialogu („— Tak.”) ma kilka znaków, ale zajmuje cały wiersz. Książka pełna dialogów zajmuje więc w druku więcej stron, niż wynikałoby z samej długości tekstu. Porównałem dwa modele na tych samych 16 książkach:

  • Model A: stała liczba znaków na stronę. Najlepiej wypadło 1550 znaków. Liczba stron różniła się od druku średnio o 12,3% (przy 1800 znakach o 14,4%).
  • Model B: wiersze. Każdy akapit zajmuje tyle wierszy po 68 znaków, ile potrzeba, a ostatni niepełny wiersz liczy się jako cały. Strona ma 29 wierszy. Średni błąd wyniósł 8,3%.

Do epubQTools trafił model B. Działa tak:

  1. Każdy plik książki zaczyna nową stronę. EPUB składa się zwykle z wielu plików, najczęściej jednego na rozdział, a w druku rozdział też zaczyna się od nowej strony.
  2. Program przechodzi tekst i liczy widoczne znaki w każdym bloku: akapicie, nagłówku, elemencie listy, wierszu tabeli. Kilka spacji pod rząd liczy jako jedną. Miękkich dzieleń wyrazów nie liczy, bo nie są widoczne.
  3. Blok o długości n znaków zajmuje ⌈n/68⌉ wierszy. Akapit na 150 znaków to 3 wiersze, jednowyrazowa kwestia dialogowa to 1 wiersz.
  4. Co 29 wierszy zaczyna się nowa strona. Program stawia wtedy niewidoczny, pusty znacznik z identyfikatorem eqt_page_N przed pierwszym słowem nowej strony, nigdy w środku wyrazu.
  5. Na końcu powstaje spis stron: pageList w toc.ncx, a w EPUB 3 dodatkowo ukryta sekcja page-list w dokumencie nawigacji. Kolejność pozycji jest uzgodniona ze spisem treści, a w nagłówku NCX zapisana jest łączna liczba stron.

Treść książki się nie zmienia. Dochodzą tylko puste znaczniki, których czytnik nie wyświetla. Plik przechodzi EpubCheck bez błędów.

Porównanie z Amazonem

Książka Amazon epubQTools
Błyski i cień 296 286
Oblężenie i nawałnica 409 401
Dziennik Bridget Jones brak (301 w wersji bez tabel) 266

Tam, gdzie Amazon wylicza strony sam, wyniki są podobne. Tam, gdzie nie wylicza, epubQTools uzupełnia brak. „Bridget” wysłana po przeróbce w epubQTools ma teraz na czytniku 266 stron.

Uczciwie o ograniczeniach

  • To nie są strony konkretnego wydania papierowego. Według lubimyczytac.pl „Bridget” w wydaniu Zysk i S-ka ma 368 stron, a epubQTools daje 266. Wydanie papierowe ma format dziennika z datami i krótkimi wierszami, 14 stron tytułowych z pustymi stronami i luźny skład. Strony z epubQTools odpowiadają przeciętnej polskiej stronie książkowej, nie konkretnemu wydaniu. Nie nadają się do cytowania „ze strony 123 wydania papierowego”.
  • Parametry 68 i 29 dobrałem na tych samych 16 książkach, na których liczyłem błąd. Na innych książkach błąd może być trochę większy.
  • Strona epubQTools to około 220–260 słów. Popularna reguła „200 słów = 1 strona = 1 minuta” dałaby strony o ok. 15% krótsze. Wybrałem zgodność z drukiem.
  • Jeśli EPUB ma już numerację z druku (pageList, page-list albo znaczniki pagebreak), epubQTools jej nie rusza. Prawdziwe strony są lepsze od przybliżonych.

Jak z tego skorzystać

Lista stron jest dodawana automatycznie podczas zwykłego przetwarzania EPUB-ów opcją -e:

epubQTools -e folder_z_książkami

Poprawione pliki _moh.epub trafiają do podfolderu MOH. Opcja -t kopiuje je z czytelnymi nazwami, wygodnymi do Send to Kindle. Wysyłasz plik jak zwykle, mailem, przez aplikację albo stronę Amazona. Po pobraniu książki na czytnik w menu postępu powinna być dostępna opcja „Strony”. Komu numeracja nie jest potrzebna, wyłączy ją opcją --skip-page-list.

Książki już wysłane trzeba przetworzyć i wysłać ponownie, bo Amazon wylicza wszystko przy konwersji.

Odpowiedź na pytanie „ale skąd?!”

Od wydawcy, jeśli ten zapisał w EPUB-ie numerację z druku. W przeciwnym razie od Amazona, który dzieli tekst co około 1800 znaków. Robi to jednak tylko dla części książek: nie robi dla tych z tabelami i prawdopodobnie dla bardzo długich. ISBN i Calibre nie mają z tym związku. Gdy Amazon stron nie dodaje, można mu podać gotową listę, a on ją zachowa.