mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-11-03 19:17:02 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			865 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			865 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
.. _edit:
 | 
						|
 | 
						|
Editing e-books
 | 
						|
========================
 | 
						|
 | 
						|
calibre has an integrated e-book editor that can be used to edit books in the
 | 
						|
EPUB and AZW3 (Kindle) formats. The editor shows you the HTML and CSS that is
 | 
						|
used internally inside the book files, with a live preview that updates as you
 | 
						|
make changes. It also contains various automated tools to perform common
 | 
						|
cleanup and fixing tasks.
 | 
						|
 | 
						|
You can use this editor by right clicking on any book in calibre and selecting
 | 
						|
:guilabel:`Edit book`.
 | 
						|
 | 
						|
.. image:: images/edit-book.png
 | 
						|
    :alt: The Edit book tool
 | 
						|
    :align: center
 | 
						|
    :class: fit-img
 | 
						|
 | 
						|
.. contents:: Contents
 | 
						|
  :depth: 2
 | 
						|
  :local:
 | 
						|
 | 
						|
 | 
						|
Basic workflow
 | 
						|
---------------
 | 
						|
 | 
						|
.. note::
 | 
						|
    A video tour of the calibre E-book editor is available `here
 | 
						|
    <https://calibre-ebook.com/demo#tutorials>`_.
 | 
						|
 | 
						|
When you first open a book with the Edit book tool, you will be presented with
 | 
						|
a list of files on the left. These are the individual HTML files, stylesheets,
 | 
						|
images, etc. that make up the content of the book. Simply double click on a
 | 
						|
file to start editing it. Note that if you want to do anything more
 | 
						|
sophisticated than making a few small tweaks, you will need to know `HTML
 | 
						|
Tutorial <http://html.net/tutorials/html/>`_ and `CSS Tutorial
 | 
						|
<http://html.net/tutorials/css/>`_.
 | 
						|
 | 
						|
As you make changes to the HTML or CSS in the editor, the changes will be
 | 
						|
previewed, live, in the preview panel to the right. When you are happy with how
 | 
						|
the changes you have made look, click the :guilabel:`Save` button or use
 | 
						|
:guilabel:`File->Save` to save your changes into the e-book.
 | 
						|
 | 
						|
One useful feature is :guilabel:`Checkpoints`. Before you embark on some
 | 
						|
ambitious set of edits, you can create a checkpoint. The checkpoint
 | 
						|
will preserve the current state of your book, then if in the future you decide
 | 
						|
you don't like the changes you have made to you can go back to the state when
 | 
						|
you created the checkpoint. To create a checkpoint, use :guilabel:`Edit->Create
 | 
						|
checkpoint`. Checkpoints will also be automatically created for you whenever you
 | 
						|
run any automated tool like global search and replace. The checkpointing
 | 
						|
functionality is in addition to the normal undo/redo mechanism when editing
 | 
						|
individual files. Checkpoints are useful for when changes are spread over
 | 
						|
multiple files in the book.
 | 
						|
 | 
						|
That is the basic work flow for editing books -- Open a file, make changes,
 | 
						|
preview and save. The rest of this manual will discuss the various tools and
 | 
						|
features present to allow you to perform specific tasks efficiently.
 | 
						|
 | 
						|
The File browser
 | 
						|
------------------
 | 
						|
 | 
						|
.. image:: images/files_browser.png
 | 
						|
    :alt: The File browser
 | 
						|
    :class: float-left-img
 | 
						|
 | 
						|
The :guilabel:`File browser` gives you an overview of the various files inside
 | 
						|
the book you are editing. The files are arranged by category, with text (HTML)
 | 
						|
files at the top, followed by stylesheet (CSS) files, images and so on. Simply
 | 
						|
double click on a file to start editing it. Editing is supported for HTML, CSS
 | 
						|
and image files. The order of text files is the same order that they would be
 | 
						|
displayed in, if you were reading the book. All other files are arranged
 | 
						|
alphabetically.
 | 
						|
 | 
						|
By hovering your mouse over an entry, you can see its size, and also, at
 | 
						|
the bottom of the screen, the full path to the file inside the book. Note that
 | 
						|
files inside e-books are compressed, so the size of the final book is not the
 | 
						|
sum of the individual file sizes.
 | 
						|
 | 
						|
Many files have special meaning, in the book. These will typically have
 | 
						|
an icon next to their names, indicating the special meaning. For example, in
 | 
						|
the picture to the left, you can see that the files :guilabel:`cover_image.jpg`
 | 
						|
and :guilabel:`titlepage.xhtml` have the icon of a cover next to them, this
 | 
						|
indicates they are the book cover image and titlepage. Similarly, the
 | 
						|
:guilabel:`content.opf` file has a metadata icon next to it, indicating the
 | 
						|
book metadata is present in it and the :guilabel:`toc.ncx` file has a T
 | 
						|
icon next to it, indicating it is the Table of Contents.
 | 
						|
 | 
						|
You can perform many actions on individual files, by right clicking them.
 | 
						|
 | 
						|
Renaming files
 | 
						|
^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
You can rename an individual file by right clicking it and selecting
 | 
						|
:guilabel:`Rename`. Renaming a file automatically updates all links and
 | 
						|
references to it throughout the book. So all you have to do is provide the new
 | 
						|
name, calibre will take care of the rest.
 | 
						|
 | 
						|
You can also bulk rename many files at once. This is useful
 | 
						|
if you want the files to have some simple name pattern. For example you might
 | 
						|
want to rename all the HTML files to have names Chapter-1.html, Chapter-2.html
 | 
						|
and so on. Select the files you want bulk renamed by holding down the :kbd:`Shift` or
 | 
						|
:kbd:`Ctrl` key and clicking the files. Then right click and select :guilabel:`Bulk
 | 
						|
rename`. Enter a prefix and what number you would like the automatic numbering
 | 
						|
to start at, click OK and you are done. The bulk rename dialog also lets you
 | 
						|
rename files by the order they appear in the book instead of the order you
 | 
						|
selected them in, useful, for instance to rename all images by the order
 | 
						|
they appear.
 | 
						|
 | 
						|
Finally, you can bulk change the file extension for all selected files. Select
 | 
						|
multiple files, as above, and right click and choose :guilabel:`Change the file
 | 
						|
extension for the selected files`.
 | 
						|
 | 
						|
Merging files
 | 
						|
^^^^^^^^^^^^^^
 | 
						|
 | 
						|
Sometimes, you may want to merge two HTML files or two CSS files together. It
 | 
						|
can sometimes be useful to have everything in a single file. Be wary, though,
 | 
						|
putting a lot of content into a single file will cause performance problems
 | 
						|
when viewing the book in a typical e-book reader.
 | 
						|
 | 
						|
To merge multiple files together, select them by holding the :kbd:`Ctrl` key and
 | 
						|
clicking on them (make sure you only select files of one type, either all HTML
 | 
						|
files or all CSS files and so on). Then right click and select merge. That's
 | 
						|
all, calibre will merge the files, automatically taking care of migrating all
 | 
						|
links and references to the merged files. Note that merging files can sometimes
 | 
						|
cause text styling to change, since the individual files could have used
 | 
						|
different stylesheets.
 | 
						|
 | 
						|
Changing text file order
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
You can re-arrange the order in which text (HTML) files are opened when reading
 | 
						|
the book by simply dragging and dropping them in the Files browser. For the
 | 
						|
technically inclined, this is called re-ordering the book spine. Note that you
 | 
						|
have to drop the items *between* other items, not on top of them, this can be a
 | 
						|
little fiddly until you get used to it.
 | 
						|
 | 
						|
Marking the cover
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
E-books typically have a cover image. This image is indicated in the
 | 
						|
:guilabel:`File browser` by the icon of a brown book next to the image name. If
 | 
						|
you want to designate some other image as the cover, you can do so by right
 | 
						|
clicking on the file and choosing :guilabel:`Mark as cover`.
 | 
						|
 | 
						|
In addition, EPUB files has the concept of a *titlepage*. A title page is a
 | 
						|
HTML file that acts as the title page/cover for the book. You can mark an HTML
 | 
						|
file as the titlepage when editing EPUBs by right-clicking. Be careful that the
 | 
						|
file you mark contains only the cover information. If it contains other
 | 
						|
content, such as the first chapter, then that content will be lost if the user
 | 
						|
ever converts the EPUB file in calibre to another format. This is because when
 | 
						|
converting, calibre assumes that the marked title page contains only the cover
 | 
						|
and no other content.
 | 
						|
 | 
						|
Deleting files
 | 
						|
^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
You can delete files by either right clicking on them or by selecting them and
 | 
						|
pressing the Delete key. Deleting a file removes all references to the file
 | 
						|
from the OPF file, saving you that chore. However, references in other places
 | 
						|
are not removed, you can use the Check Book tool to easily find and
 | 
						|
remove/replace them.
 | 
						|
 | 
						|
Exporting files
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
You can export a file from inside the book to somewhere else on your computer.
 | 
						|
This is useful if you want to work on the file in isolation, with specialised
 | 
						|
tools. To do this, simply right click on the file and choose
 | 
						|
:guilabel:`Export`.
 | 
						|
 | 
						|
Once you are done working on the exported file, you can re-import it into the
 | 
						|
book, by right clicking on the file again and choosing :guilabel:`Replace with
 | 
						|
file...` which will allow you to replace the file in the book with
 | 
						|
the previously exported file.
 | 
						|
 | 
						|
You can also copy files between multiple editor instances. Select
 | 
						|
the files you want to copy in the :guilabel:`File browser`, then right click
 | 
						|
and choose, :guilabel:`Copy selected files to another editor instance`. Then,
 | 
						|
in the other editor instance, right click in the :guilabel:`File browser`
 | 
						|
and choose :guilabel:`Paste file from other editor instance`.
 | 
						|
 | 
						|
Adding new images/fonts/etc. or creating new blank files
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
You can add a new image, font, stylesheet, etc. from your computer into the
 | 
						|
book by clicking :guilabel:`File->New file`. This lets you either import a file
 | 
						|
by clicking the :guilabel:`Import resource file` button or create a new blank HTML file
 | 
						|
or stylesheet by simply entering the file name into the box for the new file.
 | 
						|
 | 
						|
You can also import multiple files into the book at once using File->Import
 | 
						|
files into book.
 | 
						|
 | 
						|
Replacing files
 | 
						|
^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
You can easily replace existing files in the book, by right clicking on the
 | 
						|
file and choosing replace. This will automatically update all links and
 | 
						|
references, in case the replacement file has a different name than the file
 | 
						|
being replaced.
 | 
						|
 | 
						|
Linking stylesheets to HTML files efficiently
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
As a convenience, you can select multiple HTML files in the File browser,
 | 
						|
right click and choose Link stylesheets to have calibre automatically insert the
 | 
						|
<link> tags for those stylesheets into all the selected HTML files.
 | 
						|
 | 
						|
.. raw:: html epub
 | 
						|
 | 
						|
    <div style="clear:both"></div>
 | 
						|
 | 
						|
 | 
						|
Search & replace
 | 
						|
-------------------
 | 
						|
 | 
						|
Edit book has a very powerful search and replace interface that allows you to
 | 
						|
search and replace text in the current file, across all files and even in a
 | 
						|
marked region of the current file. You can search using a normal search or
 | 
						|
using regular expressions. To learn how to use regular expressions for advanced
 | 
						|
searching, see :ref:`regexptutorial`.
 | 
						|
 | 
						|
.. image:: images/sr.png
 | 
						|
    :alt: The Edit book tool
 | 
						|
    :align: center
 | 
						|
 | 
						|
Start the search and replace via the :guilabel:`Search->Find/replace` menu
 | 
						|
entry (you must be editing an HTML or CSS file).
 | 
						|
 | 
						|
Type the text you want to find into the Find box and its replacement into the
 | 
						|
Replace box. You can the click the appropriate buttons to Find the next match,
 | 
						|
replace the current match and replace all matches.
 | 
						|
 | 
						|
Using the drop downs at the bottom of the box, you can have the search operate
 | 
						|
over the current file, all text files, all style files or all files. You can
 | 
						|
also choose the search mode to be a normal (string) search or a regular
 | 
						|
expression search.
 | 
						|
 | 
						|
You can count all the matches for a search expression via
 | 
						|
:guilabel:`Search->Count all`. The count will run over whatever files/regions
 | 
						|
you have selected in the dropdown box.
 | 
						|
 | 
						|
You can also go to a specific line in the currently open editor via
 | 
						|
:guilabel:`Search->Go to line`.
 | 
						|
 | 
						|
.. note::
 | 
						|
    Remember, to harness the full power of search and replace, you will
 | 
						|
    need to use regular expressions. See :ref:`regexptutorial`.
 | 
						|
 | 
						|
Saved searches
 | 
						|
^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
You can save frequently used search/replace expressions (including function
 | 
						|
mode expressions) and reuse them multiple times.  To save a search simply right
 | 
						|
click in the Find box and select :guilabel:`Save current search`.
 | 
						|
 | 
						|
You can bring up the saved searches via :guilabel:`Search->Saved
 | 
						|
searches`. This will present you with a list of search and replace expressions
 | 
						|
that you can apply. You can even select multiple entries in the list by holding
 | 
						|
down the :kbd:`Ctrl` key while clicking so as to run multiple search and replace
 | 
						|
expressions in a single operation.
 | 
						|
 | 
						|
Function mode
 | 
						|
^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
Function mode allows you to write arbitrarily powerful Python functions that
 | 
						|
are run on every Find/replace. You can do pretty much any text manipulation you
 | 
						|
like in function mode. For more information, see :doc:`function_mode`.
 | 
						|
 | 
						|
Search ignoring HTML tags
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
There is also a dedicated tool for searching for text, ignoring any HTML tags
 | 
						|
in between. For example, if the book has the HTML ``Empahisis on a
 | 
						|
<i>word</i>.`` you can search for ``on a word`` and it will be found even
 | 
						|
though there is an ``<i>`` tag in the middle. Use this
 | 
						|
tool via the :guilabel:`Search->Search ignoring HTML markup` menu item.
 | 
						|
 | 
						|
Automated tools
 | 
						|
-------------------
 | 
						|
 | 
						|
Edit book has various tools to help with common tasks. These are
 | 
						|
accessed via the :guilabel:`Tools` menu.
 | 
						|
 | 
						|
Editing the Table of Contents
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
There is a dedicated tool to ease editing of the Table of Contents. Launch it
 | 
						|
with :guilabel:`Tools->Table of Contents->Edit Table of Contents`.
 | 
						|
 | 
						|
.. image:: images/tocedit.png
 | 
						|
    :alt: The Edit Table of Contents tool
 | 
						|
    :align: center
 | 
						|
 | 
						|
The Edit Table of Contents tool shows you the current Table of Contents (if
 | 
						|
any) on the left. Simply double click on any entry to change its text. You can
 | 
						|
also re-arrange entries by drag and drop or by using the buttons to the right.
 | 
						|
 | 
						|
For books that do not have a pre-existing Table of Contents, the tool gives you
 | 
						|
various options to auto-generate a Table of Contents from the text. You can
 | 
						|
generate from the headings in the document, from links, from individual files
 | 
						|
and so on.
 | 
						|
 | 
						|
You can edit individual entries by clicking on them and then clicking the
 | 
						|
:guilabel:`Change the location this entry points to` button. This will open up
 | 
						|
a mini-preview of the book, simply move the mouse cursor over the book view
 | 
						|
panel, and click where you want the entry to point to. A thick green line
 | 
						|
will show you the location. Click OK once you are happy with the location.
 | 
						|
 | 
						|
.. image:: images/tocedit-location.png
 | 
						|
    :alt: The Edit Table of Contents tool, how to change the location an entry points to
 | 
						|
    :align: center
 | 
						|
 | 
						|
Checking the book
 | 
						|
^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
The :guilabel:`Check book` tool searches your book for problems that could
 | 
						|
prevent it working as intended on actual reader devices. Activate it via
 | 
						|
:guilabel:`Tools->Check book`.
 | 
						|
 | 
						|
.. image:: images/check-book.png
 | 
						|
    :alt: The Check book tool
 | 
						|
    :align: center
 | 
						|
 | 
						|
Any problems found are
 | 
						|
reported in a nice, easy to use list. Clicking any entry in the list shows you
 | 
						|
some help about that error as well as giving you the option to auto-fix that
 | 
						|
error, if the error can be fixed automatically. You can also double click the
 | 
						|
error to open the location of the error in an editor, so you can fix it
 | 
						|
yourself.
 | 
						|
 | 
						|
Some of the checks performed are:
 | 
						|
 | 
						|
    * Malformed HTML markup. Any HTML markup that does not parse as well-formed
 | 
						|
      XML is reported. Correcting it will ensure that your markup works as
 | 
						|
      intended in all contexts. calibre can also auto-fix these errors, but
 | 
						|
      auto-fixing can sometimes have unexpected effects, so use with care. As
 | 
						|
      always, a checkpoint is created before auto-fixing so you can easily
 | 
						|
      revert all changes. Auto-fixing works by parsing the markup using the
 | 
						|
      HTML5 algorithm, which is highly fault tolerant and then converting to
 | 
						|
      well formed XML.
 | 
						|
 | 
						|
    * Malformed or unknown CSS styles. Any CSS that is not valid or that has
 | 
						|
      properties not defined in the CSS 2.1 standard (plus a few from CSS 3)
 | 
						|
      are reported. CSS is checked in all stylesheets, inline style attributes
 | 
						|
      and <style> tags in HTML files.
 | 
						|
 | 
						|
    * Broken links. Links that point to files inside the book that are missing
 | 
						|
      are reported.
 | 
						|
 | 
						|
    * Unreferenced files. Files in the book that are not referenced by any
 | 
						|
      other file or are not in the spine are reported.
 | 
						|
 | 
						|
    * Various common problems in OPF files such as duplicate spine or manifest
 | 
						|
      items, broken idrefs or meta cover tags, missing required sections and
 | 
						|
      so on.
 | 
						|
 | 
						|
    * Various compatibility checks for known problems that can cause the book
 | 
						|
      to malfunction on reader devices.
 | 
						|
 | 
						|
Adding a cover
 | 
						|
^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
You can easily add a cover to the book via :guilabel:`Tools->Add cover`. This
 | 
						|
allows you to either choose an existing image in the book as the cover or
 | 
						|
import a new image into the book and make it the cover. When editing EPUB
 | 
						|
files, the HTML wrapper for the cover is automatically generated. If an
 | 
						|
existing cover in the book is found, it is replaced. The tool also
 | 
						|
automatically takes care of correctly marking the cover files as covers in the
 | 
						|
OPF.
 | 
						|
 | 
						|
Embedding referenced fonts
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
Accessed via :guilabel:`Tools->Embed reference fonts`, this tool finds all
 | 
						|
fonts referenced in the book and if they are not already embedded, searches
 | 
						|
your computer for them and embeds them into the book, if found. Please make
 | 
						|
sure that you have the necessary copyrights for embedding commercially licensed
 | 
						|
fonts, before doing this.
 | 
						|
 | 
						|
Subsetting embedded fonts
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
Accessed via :guilabel:`Tools->Subset embedded fonts`, this tool reduces all
 | 
						|
the fonts in the book to only contain glyphs for the text actually present in
 | 
						|
the book. This commonly reduces the size of the font files by ~ 50%. However,
 | 
						|
be aware that once the fonts are subset, if you add new text whose characters
 | 
						|
are not previously present in the subset font, the font will not work for the
 | 
						|
new text. So do this only as the last step in your workflow.
 | 
						|
 | 
						|
Smartening punctuation
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
Convert plain text dashes, ellipsis, quotes, multiple hyphens, etc. into their
 | 
						|
typographically correct equivalents.
 | 
						|
Note that the algorithm can sometimes generate incorrect results, especially
 | 
						|
when single quotes at the start of contractions are involved. Accessed via
 | 
						|
:guilabel:`Tools->Smarten punctuation`.
 | 
						|
 | 
						|
Transforming CSS properties
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
Create rules to transform the styling of the book. For example, create a rule
 | 
						|
to convert all red text to green or to double the font size of all text in the
 | 
						|
book or make text of a certain font family italic, etc.
 | 
						|
 | 
						|
Creating the rules is simple, the rules follow a natural language format, that
 | 
						|
looks like:
 | 
						|
 | 
						|
 * If the property *color* is *red* *change* it to *green*
 | 
						|
 * If the property *font-size* is *any value* *multiply* the value by *2*
 | 
						|
 | 
						|
Accessed via :guilabel:`Tools->Transform styles`.
 | 
						|
 | 
						|
Removing unused CSS rules
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
Remove all unused CSS rules from stylesheets and <style> tags. Some books
 | 
						|
created from production templates can have a large number of extra CSS rules
 | 
						|
that don't match any actual content. These extra rules can slow down readers
 | 
						|
that need to process them all. Accessed via :guilabel:`Tools->Remove unused CSS`.
 | 
						|
 | 
						|
 | 
						|
Fixing HTML
 | 
						|
^^^^^^^^^^^
 | 
						|
 | 
						|
This tool simply converts HTML that cannot be parsed as XML into well-formed
 | 
						|
XML. It is very common in e-books to have non-well-formed XML, so this tool
 | 
						|
simply automates the process of fixing such HTML. The tool works by parsing the
 | 
						|
HTML using the HTML5 algorithm (the algorithm used in all modern browsers) and
 | 
						|
then converting the result into XML. Be aware that auto-fixing can sometimes
 | 
						|
have counter-intuitive results. If you prefer, you can use the Check Book tool
 | 
						|
discussed above to find and manually correct problems in the HTML. Accessed via
 | 
						|
:guilabel:`Tools->Fix HTML`.
 | 
						|
 | 
						|
Beautifying files
 | 
						|
^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
This tool is used to auto-format all HTML and CSS files so that they "look
 | 
						|
pretty". The code is auto-indented so that it lines up nicely, blank lines are
 | 
						|
inserted where appropriate and so on. Note that beautifying also auto-fixes
 | 
						|
broken HTML/CSS. Therefore, if you don't want any auto-fixing to be performed,
 | 
						|
first use the Check Book tool to correct all problems and only then run
 | 
						|
beautify.  Accessed via :guilabel:`Tools->Beautify all files`.
 | 
						|
 | 
						|
.. note::
 | 
						|
    In HTML any text can have significant whitespace, via the CSS white-space
 | 
						|
    directive. Therefore, beautification could potentially change the rendering
 | 
						|
    of the HTML. To avoid this as far as possible, the beautify algorithm
 | 
						|
    only beautifies block level tags that contain other block level tags. So,
 | 
						|
    for example, text inside a <p> tag will not have its whitespace changed.
 | 
						|
    But a <body> tag that contains only other <p> and <div> tags will be
 | 
						|
    beautified.  This can sometimes mean that a particular file will not be
 | 
						|
    affected by beautify as it has no suitable block level tags. In such
 | 
						|
    cases you can try different beautification tools, that are less careful,
 | 
						|
    for example: `HTML Tidy <https://infohound.net/tidy/>`_.
 | 
						|
 | 
						|
 | 
						|
Inserting an inline Table of Contents
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
Normally in e-books, the Table of Contents is separate from the main text and is
 | 
						|
typically accessed via a special Table of Contents button/menu in the e-book
 | 
						|
reading device. You can also have calibre automatically generate an *inline*
 | 
						|
Table of Contents that becomes part of the text of the book. It is
 | 
						|
generated based on the currently defined Table of Contents.
 | 
						|
 | 
						|
If you use this tool multiple times, each invocation will cause the previously
 | 
						|
created inline Table of Contents to be replaced. The tool can be accessed via
 | 
						|
:guilabel:`Tools->Table of Contents->Insert inline Table of Contents`.
 | 
						|
 | 
						|
Setting Semantics
 | 
						|
^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
This tool is used to set *semantics* in EPUB files. Semantics are simply,
 | 
						|
links in the OPF file that identify certain locations in the book as having
 | 
						|
special meaning. You can use them to identify the foreword, dedication, cover,
 | 
						|
table of contents, etc. Simply choose the type of semantic information you want
 | 
						|
to specify and then select the location in the book the link should point to.
 | 
						|
This tool can be accessed via :guilabel:`Tools->Set semantics`.
 | 
						|
 | 
						|
Filtering style information
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
This tool can be used to easily remove specified CSS style properties from the
 | 
						|
entire book. You can tell it what properties you want removed, for example,
 | 
						|
``color, background-color, line-height`` and it will remove them from
 | 
						|
everywhere they occur --- stylesheets, ``<style>`` tags and inline ``style``
 | 
						|
attributes. After removing the style information, a summary of all the changes
 | 
						|
made is displayed so you can see exactly what was changed. The tool can be
 | 
						|
accessed via :guilabel:`Tools->Filter style information`.
 | 
						|
 | 
						|
 | 
						|
Upgrading the book's internals
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
This tool can be used to upgrade the book's internals, if possible. For
 | 
						|
instance it will upgrade EPUB 2 books to EPUB 3 books. The tool can be
 | 
						|
accessed via :guilabel:`Upgrade book internals`.
 | 
						|
 | 
						|
.. _checkpoints:
 | 
						|
 | 
						|
Checkpoints
 | 
						|
------------------------
 | 
						|
 | 
						|
:guilabel:`Checkpoints` are a way to mark the current state of the book as "special". You
 | 
						|
can then go on to do whatever changes you want to the book and if you don't like
 | 
						|
the results, return to the checkpointed state. Checkpoints are automatically
 | 
						|
created every time you run any of the automated tools described in the
 | 
						|
previous section.
 | 
						|
 | 
						|
You can create a checkpoint via :guilabel:`Edit->Create checkpoint`. And go back
 | 
						|
to a previous checkpoint with :guilabel:`Edit->Revert to ...`
 | 
						|
 | 
						|
The check pointing functionality is in addition to the normal Undo/redo
 | 
						|
mechanism when editing individual files. Checkpoints are particularly useful
 | 
						|
for when changes are spread over multiple files in the book or when you wish to
 | 
						|
be able to revert a large group of related changes as a whole.
 | 
						|
 | 
						|
You can see a list of available checkpoints via :guilabel:`View->Checkpoints`.
 | 
						|
You can compare the current state of the book to a specified checkpoint
 | 
						|
using the :ref:`diff` tool -- by selecting the checkpoint of interest and clicking
 | 
						|
the :guilabel:`Compare` button. The :guilabel:`Revert to` button restores the
 | 
						|
book to the selected checkpoint, undoing all changes since that checkpoint was
 | 
						|
created.
 | 
						|
 | 
						|
The Live preview panel
 | 
						|
------------------------
 | 
						|
 | 
						|
.. image:: images/live-preview.png
 | 
						|
    :alt: The Live preview panel
 | 
						|
    :class: float-left-img
 | 
						|
 | 
						|
The :guilabel:`File preview` gives you an overview of the various files inside
 | 
						|
The live preview panel shows you the changes you are making live (with a second
 | 
						|
or two of delay). As you edit HTML or CSS files, the preview panel is updated
 | 
						|
automatically to reflect your changes. As you move the cursor around in the
 | 
						|
editor, the preview panel will track its location, showing you the
 | 
						|
corresponding location in the book. Clicking in the preview panel, will cause
 | 
						|
the cursor in the editor to be positioned over the element you clicked. If you
 | 
						|
click a link pointing to another file in the book, that file will be opened in
 | 
						|
the edit and the preview panel, automatically.
 | 
						|
 | 
						|
You can turn off the automatic syncing of position and live preview of changes
 | 
						|
-- by buttons under the preview panel. The live update of the preview
 | 
						|
panel only happens when you are not actively typing in the editor, so as not to
 | 
						|
be distracting or slow you down, waiting for the preview to render.
 | 
						|
 | 
						|
The preview panel shows you how the text will look when viewed. However, the
 | 
						|
preview panel is not a substitute for actually testing your book an actual
 | 
						|
reader device. It is both more, and less capable than an actual reader. It will
 | 
						|
tolerate errors and sloppy markup much better than most reader devices. It will
 | 
						|
also not show you page margins, page breaks and embedded fonts that use font
 | 
						|
name aliasing. Use the preview panel while you are working on the book, but
 | 
						|
once you are done, review it in an actual reader device or software emulator.
 | 
						|
 | 
						|
.. note::
 | 
						|
    The preview panel does not support embedded fonts if the name of the font
 | 
						|
    inside the font file does not match the name in the CSS @font-face rule.
 | 
						|
    You can use the Check Book tool to quickly find and fix any such
 | 
						|
    problem fonts.
 | 
						|
 | 
						|
Splitting HTML files
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
.. |spmb| image:: images/split-button.png
 | 
						|
 | 
						|
One, perhaps non-obvious, use of the preview panel is to split long HTML files.
 | 
						|
While viewing the file you want to split, click the :guilabel:`Split mode`
 | 
						|
button under the preview panel |spmb|. Then simply move your mouse to the place
 | 
						|
where you want to split the file and click. A thick green line will show you
 | 
						|
exactly where the split will happen as you move your mouse. Once you have found
 | 
						|
the location you want, simply click and the split will be performed.
 | 
						|
 | 
						|
Splitting the file will automatically update all links and references that
 | 
						|
pointed into the bottom half of the file and will open the newly split file in
 | 
						|
an editor.
 | 
						|
 | 
						|
You can also split a single HTML file at multiple locations automatically, by
 | 
						|
right clicking inside the file in the editor and choosing :guilabel:`Split at
 | 
						|
multiple locations`. This will allow you to easily split a large file at all
 | 
						|
heading tags or all tags having a certain class and so on.
 | 
						|
 | 
						|
.. raw:: html epub
 | 
						|
 | 
						|
    <div style="clear:both"></div>
 | 
						|
 | 
						|
The Live CSS panel
 | 
						|
---------------------
 | 
						|
 | 
						|
.. image:: images/live_css.png
 | 
						|
    :alt: The Live CSS panel
 | 
						|
    :class: float-left-img
 | 
						|
 | 
						|
 | 
						|
The :guilabel:`Live CSS` panel shows you all the style rules that apply to the
 | 
						|
tag you are currently editing. The name of tag, along with its line number in
 | 
						|
the editor are displayed, followed by a list of matching style rules.
 | 
						|
 | 
						|
It is a great way to quickly see which style rules apply to any tag. The view
 | 
						|
also has clickable links (in blue), which take you directly to the location
 | 
						|
where the style was defined, in case you wish to make any changes to the style
 | 
						|
rules. Style rules that apply directly to the tag, as well as rules that are
 | 
						|
inherited from parent tags are shown.
 | 
						|
 | 
						|
The panel also shows you what the finally calculated styles for the tag are.
 | 
						|
Properties in the list that are superseded by higher priority rules are shown
 | 
						|
with a line through them.
 | 
						|
 | 
						|
You can enable the Live CSS panel via :guilabel:`View->Live CSS`.
 | 
						|
 | 
						|
.. raw:: html epub
 | 
						|
 | 
						|
    <div style="clear:both"></div>
 | 
						|
 | 
						|
Miscellaneous tools
 | 
						|
----------------------
 | 
						|
 | 
						|
There are a few more tools that can be useful while you edit the book.
 | 
						|
 | 
						|
The Table of Contents view
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
The Table of Contents view shows you the current table of contents in the book.
 | 
						|
Double clicking on any entry opens the place that entry points to in an editor.
 | 
						|
You can right click to edit the Table of Contents, refresh the view or
 | 
						|
expand/collapse all items. Access this view via :guilabel:`View->Table of
 | 
						|
Contents`.
 | 
						|
 | 
						|
Checking the spelling of words in the book
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
You can run a spelling checker via :guilabel:`Tools->Check spelling`.
 | 
						|
 | 
						|
.. image:: images/edit-book-spell.png
 | 
						|
    :alt: The Check spelling tool
 | 
						|
    :align: center
 | 
						|
    :class: fit-img
 | 
						|
 | 
						|
Words are shown with the number of times they occur in the book and the
 | 
						|
language the word belongs to. Language information is taken from the books
 | 
						|
metadata and from ``lang`` attributes in the HTML files. This allows the spell
 | 
						|
checker to work well even with books that contain text in multiple languages.
 | 
						|
For example, in the following HTML extract, the word color will be checked
 | 
						|
using American English and the word colour using British English::
 | 
						|
 | 
						|
    <div lang="en_US">color <span lang="en_GB">colour</span></div>
 | 
						|
 | 
						|
.. note::
 | 
						|
    You can double click a word to highlight the next occurrence of that word
 | 
						|
    in the editor. This is useful if you wish to manually edit the word, or see
 | 
						|
    what context it is in.
 | 
						|
 | 
						|
To change a word, simply double click one of the suggested alternative
 | 
						|
spellings on the right, or type in your own corrected spelling and click the
 | 
						|
:guilabel:`Change selected word to` button. This will replace all occurrences
 | 
						|
of the word in the book. You can also right click on a word in the main word
 | 
						|
list to change the word conveniently from the right click menu.
 | 
						|
 | 
						|
You can have the spelling checker ignore a word for the current session by
 | 
						|
clicking the :guilabel:`Ignore` button. You can also add a word to the user
 | 
						|
dictionary by clicking the :guilabel:`Add to dictionary` button. The spelling
 | 
						|
checker supports multiple user dictionaries, so you can select the dictionary
 | 
						|
you want the word added to.
 | 
						|
 | 
						|
You can also have the spelling checker display all the words in your book, not
 | 
						|
just the incorrectly spelled ones. This is useful to see what words are most
 | 
						|
common in your book and to run a simple search and replace on individual words.
 | 
						|
 | 
						|
.. note::
 | 
						|
    If you make any changes to the book by editing files while the spell check
 | 
						|
    tool is open, you should click the :guilabel:`Refresh` button in the Spell
 | 
						|
    check tool. If you do not do this and continue to use the Spell check tool,
 | 
						|
    you could lose the changes you have made in the editor.
 | 
						|
 | 
						|
Adding new dictionaries
 | 
						|
###########################
 | 
						|
 | 
						|
The spelling checker comes with builtin dictionaries for the English and
 | 
						|
Spanish languages. You can install your own dictionaries via
 | 
						|
:guilabel:`Preferences->Editor->Manage spelling dictionaries`. The spell
 | 
						|
checker can use dictionaries from the LibreOffice program (in the .oxt
 | 
						|
format). You can download these dictionaries from
 | 
						|
`The LibreOffice Extensions repository <https://extensions.libreoffice.org/?Tags%5B%5D=50>`_.
 | 
						|
 | 
						|
 | 
						|
Inserting special characters
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
You can insert characters that are difficult to type by using the
 | 
						|
:guilabel:`Edit->Insert special character` tool. This shows you all Unicode
 | 
						|
characters, simply click on the character you want to type. If you hold :kbd:`Ctrl`
 | 
						|
while clicking, the window will close itself after inserting the selected
 | 
						|
character. This tool can be used to insert special characters into the main
 | 
						|
text or into any other area of the user interface, such as the Search and
 | 
						|
replace tool.
 | 
						|
 | 
						|
Because there are a lot of characters, you can define your own :guilabel:`Favorite`
 | 
						|
characters, that will be shown first. Simply right click on a character to mark
 | 
						|
it as favorite. You can also right click on a character in favorites to remove
 | 
						|
it from favorites. Finally, you can re-arrange the order of characters in
 | 
						|
favorites by clicking the :guilabel:`Re-arrange favorites` button and then drag
 | 
						|
and dropping the characters in favorites around.
 | 
						|
 | 
						|
You can also directly type in special characters using the keyboard. To do
 | 
						|
this, you type the Unicode code for the character (in hexadecimal) and then
 | 
						|
press the :kbd:`Alt+X` key which will convert the previously typed code
 | 
						|
into the corresponding character. For example, to type ÿ you would type ff and
 | 
						|
then :kbd:`Alt+X`. To type a non-breaking space you would use a0 and then
 | 
						|
:kbd:`Alt+X`, to type the horizontal ellipsis you would use 2026 and
 | 
						|
:kbd:`Alt+X` and so on.
 | 
						|
 | 
						|
Finally, you can type in special characters by using HTML named entities. For
 | 
						|
example, typing   will be replaced by a non breaking space when you type the
 | 
						|
semi-colon. The replacement happens only when typing the semi-colon.
 | 
						|
 | 
						|
The code inspector view
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
This view shows you the HTML coding and CSS that applies to the current element
 | 
						|
of interest. You open it by right clicking a location in the preview panel and
 | 
						|
choosing :guilabel:`Inspect`. It allows you to see the HTML coding for that
 | 
						|
element and more importantly, the CSS styles that apply to it. You can even
 | 
						|
dynamically edit the styles and see what effect your changes have instantly.
 | 
						|
Note that editing the styles does not actually make changes to the book
 | 
						|
contents, it only allows for quick experimentation. The ability to live edit
 | 
						|
inside the Inspector is under development.
 | 
						|
 | 
						|
Checking external links
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
You can use this tool to check all links in your book that point to external
 | 
						|
websites. The tool will try to visit every externally linked website, and
 | 
						|
if the visit fails, it will report all broken links in a convenient format for
 | 
						|
you to fix.
 | 
						|
 | 
						|
 | 
						|
Downloading external resources
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
You can use this tool to automatically download any images/stylesheets/etc. in
 | 
						|
the book that are not bundled with the book (i.e. they have URLs pointing to a
 | 
						|
location on the internet). The tool will find all such resources and
 | 
						|
automatically download them, add them to the book and replace all references to
 | 
						|
them to use the downloaded files.
 | 
						|
 | 
						|
 | 
						|
Arranging files into folders by type
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
Often when editing EPUB files that you get from somewhere, you will find that
 | 
						|
the files inside the EPUB are arranged haphazardly, in different sub-folders.
 | 
						|
This tool allows you to automatically move all files into sub-folders based on
 | 
						|
their types. Access it via :guilabel:`Tools->Arrange into folders`. Note that
 | 
						|
this tool only changes how the files are arranged inside the EPUB, it does not
 | 
						|
change how they are displayed in the File browser.
 | 
						|
 | 
						|
Importing files in other e-book formats as EPUB
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
The editor includes the ability to import files in some other e-book formats
 | 
						|
directly as a new EPUB, without going through a full conversion. This is
 | 
						|
particularly useful to directly create EPUB files from your own hand-edited
 | 
						|
HTML files. You can do this via :guilabel:`File->Import an HTML or DOCX file as
 | 
						|
a new book`.
 | 
						|
 | 
						|
.. toctree::
 | 
						|
    :hidden:
 | 
						|
 | 
						|
    function_mode
 | 
						|
    snippets
 | 
						|
 | 
						|
The Reports tool
 | 
						|
^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
The editor includes a nice *Reports* tool (via :guilabel:`Tools->Reports`) that
 | 
						|
shows summaries of the files, images, links, words, characters and styles used
 | 
						|
in the book. Every line in the report is hot-linked. Double clicking a line
 | 
						|
jumps to the place in the book where that item is used or defined (as
 | 
						|
appropriate). For example, in the :guilabel:`Links` view, you can double click
 | 
						|
entries the :guilabel:`Source` column to jump to where the link is defined and
 | 
						|
entries in the :guilabel:`Target` column to jump to where the link points.
 | 
						|
 | 
						|
.. image:: images/reports-ss.png
 | 
						|
    :alt: The Reports tool
 | 
						|
    :align: center
 | 
						|
    :class: fit-img
 | 
						|
 | 
						|
 | 
						|
Special features in the code editor
 | 
						|
---------------------------------------
 | 
						|
 | 
						|
The calibre HTML editor is very powerful. It has many features that make
 | 
						|
editing of HTML (and CSS) easier.
 | 
						|
 | 
						|
Syntax highlighting
 | 
						|
^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
The HTML editor has very sophisticated syntax highlighting. Features include:
 | 
						|
 | 
						|
    * The text inside bold, italic and heading tags is made bold/italic
 | 
						|
    * As you move your cursor through the HTML, the matching HTML tags are
 | 
						|
      highlighted, and you can jump to the opening or closing tag with the
 | 
						|
      keyboard shortcuts :kbd:`Ctrl+{` and :kbd:`Ctrl+}`. Similarly, you
 | 
						|
      can select the contents of a tag with :kbd:`Ctrl+Alt+T`.
 | 
						|
    * Invalid HTML is highlighted with a red underline
 | 
						|
    * Spelling errors in the text inside HTML tags and attributes such as title
 | 
						|
      are highlighted. The spell checking is language aware, based on the value
 | 
						|
      of the ``lang`` attribute of the current tag and the overall book language.
 | 
						|
    * CSS embedded inside ``<style>`` tags is highlighted
 | 
						|
    * Special characters that can be hard to distinguish such as non-breaking
 | 
						|
      spaces, different types of hyphens, etc. are highlighted.
 | 
						|
    * Links to other files in ``<a>`` tags, ``<img>`` and ``<link>`` tags all
 | 
						|
      have the filenames highlighted. If the filename they point to does not
 | 
						|
      exist, the filename is marked with a red underline.
 | 
						|
 | 
						|
Context sensitive help
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
You can right click on an HTML tag name or a CSS property name to get help for that tag or property.
 | 
						|
 | 
						|
You can also hold down the :kbd:`Ctrl` key and click on any filename inside a link tag
 | 
						|
to open that file in the editor automatically. Similarly, :kbd:`Ctrl` clicking
 | 
						|
a class name will take you to the first style rule that matches the tag and class.
 | 
						|
 | 
						|
Right clicking a class name in an HTML file will allow you to rename the class,
 | 
						|
changing all occurrences of the class throughout the book and all its
 | 
						|
stylesheets.
 | 
						|
 | 
						|
.. _editor_auto_complete:
 | 
						|
 | 
						|
Auto-complete
 | 
						|
^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
When editing an e-book, one of the most tedious tasks is creating links to other
 | 
						|
files inside the book, or to CSS stylesheets, or images. You have to figure out
 | 
						|
the correct filename and relative path to the file. The editor has
 | 
						|
auto-complete to make that easier.
 | 
						|
 | 
						|
As you type a filename, the editor automatically pops up suggestions. Simply
 | 
						|
use the :kbd:`Tab` key to select the correct file name. The editor even offers
 | 
						|
suggestions for links pointing to an anchor inside another HTML file. After you
 | 
						|
type the ``#`` character, the editor will show you a list of all anchors in the
 | 
						|
target file, with a small snippet of text to help you choose the right anchor.
 | 
						|
 | 
						|
Note that unlike most other completion systems, the editor's completion system
 | 
						|
uses subsequence matching. This means that you can type just two or three
 | 
						|
letters from anywhere in the filename to complete the filename. For example,
 | 
						|
say you want the filename ``../images/arrow1.png``, you can simply type ``ia1``
 | 
						|
and press :kbd:`Tab` to complete the filename. When searching for matches, the
 | 
						|
completion system prioritizes letters that are at the start of a word, or
 | 
						|
immediately after a path separator. Once you get used to this system, you will
 | 
						|
find it saves you a lot of time and effort.
 | 
						|
 | 
						|
Snippets
 | 
						|
^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
The calibre E-book editor supports *snippets*. A snippet is a
 | 
						|
piece of text that is either re-used often or contains a lot of redundant
 | 
						|
text. The editor allows you to insert a snippet with only a few key strokes.
 | 
						|
The snippets are very powerful, with many features, such as placeholders you
 | 
						|
can jump between, automatic mirroring of repeated text and so on.
 | 
						|
For more information, see :doc:`snippets`.
 |