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
|
regexp
|
||||||
server
|
server
|
||||||
creating_plugins
|
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:
|
if not tag.text:
|
||||||
tag.getparent().remove(tag)
|
tag.getparent().remove(tag)
|
||||||
for tag in XPath('//h:script')(root):
|
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)
|
tag.getparent().remove(tag)
|
||||||
for tag in XPath('//h:body/descendant::h:script')(root):
|
for tag in XPath('//h:body/descendant::h:script')(root):
|
||||||
tag.getparent().remove(tag)
|
tag.getparent().remove(tag)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user