diff --git a/Livro.adoc b/Livro.adoc
index 76e6c20..4a60392 100644
--- a/Livro.adoc
+++ b/Livro.adoc
@@ -11,6 +11,7 @@ include::atributos-pt_BR.adoc[]
:toc: left
:toclevels: 2
:!chapter-signifier:
+:front-cover-image: image:cover.jpg[fit=cover]
include::Prefacio.adoc[]
@@ -77,4 +78,4 @@ include::capitulos/cap23.adoc[]
include::capitulos/cap24.adoc[]
-include::Posfacio.adoc[]
\ No newline at end of file
+include::Posfacio.adoc[]
diff --git a/Prefacio.adoc b/Prefacio.adoc
index 60c182e..278a65b 100644
--- a/Prefacio.adoc
+++ b/Prefacio.adoc
@@ -11,7 +11,7 @@
[dedication]
__Para Marta, com todo o meu amor.__
-[preface]
+[[preface]]
== Prefácio
[quote, Tim Peters, lendário colaborador do CPython e autor do Zen do Python]
diff --git a/capitulos/cap13.adoc b/capitulos/cap13.adoc
index 0766459..2197dd6 100644
--- a/capitulos/cap13.adoc
+++ b/capitulos/cap13.adoc
@@ -656,7 +656,7 @@ Toda ABC depende do módulo `abc`, mas não precisamos importá-lo nós mesmos,
A <> é((("UML class diagrams", "ABCs in collections.abc"))) um diagrama de classe resumido (sem os nomes dos atributos) das 17 ABCs definidas em `collections.abc`.
A documentação de `collections.abc` inclui https://fpy.li/13-16[uma ótima tabela] resumindo as ABCs, suas relações e seus métodos abstratos e concretos (chamados "métodos mixin").
Há muita herança múltipla acontecendo na <>.
-Vamos dedicar a maior parte de <> à herança múltipla,
+Vamos dedicar a maior parte de <> à herança múltipla,
mas por hora é suficiente dizer que isso normalmente não causa problemas no caso das ABCs.footnote:[Herança múltipla foi _considerada nociva_ e excluída do Java, exceto para interfaces:
Interfaces Java podem estender múltiplas interfaces, e classes Java podem implementar múltiplas interfaces.]
@@ -1872,7 +1872,7 @@ Hellmann também usa a declaração de ABC no estilo antigo:`PluginBase(metaclas
Quando usamos ABCs, herança múltipla não é apenas comum mas praticamente inevitável,
porque cada uma das ABCs fundamentais de coleções — `Sequence`, `Mapping`, e `Set`— estendem `Collection`, que por sua vez estende múltiplas ABCs
-(veja <>). Assim, <> é um importante tópico complementar a esse.
+(veja <>). Assim, <> é um importante tópico complementar a esse.
A https://fpy.li/13-52[PEP 3119--Introducing Abstract Base Classes] (EN)
apresenta a justificativa para as ABCs. A https://fpy.li/13-53[PEP 3141--A Type Hierarchy for Numbers] (EN)
diff --git a/capitulos/cap24.adoc b/capitulos/cap24.adoc
index f59619b..57d043e 100644
--- a/capitulos/cap24.adoc
+++ b/capitulos/cap24.adoc
@@ -692,7 +692,7 @@ Esse é o destino final desse capítulo—e desse livro.((("", startref="CMimpor
[quote, Tim Peters, inventor do algoritmo timsort e um produtivo colaborador do Python]
____
[Metaclasses] são uma mágica tão profunda que 99% dos usuários jamais deveria se preocupar com elas. Quem se pergunta se precisa delas, não precisa (quem realmente precisa de metaclasses sabe disso com certeza, e não precisa que lhe expliquem a razão).footnote:[Mensagem a comp.lang.python, assunto: https://fpy.li/24-12["Acrimony in c.l.p." (_animosidade no c.l.p._)].
-Essa é outra parte da mesma mensagem de 23 de dezembro de 2002, citada na <>. O TimBot estava inspirado naquele dia.]
+Essa é outra parte da mesma mensagem de 23 de dezembro de 2002, citada na <>. O TimBot estava inspirado naquele dia.]
____
Uma((("metaclasses", "basics of", id="MCbasics24")))((("class metaprogramming", "metaclass basics", id="CMmetabasic24"))) metaclasse é uma fábrica de classes.
diff --git a/cover.jpg b/cover.jpg
new file mode 100644
index 0000000..4610623
Binary files /dev/null and b/cover.jpg differ
diff --git a/gerar-epub.md b/gerar-epub.md
new file mode 100644
index 0000000..0d6744b
--- /dev/null
+++ b/gerar-epub.md
@@ -0,0 +1,52 @@
+# Como gerar o `epub` a partir dos arquivos fonte
+
+## Pré-requisitos
+
+Para gerar o `.epub` do livro é necessário ter o [Docker](https://docker.com) instalado em sua máquina.
+
+### Docker Ruby Image
+
+Precisamos baixar a [imagem Ruby oficial de Docker](https://hub.docker.com/_/ruby). Podemos fazê-lo com o seguinte comando:
+
+```bash
+docker pull ruby
+```
+
+Verificando se a imagem Ruby foi baixada.
+
+``` bash
+docker images
+```
+
+E espera-se o seguinte resultado:
+
+```
+REPOSITORY TAG IMAGE ID CREATED SIZE
+ruby latest 1a74e25729c7 12 days ago 990MB
+```
+
+### Clone do repositório
+
+Realize o clone do repositório na sua máquina local.
+
+```bash
+git clone https://github.com/pythonfluente/pythonfluente2e.git
+cd pythonfluente2e
+```
+
+## Executando o build do `epub`
+
+Na raiz do repositório recém clonado, iremos executar um container que irá instalar as dependências para gerar o livro, e gerar o `.epub` na mesma raiz. Basta executar o seguinte comando:
+
+```bash
+docker run -it --rm -v .:/book ruby sh -c "gem install asciidoctor-epub3 && asciidoctor-epub3 /book/Livro.adoc -o '/book/Python Fluente, Segunda Edição (2023).epub' 2> /dev/null"
+```
+
+Neste comando:
+
+- `-it`: Permite entrar no modo iterativo.
+- `--rm`: Remove o container após a saída.
+- `-v .:/book`: Monta o volume com o caminho da pasta raiz no container na em /book.
+- `sh -c "gem install asciidoctor-epub3 && asciidoctor-epub3 /book/Livro.adoc -o '/book/Python Fluente, Segunda Edição (2023).epub' 2> /dev/null"`: Executa o comando especificado dentro do container. O comando faz a instalação do asciidoctor-epub3 dentro do container e realiza o build do livro.
+
+Após isso o container irá executar e salvar automaticamente o livro `.epub` em sua máquina. Basta agora enviar o arquivo para o seu leitor de e-books.