added textbook
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
Content in Jupyter Book
|
||||
=======================
|
||||
|
||||
There are many ways to write content in Jupyter Book. This short section
|
||||
covers a few tips for how to do so.
|
||||
@@ -0,0 +1,7 @@
|
||||
Welcome to your Jupyter Book
|
||||
============================
|
||||
|
||||
This is a small sample book to give you a feel for how book content is
|
||||
structured.
|
||||
|
||||
Check out the content pages bundled with this sample book to get started.
|
||||
@@ -0,0 +1,125 @@
|
||||
# Markdown Files
|
||||
|
||||
Whether you write your book's content in Jupyter Notebooks (`.ipynb`) or
|
||||
in regular markdown files (`.md`), you'll write in the same flavor of markdown
|
||||
called **MyST Markdown**.
|
||||
|
||||
## What is MyST?
|
||||
|
||||
MyST stands for "Markedly Structured Text". It
|
||||
is a slight variation on a flavor of markdown called "CommonMark" markdown,
|
||||
with small syntax extensions to allow you to write **roles** and **directives**
|
||||
in the Sphinx ecosystem.
|
||||
|
||||
## What are roles and directives?
|
||||
|
||||
Roles and directives are two of the most powerful tools in Jupyter Book. They
|
||||
are kind of like functions, but written in a markup language. They both
|
||||
serve a similar purpose, but **roles are written in one line**, whereas
|
||||
**directives span many lines**. They both accept different kinds of inputs,
|
||||
and what they do with those inputs depends on the specific role or directive
|
||||
that is being called.
|
||||
|
||||
### Using a directive
|
||||
|
||||
At its simplest, you can insert a directive into your book's content like so:
|
||||
|
||||
````
|
||||
```{mydirectivename}
|
||||
My directive content
|
||||
```
|
||||
````
|
||||
|
||||
This will only work if a directive with name `mydirectivename` already exists
|
||||
(which it doesn't). There are many pre-defined directives associated with
|
||||
Jupyter Book. For example, to insert a note box into your content, you can
|
||||
use the following directive:
|
||||
|
||||
````
|
||||
```{note}
|
||||
Here is a note
|
||||
```
|
||||
````
|
||||
|
||||
This results in:
|
||||
|
||||
```{note}
|
||||
Here is a note
|
||||
```
|
||||
|
||||
In your built book.
|
||||
|
||||
For more information on writing directives, see the
|
||||
[MyST documentation](https://myst-parser.readthedocs.io/).
|
||||
|
||||
|
||||
### Using a role
|
||||
|
||||
Roles are very similar to directives, but they are less-complex and written
|
||||
entirely on one line. You can insert a role into your book's content with
|
||||
this pattern:
|
||||
|
||||
```
|
||||
Some content {rolename}`and here is my role's content!`
|
||||
```
|
||||
|
||||
Again, roles will only work if `rolename` is a valid role's name. For example,
|
||||
the `doc` role can be used to refer to another page in your book. You can
|
||||
refer directly to another page by its relative path. For example, the
|
||||
role syntax `` {doc}`intro` `` will result in: {doc}`intro`.
|
||||
|
||||
For more information on writing roles, see the
|
||||
[MyST documentation](https://myst-parser.readthedocs.io/).
|
||||
|
||||
|
||||
### Adding a citation
|
||||
|
||||
You can also cite references that are stored in a `bibtex` file. For example,
|
||||
the following syntax: `` {cite}`holdgraf_evidence_2014` `` will render like
|
||||
this: {cite}`holdgraf_evidence_2014`.
|
||||
|
||||
Moreoever, you can insert a bibliography into your page with this syntax:
|
||||
The `{bibliography}` directive must be used for all the `{cite}` roles to
|
||||
render properly.
|
||||
For example, if the references for your book are stored in `references.bib`,
|
||||
then the bibliography is inserted with:
|
||||
|
||||
````
|
||||
```{bibliography} references.bib
|
||||
```
|
||||
````
|
||||
|
||||
Resulting in a rendered bibliography that looks like:
|
||||
|
||||
```{bibliography} references.bib
|
||||
```
|
||||
|
||||
|
||||
### Executing code in your markdown files
|
||||
|
||||
If you'd like to include computational content inside these markdown files,
|
||||
you can use MyST Markdown to define cells that will be executed when your
|
||||
book is built. Jupyter Book uses *jupytext* to do this.
|
||||
|
||||
First, add Jupytext metadata to the file. For example, to add Jupytext metadata
|
||||
to this markdown page, run this command:
|
||||
|
||||
```
|
||||
jupyter-book myst init markdown.md
|
||||
```
|
||||
|
||||
Once a markdown file has Jupytext metadata in it, you can add the following
|
||||
directive to run the code at build time:
|
||||
|
||||
````
|
||||
```{code-cell}
|
||||
print("Here is some code to execute")
|
||||
```
|
||||
````
|
||||
|
||||
When your book is built, the contents of any `{code-cell}` blocks will be
|
||||
executed with your default Jupyter kernel, and their outputs will be displayed
|
||||
in-line with the rest of your content.
|
||||
|
||||
For more information about executing computational content with Jupyter Book,
|
||||
see [The MyST-NB documentation](https://myst-nb.readthedocs.io/).
|
||||
@@ -0,0 +1,122 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Content with notebooks\n",
|
||||
"\n",
|
||||
"You can also create content with Jupyter Notebooks. This means that you can include\n",
|
||||
"code blocks and their outputs in your book.\n",
|
||||
"\n",
|
||||
"## Markdown + notebooks\n",
|
||||
"\n",
|
||||
"As it is markdown, you can embed images, HTML, etc into your posts!\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"You an also $add_{math}$ and\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"math^{blocks}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"or\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"\\mbox{mean} la_{tex} \\\\ \\\\\n",
|
||||
"math blocks\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"But make sure you \\$Escape \\$your \\$dollar signs \\$you want to keep!\n",
|
||||
"\n",
|
||||
"## MyST markdown\n",
|
||||
"\n",
|
||||
"MyST markdown works in Jupyter Notebooks as well. For more information about MyST markdown, check\n",
|
||||
"out [the MyST guide in Jupyter Book](https://jupyterbook.org/content/myst.html),\n",
|
||||
"or see [the MyST markdown documentation](https://myst-parser.readthedocs.io/en/latest/).\n",
|
||||
"\n",
|
||||
"## Code blocks and outputs\n",
|
||||
"\n",
|
||||
"Jupyter Book will also embed your code blocks and output in your book.\n",
|
||||
"For example, here's some sample Matplotlib code:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from matplotlib import rcParams, cycler\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
"plt.ion()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Fixing random state for reproducibility\n",
|
||||
"np.random.seed(19680801)\n",
|
||||
"\n",
|
||||
"N = 10\n",
|
||||
"data = [np.logspace(0, 1, 100) + np.random.randn(100) + ii for ii in range(N)]\n",
|
||||
"data = np.array(data).T\n",
|
||||
"cmap = plt.cm.coolwarm\n",
|
||||
"rcParams['axes.prop_cycle'] = cycler(color=cmap(np.linspace(0, 1, N)))\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"from matplotlib.lines import Line2D\n",
|
||||
"custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4),\n",
|
||||
" Line2D([0], [0], color=cmap(.5), lw=4),\n",
|
||||
" Line2D([0], [0], color=cmap(1.), lw=4)]\n",
|
||||
"\n",
|
||||
"fig, ax = plt.subplots(figsize=(10, 5))\n",
|
||||
"lines = ax.plot(data)\n",
|
||||
"ax.legend(custom_lines, ['Cold', 'Medium', 'Hot']);"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"There is a lot more that you can do with outputs (such as including interactive outputs)\n",
|
||||
"with your book. For more information about this, see [the Jupyter Book documentation](https://jupyterbook.org)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.8.0"
|
||||
},
|
||||
"widgets": {
|
||||
"application/vnd.jupyter.widget-state+json": {
|
||||
"state": {},
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
Reference in New Issue
Block a user