Archiwa tagu: qfix

Przypisy na Kindle: dlaczego nie wyskakują w okienku i jak epubQTools to naprawia

Na Kindle przypis można przeczytać w okienku: dotykasz numerku w tekście, przypis pokazuje się w ramce na dole ekranu, a po zamknięciu ramki jesteś dalej w tym samym miejscu książki. W wielu książkach EPUB to nie działa: zamiast okienka czytnik przeskakuje na koniec rozdziału albo książki, a okienko pokazuje za dużo albo za mało. Ostatnia głośna premiera „Waldkauz” Szczepana Twardocha jest tu znamienitym przykładem.

Ten opis wyjaśnia od podstaw, skąd się to bierze i co w tej sprawie zmieniła poprawka qfix z epubQTools (opcja -e) 27 i 28 października 2026.

Pojęcia od podstaw

Książka EPUB to strony internetowe

EPUB to teczka z plikami. Rozdziały są w niej zapisane w HTML, tym samym języku co strony internetowe. HTML składa się ze znaczników, czyli etykiet przyklejonych do kawałków tekstu: <p> to akapit, <a> to odnośnik, <ol> to lista numerowana, <li> to jeden punkt tej listy, <aside> to „ramka na marginesie”, tekst poboczny.

Wygląd (wcięcia, odstępy, krój pisma, ramki) opisuje osobny plik CSS, czyli arkusz stylów: zbiór reguł w rodzaju „każdy akapit ma wcięcie 1 em”.

Przypis to odnośnik i jego cel

Przypis składa się z dwóch części:

  • numerku w tekście, czyli odnośnika (<a href="#przypis1">1</a>), który wskazuje cel,
  • treści przypisu gdzieś dalej, ze znakiem rozpoznawczym (id="przypis1"), do którego prowadzi odnośnik.

Zwykle na końcu treści przypisu jest też odnośnik powrotny (np. „↩”), który zabiera z powrotem do tekstu. To jak zakładka z napisem „wróć na stronę 37”.

EPUB 3 pozwala dopisać do znaczników, czym są: odnośnik do przypisu dostaje epub:type="noteref", a treść przypisu epub:type="footnote" (albo endnote). To etykiety dla programów, czytelnik ich nie widzi.

Okienko to zgadywanie

Czytnik nie ma osobnej szuflady na przypisy. Gdy dotykasz numerku, Kindle idzie do celu odnośnika i zgaduje, jaki kawałek tekstu tam jest przypisem: gdzie się zaczyna i gdzie kończy. Jeśli zgadnie, pokazuje okienko. Jeśli nie, po prostu przeskakuje do celu, jak przy zwykłym odnośniku.

Amazon nie opisuje, jak dokładnie to zgaduje. Wszystko poniżej to wnioski z prób na czytnikach. Budowałem książki testowe z tym samym przypisem zapisanym na kilka sposobów i sprawdzałem, który wariant daje okienko.

Książka przechodzi przez przerobienie

Książka wysłana przez Send to Kindle nie trafia na czytnik jako EPUB. Amazon przerabia ją na swój format: na starsze czytniki (np. Paperwhite 1) na AZW3, na nowsze i na aplikację Kindle (np. na iPhonie) na KFX. Te dwa formaty mają różne sposoby zgadywania, więc książka, która działa na jednym, może nie działać na drugim. Dlatego każdą poprawkę trzeba sprawdzać na obu.

Miękki dywiz

Miękki dywiz to niewidzialny znak wstawiony w środek wyrazu: „tu można przenieść”. Kindle sam nie dzieli wyrazów, więc qfix wstawia w książce takie znaki, żeby tekst nie miał dziur między wyrazami. Gdy wyraz trafi na koniec wiersza, czytnik łamie go w tym miejscu i dopisuje łącznik. Gdy nie trafi, znaku nie widać.

Problemy i poprawki po kolei

1. Przypis w ramce <aside>: tylko przeskok, bez okienka

Wiele nowych książek zapisuje przypisy tak:

<aside id="przypis1" epub:type="footnote"><p>1. Treść przypisu.</p></aside> 

To zgodne ze standardem EPUB 3, ale Send to Kindle takiego przypisu nie pokazuje w okienku, tylko do niego przeskakuje.

Poprawka (0ab0ce1): qfix zamienia takie ramki na punkty listy numerowanej, którą Kindle rozumie:

<ol class="eqt_notes"><li id="przypis1" epub:type="footnote">1. Treść przypisu.</li></ol> 

Kolejne przypisy trafiają do jednej listy. Jeśli w ramce był tylko jeden akapit, treść akapitu przechodzi wprost do punktu listy (akapit w punkcie listy też by działał, ale tak jest prościej). qfix zmienia tylko te ramki, które są przypisami: mają etykietę przypisu albo prowadzi do nich odnośnik z etykietą noteref. Zwykłych ramek (np. ciekawostek na marginesie) nie rusza.

Numer na liście nie jest dokładany: lista ma wyłączone numerowanie, bo numer jest już w treści przypisu.

2. Po zamianie przypisy straciły swój wygląd

Arkusz stylów książki mówił np. „tekst w ramkach aside jest mniejszy”. Po zamianie ramek na punkty listy ta reguła przestała do czegokolwiek pasować, więc przypisy wyglądały jak zwykły tekst.

Poprawka (afe9ad7): przy każdej regule dla ramek qfix dopisuje taką samą regułę dla punktów listy przypisów. Jeśli była reguła dla akapitów w ramkach („akapit w ramce ma wcięcie”), a akapit zniknął, jej ustawienia tekstu (krój, wielkość, wcięcie) przechodzą na punkt listy.

3. Przypis z obramowaniem: znowu bez okienka

Część książek rysuje wokół przypisów ramkę albo kreskę (w CSS: border). Okazało się, że Send to Kindle nie pokazuje w okienku przypisów z obramowaniem.

Poprawka (b41a452): reguły skopiowane z ramek dostają wszystko oprócz obramowania. Ramki aside w tekście, które nie są przypisami, zachowują swoje obramowanie, bo ich reguły zostają bez zmian.

4. Odnośnik do znikniętego akapitu

W niektórych książkach znak rozpoznawczy nie stoi na ramce, tylko na akapicie w środku: <aside><p id="przypis1">. Po przeniesieniu treści akapitu do punktu listy akapit znikał razem z atrybutem, a odnośnik w tekście prowadził donikąd (EPUBCheck zgłaszał błąd RSC-012).

Poprawka (91e335c): atrybut akapitu przechodzi na punkt listy. Jeśli i ramka, i akapit mają swój identyfikartor, akapit zostaje w środku, żeby oba odnośniki dalej trafiały.

5. Domyślny wygląd listy zagłuszał styl książki

Lista przypisów potrzebuje kilku ustawień domyślnych: bez numerowania, bez wcięcia listy, odstęp między przypisami. qfix dopisywał je na końcu arkusza stylów.

W CSS, gdy dwie równie szczegółowe reguły mówią coś innego, wygrywa późniejsza. To jak dwie kartki z poleceniami od tej samej osoby: obowiązuje ta napisana później. Ustawienia domyślne qfix, dopisane na końcu, nadpisywały więc styl przypisów zaprojektowany przez wydawcę.

Poprawka (90d07ec): ustawienia domyślne idą na początek arkusza, więc to reguły książki mają ostatnie słowo. Jedyny wyjątek: kilka reguł, które z zasady muszą stać na samym początku arkusza (@charset, @import), zostaje przed nimi.

6. Paperwhite 1: w okienku dwa przypisy naraz

Na Paperwhite 1 (książka AZW3) okienko z przypisem 1 pokazywało też przypis 2, przyklejony pod spodem. Działo się tak przy każdym zapisie przypisów, jaki sprawdzałem: lista, akapity, osobne listy, nawet ramki aside.

Winowajcą okazał się odnośnik powrotny na końcu przypisu. Paperwhite 1 najwyraźniej uznaje go za koniec poprzedniego kawałka, a nie bieżącego, i czyta dalej, do następnego. Gdy odnośnik powrotny stoi na początku przypisu, okienko pokazuje dokładnie jeden przypis.

Poprawka (df7511d): jeśli przypis zaczyna się od swojego numeru, a kończy odnośnikiem powrotnym, qfix robi odnośnik powrotny z numeru, a „↩” na końcu usuwa:

<!-- przed --> <li id="przypis1">1. Treść przypisu. <a href="rozdzial.xhtml#odn1">↩</a></li> <!-- po --> <li id="przypis1"><a href="rozdzial.xhtml#odn1">1.</a> Treść przypisu.</li> 

Powrót do tekstu działa dalej, tylko dotyka się numeru zamiast strzałki. Przypisów, które nie zaczynają się od numeru, qfix nie zmienia, bo nie ma w nich czego zrobić odnośnikiem.

7. Podział strony w stylu przypisu wyłącza okienka w całej książce

Na Paperwhite 1 podział strony po przypisie (w CSS: page-break-after) też usuwał doklejanie następnego przypisu. Ale w aplikacji Kindle na iPhonie (KFX) ten sam podział strony powodował, że żaden przypis w całej książce nie pokazywał się w okienku. Jeden zły przypis psuje całą książkę.

To miało też skutek dla prób: na iPhonie każdy wariant trzeba było sprawdzać w osobnej książce, bo jeden zły wariant w książce testowej zasłaniał wyniki wszystkich pozostałych.

Poprawka (4b83060): z reguł przypisów qfix usuwa podziały strony tak samo jak obramowania. Doklejanie na Paperwhite 1 załatwia już poprawka 6.

8. Etykieta ramki na punkcie listy

Ramki przypisów miały czasem etykietę dostępności role="doc-footnote" (dla programów czytających na głos). Ta etykieta jest dozwolona na ramce, ale nie na punkcie listy, więc po zamianie EPUBCheck zgłaszał błąd RSC-005.

Poprawka (0c57eb4): punkt listy traci tę etykietę. Etykieta epub:type="footnote" zostaje, więc programy dalej wiedzą, że to przypis.

9. Paperwhite 1: w okienku brakuje łączników

W okienku na Paperwhite 1 wyraz przeniesiony do następnego wiersza w miejscu miękkiego dywizu nie dostaje łącznika: „przy” na końcu jednego wiersza, „pisy” na początku następnego, bez „-”. W zwykłym tekście książki to samo działa poprawnie.

Poprawka (ebe6ddc): qfix usuwa miękkie dywizy ze wszystkich przypisów, do których prowadzą odnośniki noteref, także tych, które nie były ramkami aside. W przypisach wyrazy się wtedy nie dzielą, a w reszcie książki dzielą się jak dotąd.

Przy tym wyszedł drobny haczyk: w niektórych książkach odnośnik powrotny też ma etykietę noteref (razem z role="doc-backlink"). Gdyby qfix uznał go za odnośnik do przypisu, wziąłby akapit tekstu głównego za przypis i zdjął z niego dywizy. Dlatego odnośniki powrotne są pomijane, nawet jeśli udają odnośniki do przypisów.

Przy okazji, choć nie o przypisach

  • Tylna okładka zamiast przedniej (bb6325a): gdy książka nie mówi wprost, który obrazek jest okładką, qfix zgaduje po nazwie pliku. Zgadywanie trafiało czasem w backcover.jpg. Teraz najpierw bierze obrazek oznaczony w EPUB 3 jako okładka, potem dokładne nazwy cover i okladka, a nazwy stron porównuje w całości, nie po kawałku.
  • Ślady konwersji z Kindle (fab17b0): książki przerobione kiedyś z formatu Kindle mają w HTML atrybuty w rodzaju amzn-src-id. EPUB ich nie zna (EPUBCheck: RSC-005), więc qfix je usuwa.

Jak to sprawdzano

  • Książka testowa z wariantami: ten sam przypis zapisany na różne sposoby (punkt listy, akapit, osobne listy, ramka; odnośnik powrotny na początku i na końcu; z podziałem strony i bez).
  • Dwa czytniki, dwa formaty: Paperwhite 1 (AZW3 przez Send to Kindle) i aplikacja Kindle na iPhonie (KFX). Na iPhonie jeden wariant na książkę, bo zły wariant wyłącza okienka w całej książce (problem 7).
  • Prawdziwe książki: po poprawce w przypisach nie ma miękkich dywizów, a tekst poza przypisami jest identyczny jak przed zmianą. EPUBCheck nie zgłasza nowych błędów.

Czego epubQTools nie naprawia

Poprawka działa tylko wtedy, gdy książka oznacza przypisy: etykietą epub:type przy przypisie albo etykietą noteref przy odnośniku. Są książki, w których przypisy to zwykłe ramki bez etykiet, a numerek w tekście to zwykły odnośnik, rozpoznawalny tylko po tym, że tekst i przypis wskazują się nawzajem. Takich książek qfix nie zgaduje: ryzyko, że weźmie za przypis coś, co nim nie jest, jest większe niż zysk.

Podsumowanie

Problem Gdzie Poprawka qfix
Przypis w ramce <aside> nie wyskakuje Send to Kindle ramka → punkt listy <li> (0ab0ce1)
Przypisy po zamianie wyglądają jak zwykły tekst wszędzie style ramek kopiowane na punkty listy (afe9ad7)
Przypis z obramowaniem nie wyskakuje Send to Kindle style przypisów bez obramowania (b41a452)
Odnośnik do akapitu, który zniknął EPUBCheck RSC-012 znak id przechodzi na punkt listy (91e335c)
Domyślny styl listy nadpisuje styl książki wszędzie styl domyślny na początku arkusza (90d07ec)
W okienku dwa przypisy naraz Paperwhite 1 (AZW3) numer przypisu staje się odnośnikiem powrotnym (df7511d)
Żadnych okienek w całej książce aplikacja Kindle (KFX) style przypisów bez podziałów strony (4b83060)
role="doc-footnote" na punkcie listy EPUBCheck RSC-005 etykieta usuwana (0c57eb4)
Brak łączników w okienku Paperwhite 1 (AZW3) bez miękkich dywizów w przypisach (ebe6ddc)