mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Add documentation on maths in ebooks
This commit is contained in:
parent
5bd3086aed
commit
67998e55af
BIN
manual/images/lorentz.png
Normal file
BIN
manual/images/lorentz.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.1 KiB |
100
manual/mathjax.html
Normal file
100
manual/mathjax.html
Normal file
@ -0,0 +1,100 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<!-- Copyright (c) 2012 Design Science, Inc. -->
|
||||
<head>
|
||||
<title>Math Test Page</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<!-- This script tag is needed to make calibre's ebook-viewer recpgnize that this file needs math typesetting -->
|
||||
<script type="text/x-mathjax-config"></script>
|
||||
|
||||
<style>
|
||||
h1 {text-align:center}
|
||||
h2 {
|
||||
font-weight: bold;
|
||||
background-color: #DDDDDD;
|
||||
padding: .2em .5em;
|
||||
margin-top: 1.5em;
|
||||
border-top: 3px solid #666666;
|
||||
border-bottom: 2px solid #999999;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Sample Equations</h1>
|
||||
|
||||
<blockquote>
|
||||
|
||||
<h2>The Lorenz Equations</h2>
|
||||
|
||||
<p>
|
||||
\begin{align}
|
||||
\dot{x} & = \sigma(y-x) \\
|
||||
\dot{y} & = \rho x - y - xz \\
|
||||
\dot{z} & = -\beta z + xy
|
||||
\end{align}
|
||||
</p>
|
||||
|
||||
<h2>The Cauchy-Schwarz Inequality</h2>
|
||||
|
||||
<p>\[
|
||||
\left( \sum_{k=1}^n a_k b_k \right)^{\!\!2} \leq
|
||||
\left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)
|
||||
\]</p>
|
||||
|
||||
<h2>A Cross Product Formula</h2>
|
||||
|
||||
<p>\[
|
||||
\mathbf{V}_1 \times \mathbf{V}_2 =
|
||||
\begin{vmatrix}
|
||||
\mathbf{i} & \mathbf{j} & \mathbf{k} \\
|
||||
\frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \\
|
||||
\frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0 \\
|
||||
\end{vmatrix}
|
||||
\]</p>
|
||||
|
||||
<h2>The probability of getting \(k\) heads when flipping \(n\) coins is:</h2>
|
||||
|
||||
<p>\[P(E) = {n \choose k} p^k (1-p)^{ n-k} \]</p>
|
||||
|
||||
<h2>An Identity of Ramanujan</h2>
|
||||
|
||||
<p>\[
|
||||
\frac{1}{(\sqrt{\phi \sqrt{5}}-\phi) e^{\frac25 \pi}} =
|
||||
1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}}
|
||||
{1+\frac{e^{-8\pi}} {1+\ldots} } } }
|
||||
\]</p>
|
||||
|
||||
<h2>A Rogers-Ramanujan Identity</h2>
|
||||
|
||||
<p>\[
|
||||
1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots =
|
||||
\prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},
|
||||
\quad\quad \text{for $|q|<1$}.
|
||||
\]</p>
|
||||
|
||||
<h2>Maxwell's Equations</h2>
|
||||
|
||||
<p>
|
||||
\begin{align}
|
||||
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\
|
||||
\nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
|
||||
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
|
||||
\nabla \cdot \vec{\mathbf{B}} & = 0
|
||||
\end{align}
|
||||
</p>
|
||||
|
||||
<h2>In-line Mathematics</h2>
|
||||
|
||||
<p>Finally, while display equations look good for a page of samples, the
|
||||
ability to mix math and text in a paragraph is also important. This
|
||||
expression \(\sqrt{3x-1}+(1+x)^2\) is an example of an inline equation. As
|
||||
you see, equations can be used this way as well, without unduly
|
||||
disturbing the spacing between lines.</p>
|
||||
|
||||
|
||||
</blockquote>
|
||||
|
||||
</body>
|
||||
</html>
|
BIN
manual/resources/mathjax.epub
Normal file
BIN
manual/resources/mathjax.epub
Normal file
Binary file not shown.
@ -18,4 +18,5 @@ Here you will find tutorials to get you started using |app|'s more advanced feat
|
||||
regexp
|
||||
server
|
||||
creating_plugins
|
||||
typesetting_math
|
||||
|
||||
|
57
manual/typesetting_math.rst
Normal file
57
manual/typesetting_math.rst
Normal file
@ -0,0 +1,57 @@
|
||||
|
||||
.. include:: global.rst
|
||||
|
||||
.. _typesetting_math:
|
||||
|
||||
|
||||
Typesetting Math in ebooks
|
||||
============================
|
||||
|
||||
The |app| ebook viewer has the ability to display math embedded in ebooks (ePuB
|
||||
and HTML files). You can typeset the math directly with TeX or MathML or
|
||||
AsciiMath. The |app| viewer uses the excellent `MathJax
|
||||
<http://www.mathjax.org>`_ library to do this. This is a brief tutorial on
|
||||
creating ebooks with math in them that work well with the |app| viewer.
|
||||
|
||||
A simple HTML file with mathematics
|
||||
======================================
|
||||
|
||||
You can write mathematics inline inside a simple HTML file and the |app| viewer
|
||||
will render it into properly typeset mathematics. In the example below, we use
|
||||
TeX notation for mathematics. You will see that you can use normal TeX
|
||||
commands, with the small caveat that ampersands and less than and greater than
|
||||
signs have to be written as & < and > respectively.
|
||||
|
||||
The first step is to tell |app| that this will contains maths. You do this by
|
||||
adding the following snippet of code to the <head> section of the HTML file::
|
||||
|
||||
<script type="text/x-mathjax-config"></script>
|
||||
|
||||
That's it, now you can type mathematics just as you would in a .tex file. For
|
||||
example, here are Lorentz's equations::
|
||||
|
||||
<h2>The Lorenz Equations</h2>
|
||||
|
||||
<p>
|
||||
\begin{align}
|
||||
\dot{x} & = \sigma(y-x) \\
|
||||
\dot{y} & = \rho x - y - xz \\
|
||||
\dot{z} & = -\beta z + xy
|
||||
\end{align}
|
||||
</p>
|
||||
|
||||
This snippet looks like the following screen shot in the |app| viewer.
|
||||
|
||||
.. figure:: images/lorentz.png
|
||||
:align: center
|
||||
|
||||
:guilabel:`The Lorentz Equations`
|
||||
|
||||
The complete HTML file, with more equations and inline mathematics is
|
||||
reproduced below. Also, a link the EPUB version, generated by converting the
|
||||
HTML file to EPUB in |app|: `mathjax.epub <_static/mathjax.epub>`_.
|
||||
|
||||
.. literalinclude:: mathjax.html
|
||||
:language: html
|
||||
:emphasize-lines: 8,9,29-38
|
||||
|
@ -388,7 +388,8 @@ class EPUBOutput(OutputFormatPlugin):
|
||||
if not tag.text:
|
||||
tag.getparent().remove(tag)
|
||||
for tag in XPath('//h:script')(root):
|
||||
if not tag.text and not tag.get('src', False):
|
||||
if (not tag.text and not tag.get('src', False) and
|
||||
tag.get('type', None) != 'text/x-mathjax-config'):
|
||||
tag.getparent().remove(tag)
|
||||
for tag in XPath('//h:body/descendant::h:script')(root):
|
||||
tag.getparent().remove(tag)
|
||||
|
Loading…
x
Reference in New Issue
Block a user