Você abre o arquivo no leitor, toca no menu e escolhe "Sumário": a tela fica em branco, ou mostra uma lista com um item só, ou nada acontece. O arquivo abre, as páginas viram, o texto está lá; só o índice não veio. Quando o sumário EPUB não aparece, quase sempre o problema não está no conteúdo do livro, e sim em um dos dois arquivos de navegação que o EPUB carrega, e na relação entre eles.
Este texto explica o que são nav.xhtml e toc.ncx, por que o EPUB 3 tem os dois, por que alguns leitores ignoram um deles e como descobrir qual dos dois está falhando no seu arquivo.
Dois sumários dentro do mesmo arquivo
Um EPUB é um ZIP com uma estrutura definida. Dentro dele há um arquivo que funciona como pacote de informações (content.opf, ou o nome que o seu gerador escolher) e, a partir dali, o leitor descobre o que é texto, o que é imagem e o que é navegação.
A navegação sempre viveu em dois mundos:
- toc.ncx — o sumário do EPUB 2. É um XML com uma lista hierárquica de pontos de navegação (navMap), cada um com um título, um destino e um número de ordem. Durante anos foi o único jeito de oferecer índice.
- nav.xhtml — o sumário do EPUB 3. É um documento XHTML comum, com uma lista de links marcada com o atributo epub:type="toc". Deixa de ser um formato à parte e passa a ser conteúdo do livro, o que permite estilizar o índice como qualquer outra página.
O EPUB 3 poderia ter aposentado o NCX. Não aposentou de imediato, porque havia uma base grande de leitores em uso que só conheciam o formato antigo. A solução foi conviver com os dois: o nav.xhtml como sumário oficial e o toc.ncx como rede de segurança, mantido por compatibilidade. Nas especificações mais recentes o NCX aparece como obsoleto, mas a recomendação prática continua sendo entregar os dois, desde que digam exatamente a mesma coisa.
É aí que nasce a maior parte dos problemas.
Por que um leitor ignora um dos sumários
Cada leitor implementa o que lhe interessa. O comportamento varia, mas dá para resumir em três grupos:
- Leitores antigos leem apenas o toc.ncx. Se ele não existe, o menu de sumário aparece vazio, mesmo que o nav.xhtml esteja perfeito.
- Leitores modernos priorizam o nav.xhtml. Se ele existe e é válido, o NCX é ignorado. Se existe mas está mal declarado, o leitor pode não encontrá-lo e cair no NCX, ou não encontrar nada.
- Leitores que montam o índice sozinhos a partir de outra fonte, como os títulos de capítulo marcados no texto. Nesses casos, um sumário bem-feito pode nem ser usado.
O sintoma clássico do sumário EPUB não aparecer é este: o arquivo funciona em um aplicativo e falha em outro. Isso não é aleatoriedade. É o descompasso entre os dois arquivos aparecendo.
Regra prática: se o sumário aparece em um leitor e não em outro, o problema está na divergência entre nav.xhtml e toc.ncx, não no texto do livro.
Falhas comuns nos dois arquivos
No nav.xhtml
O nav.xhtml é um XHTML. Isso significa que ele precisa ser um XML válido, além de conter a marcação que o leitor procura. Os erros mais frequentes:
- Falta do atributo epub:type="toc" na lista de navegação. Sem essa marca, o leitor não sabe que aquela lista é o sumário e pode simplesmente não exibir nada. Um mesmo arquivo pode conter outros blocos de navegação, como índice remissivo e marcas de página; só um deles é o sumário.
- Declaração de namespace ausente no elemento raiz do documento. Sem a declaração do vocabulário epub, o atributo acima vira texto sem significado.
- Registro incompleto no pacote: o arquivo está no ZIP, mas não aparece no manifesto com a propriedade que o identifica como documento de navegação. O leitor não varre o arquivo inteiro atrás de um sumário; ele lê o manifesto.
- Links que não chegam a lugar nenhum: destinos com nome diferente do arquivo real, âncoras inexistentes, diferença entre maiúsculas e minúsculas. Em ZIP, o caminho é sensível a isso.
- Lista mal fechada: uma tag não fechada derruba o documento inteiro, e o leitor descarta o sumário todo em vez de exibir parte dele.
- Sumário decorativo: uma lista com um item só, apontando para o começo do livro. Tecnicamente válido, inútil na prática.
No toc.ncx
O NCX tem suas próprias armadilhas, e elas são mais silenciosas porque o arquivo é gerado automaticamente por muitas ferramentas e raramente é revisto à mão.
- Ordem de leitura inconsistente: números de ordem repetidos ou fora de sequência confundem leitores que dependem deles para montar a lista.
- Pontos de navegação sem destino válido: o título existe, mas o caminho apontado não abre.
- Identificador divergente: o identificador único declarado no NCX precisa ser o mesmo do pacote. Quando a ferramenta gera um e a edição altera outro, alguns leitores rejeitam o arquivo.
- Vínculo perdido no pacote: o item do NCX está no manifesto, mas o pacote não indica qual arquivo é o sumário antigo, e o leitor não o encontra.
- Caracteres não escapados em títulos com acento ou símbolos, que quebram o XML.
Como diagnosticar na prática
Antes de mexer no texto ou regerar o livro inteiro, vale abrir o arquivo como ZIP e olhar a estrutura. O roteiro abaixo resolve a maioria dos casos:
- Confirme que os dois arquivos existem e estão declarados no pacote. Se o seu gerador produz só um deles, comece por aí.
- Compare os dois lado a lado: mesmos títulos, mesma ordem, mesmos destinos. Divergência é a causa mais comum.
- Valide o EPUB com o EPUBCheck. Ele aponta arquivo e linha dos erros de estrutura, inclusive os de navegação.
- Teste em pelo menos dois leitores diferentes, um mais antigo e um atual. Se o resultado muda, você já sabe qual arquivo cada um está lendo.
- Corrija a origem: se o sumário é gerado automaticamente a partir de uma lista de capítulos, ajuste essa lista. Editar os dois arquivos à mão a cada revisão é o caminho mais curto para que eles voltem a divergir.
Vale também desconfiar de conversões. Quando um arquivo passa por outro formato e volta, é comum que só um dos sumários sobreviva ao trajeto, e o que sobra nem sempre é o que o leitor de destino usa. Se o problema apareceu depois de uma exportação, comece comparando o antes e o depois.
Quando o problema não é o sumário
Há casos em que os dois arquivos estão corretos e o índice continua escondido. Aí a investigação muda de lugar: o menu do leitor pode depender de outros metadados, o aplicativo pode estar exibindo um sumário montado a partir da estrutura de títulos do texto, ou o arquivo pode ter sido entregue em uma versão de EPUB que aquele leitor não lê por completo. Antes de reescrever a navegação, verifique se o livro abre com paginação normal e se os metadados de título e idioma estão preenchidos. Um pacote incompleto costuma dar outros sinais além do sumário.
Sumário é estrutura, não enfeite. Quando nav.xhtml e toc.ncx descrevem o mesmo livro da mesma forma, o índice aparece em qualquer lugar. Quando divergem, o leitor escolhe um, e nem sempre é o que você testou.