diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 26d287e2..afa99f5c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -93,8 +93,9 @@ jobs: run: | from pathlib import Path text = Path("./warnings.txt").read_text().strip() + expected_warning_snippets = ["kitchen-sink", "urllib/parse.py"] print("\n=== Sphinx Warnings ===\n\n" + text) # Print just for reference so we can look at the logs - unexpected = [ii for ii in text.split("\n") if "kitchen-sink" not in ii] + unexpected = [ii for ii in text.split("\n") if not any(snippet in ii for snippet in expected_warning_snippets)] assert len(unexpected) == 0 - name: Audit with Lighthouse diff --git a/docs/conf.py b/docs/conf.py index b9fd713f..22bc47f5 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,7 +1,5 @@ # -- Project information ----------------------------------------------------- import os -from pathlib import Path -from urllib import request project = "Sphinx Book Theme" copyright = "2020" @@ -31,6 +29,8 @@ "sphinx_togglebutton", "sphinxcontrib.bibtex", "sphinxext.opengraph", + # For the kitchen sink + "sphinx.ext.todo", ] # Add any paths that contain templates here, relative to this directory. @@ -153,27 +153,6 @@ "https://doi.org", # These don't resolve properly and cause SSL issues ] -# -- Download kitchen sink reference docs ------------------------------------- -# These are the kitchen sink files used by the Sphinx Themes gallery at -# https://github.com/sphinx-themes/sphinx-themes.org -# To re-download, delete the `references/kitchen-sink` folder and build the docs -kitchen_sink_files = [ - "api.rst", - "index.rst", - "lists-and-tables.rst", - "paragraph-markup.rst", -] -for ifile in kitchen_sink_files: - path_file = Path(f"reference/kitchen-sink/{ifile}") - path_file.parent.mkdir(exist_ok=True) - if not path_file.exists(): - print(f"Downloading kitchen sink file {ifile}") - resp = request.urlopen( - f"https://github.com/sphinx-themes/sphinx-themes.org/raw/master/sample-docs/kitchen-sink/{ifile}" # noqa: E501 - ) - header = ".. DOWNLOADED FROM sphinx-themes.org, DO NOT MANUALLY EDIT\n" - path_file.write_text(header + resp.read().decode()) - def setup(app): # -- To demonstrate ReadTheDocs switcher ------------------------------------- diff --git a/docs/reference/extensions.md b/docs/reference/extensions.md index 163f2f3f..bc72297f 100644 --- a/docs/reference/extensions.md +++ b/docs/reference/extensions.md @@ -20,9 +20,6 @@ And here's a bibliography: ```{bibliography} ``` -:::{seealso} -See the [paragraph markup page](kitchen-sink/paragraph-markup.rst) for more references styling. -::: ## `ABlog` - Blog post list diff --git a/docs/reference/kitchen-sink/admonitions.rst b/docs/reference/kitchen-sink/admonitions.rst new file mode 100644 index 00000000..8789c0d8 --- /dev/null +++ b/docs/reference/kitchen-sink/admonitions.rst @@ -0,0 +1,123 @@ +.. + Copyright (c) 2021 Pradyun Gedam + Licensed under Creative Commons Attribution-ShareAlike 4.0 International License + SPDX-License-Identifier: CC-BY-SA-4.0 + +=========== +Admonitions +=========== + +Sphinx provides several different types of admonitions. + +``topic`` +========= + +.. topic:: This is a topic. + + This is what admonitions are a special case of, according to the docutils + documentation. + +``admonition`` +============== + +.. admonition:: The one with the custom titles + + It's got a certain charm to it. + +``attention`` +============= + +.. attention:: + + Climate change is real. + +``caution`` +=========== + +.. caution:: + + Cliff ahead: Don't drive off it. + +``danger`` +========== + +.. danger:: + + Mad scientist at work! + +``error`` +========= + +.. error:: + + Does not compute. + +``hint`` +======== + +.. hint:: + + Insulators insulate, until they are subject to ______ voltage. + +``important`` +============= + +.. important:: + + Tech is not neutral, nor is it apolitical. + +``note`` +======== + +.. note:: + + This is a note. + +``seealso`` +=========== + +.. seealso:: + + Other relevant information. + +``tip`` +======= + +.. tip:: + + 25% if the service is good. + +``todo`` +======== + +.. todo:: + + This needs the ``sphinx.ext.todo`` extension. + +``warning`` +=========== + +.. warning:: + + Reader discretion is strongly advised. + +``versionadded`` +================ + +.. versionadded:: v0.1.1 + + Here's a version added message. + +``versionchanged`` +================== + +.. versionchanged:: v0.1.1 + + Here's a version changed message. + +``deprecated`` +============== + +.. deprecated:: v0.1.1 + + Here's a deprecation message. diff --git a/docs/reference/kitchen-sink/api.rst b/docs/reference/kitchen-sink/api.rst index 989941b4..b098963f 100644 --- a/docs/reference/kitchen-sink/api.rst +++ b/docs/reference/kitchen-sink/api.rst @@ -1,10 +1,29 @@ -.. DOWNLOADED FROM sphinx-themes.org, DO NOT MANUALLY EDIT +.. + Copyright (c) 2021 Pradyun Gedam + Licensed under Creative Commons Attribution-ShareAlike 4.0 International License + SPDX-License-Identifier: CC-BY-SA-4.0 + ***************** API documentation ***************** -``asyncio`` -=========== +Using Sphinx's ``sphinx.ext.autodoc`` plugin, it is possible to auto-generate documentation of a Python module. + +.. tip:: + Avoid having in-function-signature type annotations with autodoc, + by setting the following options: + + .. code-block:: python + + # -- Options for autodoc ---------------------------------------------------- + # https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#configuration + + # Automatically extract typehints when specified and place them in + # descriptions of the relevant function/method. + autodoc_typehints = "description" + + # Don't show class signature with the class' name. + autodoc_class_signature = "separated" -.. automodule:: asyncio - :members: run, gather, AbstractEventLoop +.. automodule:: urllib.parse + :members: diff --git a/docs/reference/kitchen-sink/blocks.rst b/docs/reference/kitchen-sink/blocks.rst new file mode 100644 index 00000000..0aac91e4 --- /dev/null +++ b/docs/reference/kitchen-sink/blocks.rst @@ -0,0 +1,266 @@ +.. + Copyright (c) 2021 Pradyun Gedam + Licensed under Creative Commons Attribution-ShareAlike 4.0 International License + SPDX-License-Identifier: CC-BY-SA-4.0 + +====== +Blocks +====== + +Block Quotes +============ + +Block quotes consist of indented body elements: + + My theory by A. Elk. Brackets Miss, brackets. This theory goes + as follows and begins now. All brontosauruses are thin at one + end, much much thicker in the middle and then thin again at the + far end. That is my theory, it is mine, and belongs to me and I + own it, and what it is too. + + -- Anne Elk (Miss) + +Epigraph +-------- + +https://docutils.sourceforge.io/docs/ref/rst/directives.html#epigraph + +.. epigraph:: + + My theory by A. Elk. Brackets Miss, brackets. This theory goes + as follows and begins now. All brontosauruses are thin at one + end, much much thicker in the middle and then thin again at the + far end. That is my theory, it is mine, and belongs to me and I + own it, and what it is too. + + -- Anne Elk (Miss) + +Pull quotes +----------- + +https://docutils.sourceforge.io/docs/ref/rst/directives.html#pull-quote + +.. pull-quote:: + + My theory by A. Elk. Brackets Miss, brackets. This theory goes + as follows and begins now. All brontosauruses are thin at one + end, much much thicker in the middle and then thin again at the + far end. That is my theory, it is mine, and belongs to me and I + own it, and what it is too. + + -- Anne Elk (Miss) + +Highlights +---------- + +https://docutils.sourceforge.io/docs/ref/rst/directives.html#highlights + +.. highlights:: + + My theory by A. Elk. Brackets Miss, brackets. This theory goes + as follows and begins now. All brontosauruses are thin at one + end, much much thicker in the middle and then thin again at the + far end. That is my theory, it is mine, and belongs to me and I + own it, and what it is too. + + -- Anne Elk (Miss) + +Line Blocks +=========== + +https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#line-blocks + +This is a normal text paragraph. + +| This is a line block. It ends with a blank line. +| Each new line begins with a vertical bar ("|"). +| Line breaks and initial indents are preserved. +| Continuation lines are wrapped portions of long lines; + they begin with a space in place of the vertical bar. +| The left edge of a continuation line need not be aligned with + the left edge of the text above it. + +| This is a second line block. +| +| Blank lines are permitted internally, but they must begin with a "|". + +This is a normal text paragraph again. + +Monospace Blocks +================ + +Sphinx supports many kinds of monospace blocks. This section is meant to +showcase *all* of them that as known to the author of this page, at the time of +writing. + +Production List +--------------- + +https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#directive-productionlist + + This directive is used to enclose a group of productions. Each production is given on a single line and consists of a name, separated by a colon from the following definition. + +This just shows up as a vanilla ``
``, which is... both nice and a bit
+annoying.
+
+.. productionlist::
+    try_stmt: try1_stmt | try2_stmt
+    try1_stmt: "try" ":" `suite`
+             : ("except" [`expression` ["," `target`]] ":" `suite`)+
+             : ["else" ":" `suite`]
+             : ["finally" ":" `suite`]
+    try2_stmt: "try" ":" `suite`
+             : "finally" ":" `suite`
+             : "this-is-intentionally-very-stupidly-long-to-make-sure-that-this-has-a-proper-scrollbar"
+
+Literal Blocks
+--------------
+
+https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#literal-blocks
+
+    contains a block of text where line breaks and whitespace are significant and must be preserved
+
+This is a normal text paragraph. The next paragraph is a code sample::
+
+    It is not processed in any way, except
+    that the indentation is removed.
+
+    It can span multiple lines.
+
+This is a normal text paragraph again.
+
+They can be quoted without indentation::
+
+>> Great idea!
+>
+> Why didn't I think of that?
+
+.. literalinclude:: ../../../src/sphinx_book_theme/__init__.py
+    :language: python
+    :caption: Literal includes can also have captions.
+    :linenos:
+    :lines: 10-20
+
+Doctest Blocks
+--------------
+
+https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#doctest-blocks
+
+    Doctest blocks are interactive Python sessions cut-and-pasted into docstrings. They are meant to illustrate usage by example, and provide an elegant and powerful testing environment via the doctest module in the Python standard library.
+
+.. note::
+
+    This is fine.
+
+>>> print('Python-specific usage examples; begun with ">>>"')
+Python-specific usage examples; begun with ">>>"
+>>> print("(cut and pasted from interactive Python sessions)")
+(cut and pasted from interactive Python sessions)
+>>> print("This is an intentionally very long line because I want to make sure that we are handling scrollable code blocks correctly.")
+This is an intentionally very long line because I want to make sure that we are handling scrollable code blocks correctly.
+
+Parsed Literals
+---------------
+
+https://docutils.sourceforge.io/docs/ref/rst/directives.html#parsed-literal-block
+
+    It is equivalent to a line block with different rendering: typically in a typewriter/monospaced typeface, like an ordinary literal block. Parsed literal blocks are useful for adding hyperlinks to code examples.
+
+.. parsed-literal::
+
+    # parsed-literal test
+    curl -O http://someurl/release-0.1.0.tar-gz
+    echo "This is an intentionally very long line because I want to make sure that we are handling scrollable code blocks correctly."
+
+Code Block
+----------
+
+https://docutils.sourceforge.io/docs/ref/rst/directives.html#code
+
+    The "code" directive constructs a literal block [containing code].
+
+This has an alias of ``code-block``.
+
+
+.. code-block:: python
+    :linenos:
+
+    from typing import Iterator
+
+    # This is an example
+    class Math:
+        @staticmethod
+        def fib(n: int) -> Iterator[int]:
+            """Fibonacci series up to n"""
+            a, b = 0, 1
+            while a < n:
+                yield a
+                a, b = b, a + b
+
+
+    result = sum(Math.fib(42))
+    print("The answer is {}".format(result))
+
+
+With caption
+~~~~~~~~~~~~
+
+.. code-block:: json
+    :caption: Code Blocks can have captions, which also adds a link to it.
+
+    {
+      "session_name": "shorthands",
+      "windows": [
+        {
+          "panes": [
+            {
+              "shell_command": "echo 'This is an intentionally very long line because I want to make sure that we are handling scrollable code blocks correctly.'"
+            }
+          ],
+          "window_name": "long form"
+        }
+      ]
+    }
+
+With line numbers
+~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+    :linenos:
+    :emphasize-lines: 3,5
+
+    def some_function():
+        interesting = False
+        print("This line is highlighted.")
+        print("This one is not...")
+        print("...but this one is.")
+        print(
+            "This is an intentionally very long line because I want to make sure that we are handling scrollable code blocks correctly."
+        )
+
+With ``none`` highlighting
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: none
+
+    # Taken from https://en.wikipedia.org/wiki/Pseudocode#Example
+    algorithm ford-fulkerson is
+        input: Graph G with flow capacity c,
+            source node s,
+            sink node t
+        output: Flow f such that f is maximal from s to t
+
+        (Note that f(u,v) is the flow from node u to node v, and c(u,v) is the flow capacity from node u to node v)
+
+        for each edge (u, v) in GE do
+            f(u, v) ← 0
+            f(v, u) ← 0
+
+        while there exists a path p from s to t in the residual network Gf do
+            let cf be the flow capacity of the residual network Gf
+            cf(p) ← min{cf(u, v) | (u, v) in p}
+            for each edge (u, v) in p do
+                f(u, v) ←  f(u, v) + cf(p)
+                f(v, u) ← −f(u, v)
+
+        return f
diff --git a/docs/reference/kitchen-sink/generic.rst b/docs/reference/kitchen-sink/generic.rst
new file mode 100644
index 00000000..ac863347
--- /dev/null
+++ b/docs/reference/kitchen-sink/generic.rst
@@ -0,0 +1,271 @@
+..
+   Copyright (c) 2021 Pradyun Gedam
+   Licensed under Creative Commons Attribution-ShareAlike 4.0 International License
+   SPDX-License-Identifier: CC-BY-SA-4.0
+
+.. |EXAMPLE| image:: https://source.unsplash.com/32x32/daily?icon
+    :width: 1em
+
+=============
+Generic items
+=============
+
+These are the things that don't quite fit into other groupings.
+
+Inline Markup
+=============
+
+One of the nice things about markup languages is the ability to have inline
+markup. This makes the presentation *much* nicer. The **bold** text shouldn't
+be too overbearing. It is very common to have ``inline code`` as well. It is
+important to ensure that the inline code doesn't have a line height that is
+greater than the regular prose; otherwise the spacing looks weird.
+
+It is also possible to use explicit roles to do things like a :sub:`subscript`,
+a :sup:`superscript`, :emphasis:`emphasis`, :strong:`strong`, and
+:literal:`literal`.
+
+Hyperlinks
+----------
+
+It is a website, so it'll have hyperlinks like http://www.python.org (inline),
+or Python_ (external reference), example_ (internal reference),
+`Python web site `__ (external hyperlinks with embedded
+URI), footnote references (manually numbered [1]_, anonymous auto-numbered [#]_,
+labeled auto-numbered [#label]_, or symbolic [*]_), citation references ([12]_),
+substitution references (|example|), and _`inline hyperlink targets`
+(see Targets_ below for a reference back to here).
+
+reStructuredText has character-level inline markup too. It's ugly to write, but
+someone might be using it, so here's an example: **re**\ ``Structured``\ *Text*.
+
+It is also possible to link to documented items, such as
+:class:`api_sample.RandomNumberGenerator`.
+
+Interpreted text
+----------------
+
+The default role for "interpreted text" (AKA single backticks) is
+`Title Reference`. There are other reference syntaxes as well: :PEP:`287` and
+:RFC:`2822`.
+
+If the ``--pep-references`` option was supplied, there should be a live link to
+PEP 258 here.
+
+GUI labels
+^^^^^^^^^^
+
+According to the RST demo, GUI labels (like :guilabel:`this label`) are a way to
+indicate that some action is to be taken by the user. Like inline code literals,
+GUI labels should not run over line height.
+
+Keys / Menu labels
+^^^^^^^^^^^^^^^^^^
+
+Key-bindings indicate that the read is to press a button on the keyboard or
+mouse, for example :kbd:`MMB`, :kbd:`⌘+⇧+M` and :kbd:`Shift-MMB`. Another
+useful way is ``menuselection`` to show menus:
+:menuselection:`My --> Software --> Some menu --> Some sub menu 1 --> Some sub menu 2 --> Some sub menu 3`
+
+For example, ``menuselection`` should break when it is too long to fit on a
+single line.
+
+Long inline code wrapping
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. DO NOT RE-WRAP THE FOLLOWING PARAGRAPH!
+
+Let's test wrapping and whitespace significance in inline literals:
+``This is an example of --inline-literal --text, --including some--
+strangely--hyphenated-words.  Adjust-the-width-of-your-browser-window
+to see how the text is wrapped.  -- ---- --------  Now note    the
+spacing    between the    words of    this sentence    (words
+should    be grouped    in pairs).``
+
+Math
+====
+
+This is a test. Here is an equation:
+:math:`X_{0:5} = (X_0, X_1, X_2, X_3, X_4)`.
+Here is another:
+
+.. math::
+    :label: This is a label
+
+    \nabla^2 f =
+    \frac{1}{r^2} \frac{\partial}{\partial r}
+    \left( r^2 \frac{\partial f}{\partial r} \right) +
+    \frac{1}{r^2 \sin \theta} \frac{\partial f}{\partial \theta}
+    \left( \sin \theta \, \frac{\partial f}{\partial \theta} \right) +
+    \frac{1}{r^2 \sin^2\theta} \frac{\partial^2 f}{\partial \phi^2}
+
+You can add a link to equations like the one above :eq:`This is a label` by using
+``:eq:``.
+
+
+Sidebar
+=======
+
+.. sidebar:: Ch'ien / The Creative
+
+    Lorem ipsum dolor sit amet consectetur adipisicing elit.
+
+    .. image:: https://source.unsplash.com/200x200/daily?cute+puppy
+
+    Lorem ipsum dolor sit amet consectetur adipisicing elit.
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusamus, sunt
+voluptatum tenetur libero nulla esse veritatis accusantium earum commodi hic
+voluptatem officia culpa optio atque. Quaerat sed quibusdam ratione nam.
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusamus, sunt
+voluptatum tenetur libero nulla esse veritatis accusantium earum commodi hic
+voluptatem officia culpa optio atque. Quaerat sed quibusdam ratione nam.
+
+Code with Sidebar
+-----------------
+
+.. sidebar:: A code example
+
+    With a sidebar on the right.
+
+.. code-block:: python
+    :caption: Code blocks can also have captions.
+    :linenos:
+
+    print("one")
+    print("two")
+    print("three")
+    print("four")
+    print("five")
+    print("six")
+    print("seven")
+    print("eight")
+    print("nine")
+    print("ten")
+    print("eleven")
+    print("twelve")
+    print("thirteen")
+    print("fourteen")
+
+References
+==========
+
+Footnotes
+---------
+
+.. [1] A footnote contains body elements, consistently indented by at
+   least 3 spaces.
+
+   This is the footnote's second paragraph.
+
+.. [#label] Footnotes may be numbered, either manually (as in [1]_) or
+   automatically using a "#"-prefixed label.  This footnote has a
+   label so it can be referred to from multiple places, both as a
+   footnote reference ([#label]_) and as a hyperlink reference
+   (label_).
+
+.. [#] This footnote is numbered automatically and anonymously using a
+   label of "#" only.
+
+.. [*] Footnotes may also use symbols, specified with a "*" label.
+   Here's a reference to the next footnote: [*]_.
+
+.. [*] This footnote shows the next symbol in the sequence.
+
+Citations
+---------
+
+.. [12] This citation has some ``code blocks`` in it, maybe some **bold** and
+       *italics* too. Heck, lets put a link to a meta citation [13]_ too.
+
+.. [13] This citation will have one backlink.
+
+Here's a reference to the above, [12]_ citation.
+
+Here is another type of citation: `citation`
+
+Targets
+-------
+
+.. _example:
+
+This paragraph is pointed to by the explicit "example" target.
+A reference can be found under `Inline Markup`_, above. `Inline
+hyperlink targets`_ are also possible.
+
+Section headers are implicit targets, referred to by name. See
+Targets_.
+
+Explicit external targets are interpolated into references such as "Python_".
+
+.. _Python: http://www.python.org/
+
+Targets may be indirect and anonymous.  Thus `this phrase`__ may also
+refer to the Targets_ section.
+
+__ Targets_
+
+Target Footnotes
+----------------
+
+.. target-notes::
+
+Centered text
+=============
+
+You can create a statement with centered text with ``.. centered::``
+
+.. centered:: This is centered text!
+
+Rubric
+======
+
+  A rubric is like an informal heading that doesn't correspond to the document's structure.
+
+  -- https://docutils.sourceforge.io/docs/ref/rst/directives.html#rubric
+
+Wikipedia says it is something different:
+
+  A rubric is a word or section of text that is traditionally written or printed in red ink for emphasis.
+
+  -- https://en.wikipedia.org/wiki/Rubric
+
+This is stylized as docutils tells us to stylize it, since it is used for footnote headers (see end of https://docs.python.org/3/reference/lexical_analysis.html)
+
+.. rubric:: This is a rubric
+
+Sidebars and Rubrics
+--------------------
+
+.. sidebar:: Sidebar Title
+   :subtitle: Optional Subtitle
+
+   This is a sidebar.  It is for text outside the flow of the main
+   text.
+
+   .. rubric:: This is a rubric inside a sidebar
+
+   Sidebars often appears beside the main text with a border and
+   background color.
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusamus, sunt
+voluptatum tenetur libero nulla esse veritatis accusantium earum commodi hic
+voluptatem officia culpa optio atque. Quaerat sed quibusdam ratione nam.
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusamus, sunt
+voluptatum tenetur libero nulla esse veritatis accusantium earum commodi hic
+voluptatem officia culpa optio atque. Quaerat sed quibusdam ratione nam.
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusamus, sunt
+voluptatum tenetur libero nulla esse veritatis accusantium earum commodi hic
+voluptatem officia culpa optio atque. Quaerat sed quibusdam ratione nam.
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusamus, sunt
+voluptatum tenetur libero nulla esse veritatis accusantium earum commodi hic
+voluptatem officia culpa optio atque. Quaerat sed quibusdam ratione nam.
+
+Download Links
+==============
+
+:download:`This long long long long long long long long long long long long long long long download link should wrap white-spaces `
diff --git a/docs/reference/kitchen-sink/images.rst b/docs/reference/kitchen-sink/images.rst
new file mode 100644
index 00000000..ecb7164d
--- /dev/null
+++ b/docs/reference/kitchen-sink/images.rst
@@ -0,0 +1,89 @@
+..
+   Copyright (c) 2021 Pradyun Gedam
+   Licensed under Creative Commons Attribution-ShareAlike 4.0 International License
+   SPDX-License-Identifier: CC-BY-SA-4.0
+
+================
+Images & Figures
+================
+
+Images
+------
+
+An image:
+
+.. image:: https://source.unsplash.com/200x200/daily?cute+puppy
+   :height: 200
+   :width: 200
+
+A clickable image:
+
+.. image:: https://source.unsplash.com/200x200/daily?cute+puppy
+   :target: https://unsplash.com/
+   :height: 200
+   :width: 200
+
+.. image:: https://source.unsplash.com/200x200/daily?cute+puppy
+   :align: right
+   :height: 200
+   :width: 200
+
+This is a lot of text to go along with a right-aligned image, that is
+helping make this content feel less linear. It is important to have such
+a body of text, since the image is meant to be "floated" to the right,
+which would interfere with the rest of the document otherwise.
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Blanditiis
+sapiente veritatis doloribus accusantium molestiae modi recusandae
+excepturi facere, corrupti expedita sit nihil temporibus eius sequi
+animi, illo libero labore fuga.
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Blanditiis
+sapiente veritatis doloribus accusantium molestiae modi recusandae
+excepturi facere, corrupti expedita sit nihil temporibus eius sequi
+animi, illo libero labore fuga.
+
+.. image:: https://source.unsplash.com/200x200/daily?cute+puppy
+   :align: left
+   :height: 200
+   :width: 200
+
+This is a lot of text to go along with a left-aligned image, that is
+helping make this content feel less linear. It is important to have such
+a body of text, since the image is meant to be "floated" to the right,
+which would interfere with the rest of the document otherwise.
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Blanditiis
+sapiente veritatis doloribus accusantium molestiae modi recusandae
+excepturi facere, corrupti expedita sit nihil temporibus eius sequi
+animi, illo libero labore fuga.
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Blanditiis
+sapiente veritatis doloribus accusantium molestiae modi recusandae
+excepturi facere, corrupti expedita sit nihil temporibus eius sequi
+animi, illo libero labore fuga.
+
+Figures
+-------
+
+.. figure:: https://source.unsplash.com/200x200/daily?cute+puppy
+   :alt: reStructuredText, the markup syntax
+
+   A figure is an image with a caption and/or a legend:
+
+   +------------+-----------------------------------------------+
+   | re         | Revised, revisited, based on 're' module.     |
+   +------------+-----------------------------------------------+
+   | Structured | Structure-enhanced text, structuredtext.      |
+   +------------+-----------------------------------------------+
+   | Text       | Well it is, isn't it?                         |
+   +------------+-----------------------------------------------+
+
+   This paragraph is also part of the legend.
+
+A figure directive with center alignment
+
+.. figure:: https://source.unsplash.com/200x200/daily?cute+puppy
+   :align: center
+
+   This caption should be centered.
diff --git a/docs/reference/kitchen-sink/index.rst b/docs/reference/kitchen-sink/index.rst
index 552ca51f..d0cb19f4 100644
--- a/docs/reference/kitchen-sink/index.rst
+++ b/docs/reference/kitchen-sink/index.rst
@@ -1,12 +1,31 @@
-.. DOWNLOADED FROM sphinx-themes.org, DO NOT MANUALLY EDIT
-============
+..
+   Copyright (c) 2021 Pradyun Gedam
+   Licensed under Creative Commons Attribution-ShareAlike 4.0 International License
+   SPDX-License-Identifier: CC-BY-SA-4.0
+
 Kitchen Sink
 ============
 
-This section showcases the various elements that Sphinx supports out-of-the-box.
+
+.. AUTOGENERATED by docs/scripts/update_kitchen_sink.py
+
+.. note::
+
+   The Kitchen Sink was generated from the `Sphinx Themes website `_, a community-supported showcase of themes for `Sphinx `_.
+   Check it out to see other great themes.
+
+   .. button-link:: https://sphinx-themes.org
+      :color: primary
+
+      Go to Sphinx Themes
+
+
+This section exists as a dump of all the things that Sphinx has.
+
+It has exactly one goal: to be a good checklist of things to stylise within Sphinx. This also means that it is a complete showcase of *everything* that vanilla Sphinx provides and includes all sorts of edge cases.
 
 .. toctree::
+    :titlesonly:
+    :glob:
 
-  paragraph-markup
-  api
-  lists-and-tables
+    *
diff --git a/docs/reference/kitchen-sink/lists-and-tables.rst b/docs/reference/kitchen-sink/lists-and-tables.rst
deleted file mode 100644
index 097bb8ac..00000000
--- a/docs/reference/kitchen-sink/lists-and-tables.rst
+++ /dev/null
@@ -1,346 +0,0 @@
-.. DOWNLOADED FROM sphinx-themes.org, DO NOT MANUALLY EDIT
-**************
-Lists & Tables
-**************
-
-Lists
-=====
-
-Enumerated Lists
-----------------
-
-1. Arabic numerals.
-
-   a) lower alpha)
-
-      (i) (lower roman)
-
-          A. upper alpha.
-
-             I) upper roman)
-
-2. Lists that don't start at 1:
-
-   3. Three
-
-   4. Four
-
-   C. C
-
-   D. D
-
-   iii. iii
-
-   iv. iv
-
-#. List items may also be auto-enumerated.
-
-Definition Lists
-----------------
-
-Term
-    Definition
-Term : classifier
-    Definition paragraph 1.
-
-    Definition paragraph 2.
-Term
-    Definition
-
-I have no clue why the definition list below is classified as a different style
-of definition list than the one above.
-
-Is it the spaces in the term?
-    Maybe it was the multiple line paragraph
-    in the line below that caused this?
-
-Is it the paragraph above the list maybe?
-    I guess a lot of these lists don't have leading paragraphs?
-
-Is it everything all at once?
-    Who knows?!
-
-Option Lists
-------------
-
-For listing command-line options:
-
--a            command-line option "a"
--b file       options can have arguments
-              and long descriptions
---long        options can be long also
---input=file  long options can also have
-              arguments
-
---very-long-option
-              The description can also start on the next line.
-
-              The description may contain multiple body elements,
-              regardless of where it starts.
-
--x, -y, -z    Multiple options are an "option group".
--v, --verbose  Commonly-seen: short & long options.
--1 file, --one=file, --two file
-              Multiple options with arguments.
-/V            DOS/VMS-style options too
-
-There must be at least two spaces between the option and the description.
-
-Field list
-----------
-
-.. bibliographic fields (which also require a transform):
-
-:Author: David Goodger
-:Address: 123 Example Street
-          Example, EX  Canada
-          A1B 2C3
-:Contact: docutils-develop@lists.sourceforge.net
-:Authors: Me; Myself; I
-:organization: humankind
-:date: $Date: 2012-01-03 19:23:53 +0000 (Tue, 03 Jan 2012) $
-:status: This is a "work in progress"
-:revision: $Revision: 7302 $
-:version: 1
-:copyright: This document has been placed in the public domain. You
-            may do with it as you wish. You may copy, modify,
-            redistribute, reattribute, sell, buy, rent, lease,
-            destroy, or improve it, quote it at length, excerpt,
-            incorporate, collate, fold, staple, or mutilate it, or do
-            anything else to it that your or anyone else's heart
-            desires.
-:field name: This is a generic bibliographic field.
-:field name 2:
-    Generic bibliographic fields may contain multiple body elements.
-
-    Like this.
-
-:Dedication:
-
-    For Docutils users & co-developers.
-
-:abstract:
-
-    This document is a demonstration of the reStructuredText markup
-    language, containing examples of all basic reStructuredText
-    constructs and many advanced constructs.
-
-Bullet Lists
-------------
-
-..
-    Docutils supports two types of lists, "simple" and "complex". Complex lists
-    have item margins, simple lists do not.
-    https://docutils.sourceforge.io/sandbox/html4strict/data/simple-lists.html
-
-Simple
-^^^^^^
-
-- A simple list.
-- There are no margins between list items.
-- Simple lists do not contain multiple paragraphs. That's a complex list.
-- In the case of a nested list
-
-  - There are no margins between elements
-
-    - Still no margins
-
-      - Still no margins
-
-Complex
-^^^^^^^
-
-- A bullet list
-
-  + Nested bullet list.
-  + Nested item 2.
-
-- Item 2.
-
-  Paragraph 2 of item 2.
-
-  * Nested bullet list.
-  * Nested item 2.
-
-    - Third level.
-    - Item 2.
-
-  * Nested item 3.
-
-- ``inline literall``
-- ``inline literall``
-- ``inline literall``
-- This item has multiple paragraphs.
-
-  This item has multiple paragraphs.
-- This item has multiple paragraphs.
-
-  This item has multiple paragraphs.
-
-
-Second list level
-^^^^^^^^^^^^^^^^^
-
-- here is a list in a second-level section.
-- `yahoo `_
-- `yahoo `_
-
-  - `yahoo `_
-  - here is an inner bullet ``oh``
-
-    - one more ``with an inline literally``. `yahoo `_
-
-      heh heh. child. try to beat this embed:
-
-      .. literalinclude:: api.rst
-          :language: rst
-          :linenos:
-
-  - and another. `yahoo `_
-  - `yahoo `_
-  - ``hi``
-- how about an admonition?
-
-  .. note::
-      This is a note nested in a list.
-
-- and hehe
-
-But deeper down the rabbit hole
-"""""""""""""""""""""""""""""""
-
-- I kept saying that, "deeper down the rabbit hole". `yahoo `_
-
-  - I cackle at night `yahoo `_.
-- I'm so lonely here in GZ ``guangzhou``
-- A man of python destiny, hopes and dreams. `yahoo `_
-
-  - `yahoo `_
-
-    - `yahoo `_ ``hi``
-    - ``destiny``
-
-Hlists
-------
-
-.. hlist::
-    :columns: 2
-
-    - First item
-    - Second item
-    - Third item
-    - Forth item
-    - Fifth item
-    - Sixths item
-
-.. rubric:: Hlist with images
-
-.. hlist::
-    :columns: 2
-
-    - .. figure:: https://source.unsplash.com/200x200/daily?cute+animals
-
-         This is a short caption for a figure.
-
-    - .. figure:: https://source.unsplash.com/200x200/daily?cute+animals
-
-         This is a long caption for a figure. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
-         Donec porttitor dolor in odio posuere, vitae ornare libero mattis. In lobortis justo vestibulum nibh aliquet, non.
-
-Numbered List
--------------
-
-#. One,
-#. Two.
-#. Three with long text. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
-   Sed feugiat sagittis neque quis eleifend. Duis rutrum lectus sit amet mattis suscipit.
-
-- A) Using bullets and letters. (A)
-- B) Using bullets and letters. (B)
-- C) Using bullets and letters. (C)
-
-Tables
-======
-
-Grid Tables
------------
-
-Here's a grid table followed by a simple table:
-
-+------------------------+------------+----------+----------+
-| Header row, column 1   | Header 2   | Header 3 | Header 4 |
-| (header rows optional) |            |          |          |
-+========================+============+==========+==========+
-| body row 1, column 1   | column 2   | column 3 | column 4 |
-+------------------------+------------+----------+----------+
-| body row 2             | Cells may span columns.          |
-+------------------------+------------+---------------------+
-| body row 3             | Cells may  | - Table cells       |
-+------------------------+ span rows. | - contain           |
-| body row 4             |            | - body elements.    |
-+------------------------+------------+----------+----------+
-| body row 5             | Cells may also be     |          |
-|                        | empty: ``-->``        |          |
-+------------------------+-----------------------+----------+
-
-=====  =====  ======
-   Inputs     Output
-------------  ------
-  A      B    A or B
-=====  =====  ======
-False  False  False
-True   False  True
-False  True   True
-True   True   True
-=====  =====  ======
-
-Giant Tables
-^^^^^^^^^^^^
-
-+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+
-| Header 1   | Header 2   | Header 3  | Header 1   | Header 2   | Header 3  | Header 1   | Header 2   | Header 3  | Header 1   | Header 2   | Header 3  |
-+============+============+===========+============+============+===========+============+============+===========+============+============+===========+
-| body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  |
-+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+
-| body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  |
-+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+
-| body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  |
-+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+
-| body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  |
-+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+
-
-List Tables
------------
-
-.. list-table:: List tables can have captions like this one.
-    :widths: 10 5 10 50
-    :header-rows: 1
-    :stub-columns: 1
-
-    * - List table
-      - Header 1
-      - Header 2
-      - Header 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
-    * - Stub Row 1
-      - Row 1
-      - Column 2
-      - Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
-    * - Stub Row 2
-      - Row 2
-      - Column 2
-      - Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
-    * - Stub Row 3
-      - Row 3
-      - Column 2
-      - Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
-
-.. list-table:: This is a list table with images in it.
-
-    * - .. figure:: https://source.unsplash.com/200x200/daily?cute+animals
-
-           This is a short caption for a figure.
-
-      - .. figure:: https://source.unsplash.com/200x200/daily?cute+animals
-
-           This is a long caption for a figure. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
-           Donec porttitor dolor in odio posuere, vitae ornare libero mattis. In lobortis justo vestibulum nibh aliquet, non.
diff --git a/docs/reference/kitchen-sink/lists.rst b/docs/reference/kitchen-sink/lists.rst
new file mode 100644
index 00000000..a073e9aa
--- /dev/null
+++ b/docs/reference/kitchen-sink/lists.rst
@@ -0,0 +1,268 @@
+..
+   Copyright (c) 2021 Pradyun Gedam
+   Licensed under Creative Commons Attribution-ShareAlike 4.0 International License
+   SPDX-License-Identifier: CC-BY-SA-4.0
+
+=====
+Lists
+=====
+
+Enumerated Lists
+----------------
+
+1. Arabic numerals.
+
+   a) lower alpha)
+
+      (i) (lower roman)
+
+          A. upper alpha.
+
+             I) upper roman)
+
+2. Lists that don't start at 1:
+
+   3. Three
+
+   4. Four
+
+   C. C
+
+   D. D
+
+   iii. iii
+
+   iv. iv
+
+#. List items may also be auto-enumerated.
+
+Definition Lists
+----------------
+
+Term
+    Definition
+Term : classifier
+    Definition paragraph 1.
+
+    Definition paragraph 2.
+Term
+    Definition
+
+I have no clue why the definition list below is classified as a different style
+of definition list than the one above.
+
+Is it the spaces in the term?
+    Maybe it was the multiple line paragraph
+    in the line below that caused this?
+
+Is it the paragraph above the list maybe?
+    I guess a lot of these lists don't have leading paragraphs?
+
+Is it everything all at once?
+    Who knows?!
+
+Option Lists
+------------
+
+For listing command-line options:
+
+-a            command-line option "a"
+-b file       options can have arguments
+              and long descriptions
+--long        options can be long also
+--input=file  long options can also have
+              arguments
+
+--very-long-option
+              The description can also start on the next line.
+
+              The description may contain multiple body elements,
+              regardless of where it starts.
+
+-x, -y, -z    Multiple options are an "option group".
+-v, --verbose  Commonly-seen: short & long options.
+-1 file, --one=file, --two file
+              Multiple options with arguments.
+/V            DOS/VMS-style options too
+
+There must be at least two spaces between the option and the description.
+
+Field list
+----------
+
+:Address: 123 Example Street
+          Example, EX  Canada
+          A1B 2C3
+:Organization: humankind
+:Status: This is a "work in progress"
+:Version: 1
+:Field name: This is a generic bibliographic field.
+:Field name 2:
+    Generic bibliographic fields may contain multiple body elements.
+
+    Like this.
+
+Glossary
+--------
+
+This is a glossary with definition terms for thing like :term:`Writing`:
+
+.. glossary::
+
+  Documentation
+     Provides users with the knowledge they need to use something.
+
+  Reading
+     The process of taking information into ones mind through the use of eyes.
+
+  Writing
+     The process of putting thoughts into a medium for other people to :term:`read `.
+
+Here's another glossary, with more detail. The important bit here is that the contents of the definition are multi-paragraph.
+
+.. glossary::
+
+    Import Package
+
+        A Python module which can contain other modules or recursively, other packages.
+
+        An import package is more commonly referred to with the single word “package”, but this guide will use the expanded term when more clarity is needed to prevent confusion with a Distribution Package which is also commonly called a “package”.
+
+    Package Index
+
+        A repository of distributions with a web interface to automate package discovery and consumption.
+
+Bullet Lists
+------------
+
+..
+    Docutils supports two types of lists, "simple" and "complex". Complex lists
+    have item margins, simple lists do not.
+    https://docutils.sourceforge.io/sandbox/html4strict/data/simple-lists.html
+
+Simple
+^^^^^^
+
+- A simple list.
+- There are no margins between list items.
+- Simple lists do not contain multiple paragraphs. That's a complex list.
+- In the case of a nested list
+
+  - There are no margins between elements
+
+    - Still no margins
+
+      - Still no margins
+
+Complex
+^^^^^^^
+
+- A bullet list
+
+  + Nested bullet list.
+  + Nested item 2.
+
+- Item 2.
+
+  Paragraph 2 of item 2.
+
+  * Nested bullet list.
+  * Nested item 2.
+
+    - Third level.
+    - Item 2.
+
+  * Nested item 3.
+
+- ``inline literall``
+- ``inline literall``
+- ``inline literall``
+- This item has multiple paragraphs.
+
+  This item has multiple paragraphs.
+- This item has multiple paragraphs.
+
+  This item has multiple paragraphs.
+
+
+Second list level
+^^^^^^^^^^^^^^^^^
+
+- here is a list in a second-level section.
+- `yahoo `_
+- `yahoo `_
+
+  - `yahoo `_
+  - here is an inner bullet ``oh``
+
+    - one more ``with an inline literally``. `yahoo `_
+
+      heh heh. child. try to beat this embed:
+
+      .. literalinclude:: ../../../src/sphinx_book_theme/__init__.py
+          :language: python
+          :linenos:
+          :lines: 10-20
+
+  - and another. `yahoo `_
+  - `yahoo `_
+  - ``hi``
+- how about an admonition?
+
+  .. note::
+      This is a note nested in a list.
+
+- and hehe
+
+But deeper down the rabbit hole
+"""""""""""""""""""""""""""""""
+
+- I kept saying that, "deeper down the rabbit hole". `yahoo `_
+
+  - I cackle at night `yahoo `_.
+- I'm so lonely here in GZ ``guangzhou``
+- A man of python destiny, hopes and dreams. `yahoo `_
+
+  - `yahoo `_
+
+    - `yahoo `_ ``hi``
+    - ``destiny``
+
+Hlists
+------
+
+.. hlist::
+    :columns: 2
+
+    - First item
+    - Second item
+    - Third item
+    - Forth item
+    - Fifth item
+    - Sixths item
+
+.. rubric:: Hlist with images
+
+.. hlist::
+    :columns: 2
+
+    - .. figure:: https://source.unsplash.com/200x200/daily?cute+puppy
+
+         This is a short caption for a figure.
+
+    - .. figure:: https://source.unsplash.com/200x200/daily?cute+puppy
+
+         This is a long caption for a figure. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+         Donec porttitor dolor in odio posuere, vitae ornare libero mattis. In lobortis justo vestibulum nibh aliquet, non.
+
+Numbered List
+-------------
+
+#. One,
+#. Two.
+#. Three with long text. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+   Sed feugiat sagittis neque quis eleifend. Duis rutrum lectus sit amet mattis suscipit.
+
+- A) Using bullets and letters. (A)
+- B) Using bullets and letters. (B)
+- C) Using bullets and letters. (C)
diff --git a/docs/reference/kitchen-sink/paragraph-markup.rst b/docs/reference/kitchen-sink/paragraph-markup.rst
deleted file mode 100644
index 9254df99..00000000
--- a/docs/reference/kitchen-sink/paragraph-markup.rst
+++ /dev/null
@@ -1,474 +0,0 @@
-.. DOWNLOADED FROM sphinx-themes.org, DO NOT MANUALLY EDIT
-.. This is a comment. Note how any initial comments are moved by
-   transforms to after the document title, subtitle, and docinfo.
-
-.. demo.rst from: http://docutils.sourceforge.net/docs/user/rst/demo.txt
-
-.. |EXAMPLE| image:: https://source.unsplash.com/200x200/daily?cute+animals
-   :width: 1em
-
-**********************
-Paragraph Level Markup
-**********************
-
-Inline Markup
-=============
-
-Paragraphs contain text and may contain inline markup: *emphasis*, **strong emphasis**, ``inline literals``,
-standalone hyperlinks (http://www.python.org), external hyperlinks (Python_), internal cross-references (example_),
-external hyperlinks with embedded URIs (`Python web site `__), footnote references
-(manually numbered [1]_, anonymous auto-numbered [#]_, labeled auto-numbered [#label]_, or symbolic [*]_),
-citation references ([12]_), substitution references (|example|), and _`inline hyperlink targets`
-(see Targets_ below for a reference back to here). Character-level inline markup is also possible
-(although exceedingly ugly!) in *re*\ ``Structured``\ *Text*. Problems are indicated by |problematic|
-text (generated by processing errors; this one is intentional).
-
-Also with ``sphinx.ext.autodoc``, which I use in the demo, I can link to :class:`test_py_module.test.Foo`.
-It will link you right to my code documentation for it.
-
-The default role for interpreted text is `Title Reference`.  Here are some explicit interpreted text roles:
-a PEP reference (:PEP:`287`); an RFC reference (:RFC:`2822`); a :sub:`subscript`; a :sup:`superscript`;
-and explicit roles for :emphasis:`standard` :strong:`inline` :literal:`markup`.
-
-GUI labels are a useful way to indicate that :guilabel:`Some action` is to be taken by the user.
-The GUI label should not run over ``line-height`` so as not to :guilabel:`interfere` with text from adjacent lines.
-
-Key-bindings indicate that the read is to press a button on the keyboard or mouse,
-for example :kbd:`MMB` and :kbd:`Shift-MMB`. Another useful markup to indicate a user action
-is to use ``menuselection`` this can be used to show short and long menus in software.
-For example, and ``menuselection`` can be seen here that breaks is too long to fit on this line.
-:menuselection:`My --> Software --> Some menu --> Some sub menu 1 --> sub menu 2`.
-
-.. DO NOT RE-WRAP THE FOLLOWING PARAGRAPH!
-
-Let's test wrapping and whitespace significance in inline literals:
-``This is an example of --inline-literal --text, --including some--
-strangely--hyphenated-words.  Adjust-the-width-of-your-browser-window
-to see how the text is wrapped.  -- ---- --------  Now note    the
-spacing    between the    words of    this sentence    (words
-should    be grouped    in pairs).``
-
-If the ``--pep-references`` option was supplied, there should be a live link to PEP 258 here.
-
-Math
-====
-
-This is a test. Here is an equation:
-:math:`X_{0:5} = (X_0, X_1, X_2, X_3, X_4)`.
-Here is another:
-
-.. math::
-    :label: This is a label
-
-    \nabla^2 f =
-    \frac{1}{r^2} \frac{\partial}{\partial r}
-    \left( r^2 \frac{\partial f}{\partial r} \right) +
-    \frac{1}{r^2 \sin \theta} \frac{\partial f}{\partial \theta}
-    \left( \sin \theta \, \frac{\partial f}{\partial \theta} \right) +
-    \frac{1}{r^2 \sin^2\theta} \frac{\partial^2 f}{\partial \phi^2}
-
-You can add a link to equations like the one above :eq:`This is a label` by using ``:eq:``.
-
-Meta
-====
-
-.. meta::
-   :keywords: reStructuredText, demonstration, demo, parser
-   :description lang=en: A demonstration of the reStructuredText
-       markup language, containing examples of all basic
-       constructs and many advanced constructs.
-
-Blocks
-======
-
-Literal Blocks
---------------
-
-Literal blocks are indicated with a double-colon ("::") at the end of
-the preceding paragraph (over there ``-->``).  They can be indented::
-
-    if literal_block:
-        text = 'is left as-is'
-        spaces_and_linebreaks = 'are preserved'
-        markup_processing = None
-
-Or they can be quoted without indentation::
-
->> Great idea!
->
-> Why didn't I think of that?
-
-Line Blocks
------------
-
-| This is a line block.  It ends with a blank line.
-|     Each new line begins with a vertical bar ("|").
-|     Line breaks and initial indents are preserved.
-| Continuation lines are wrapped portions of long lines;
-  they begin with a space in place of the vertical bar.
-|     The left edge of a continuation line need not be aligned with
-  the left edge of the text above it.
-
-| This is a second line block.
-|
-| Blank lines are permitted internally, but they must begin with a "|".
-
-Take it away, Eric the Orchestra Leader!
-
-    | A one, two, a one two three four
-    |
-    | Half a bee, philosophically,
-    |     must, *ipso facto*, half not be.
-    | But half the bee has got to be,
-    |     *vis a vis* its entity.  D'you see?
-    |
-    | But can a bee be said to be
-    |     or not to be an entire bee,
-    |         when half the bee is not a bee,
-    |             due to some ancient injury?
-    |
-    | Singing...
-
-Block Quotes
-------------
-
-Block quotes consist of indented body elements:
-
-    My theory by A. Elk.  Brackets Miss, brackets.  This theory goes
-    as follows and begins now.  All brontosauruses are thin at one
-    end, much much thicker in the middle and then thin again at the
-    far end.  That is my theory, it is mine, and belongs to me and I
-    own it, and what it is too.
-
-    -- Anne Elk (Miss)
-
-Doctest Blocks
---------------
-
->>> print 'Python-specific usage examples; begun with ">>>"'
-Python-specific usage examples; begun with ">>>"
->>> print '(cut and pasted from interactive Python sessions)'
-(cut and pasted from interactive Python sessions)
-
-Code Blocks
------------
-
-.. parsed-literal::
-
-    # parsed-literal test
-    curl -O http://someurl/release-|version|.tar-gz
-
-
-.. code-block:: json
-    :caption: Code Blocks can have captions.
-
-    {
-    "windows": [
-        {
-        "panes": [
-            {
-            "shell_command": [
-                "echo 'did you know'",
-                "echo 'you can inline'"
-            ]
-            },
-            {
-            "shell_command": "echo 'single commands'"
-            },
-            "echo 'for panes'"
-        ],
-        "window_name": "long form"
-        }
-    ],
-    "session_name": "shorthands"
-    }
-
-Emphasized lines with line numbers
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: python
-   :linenos:
-   :emphasize-lines: 3,5
-
-   def some_function():
-       interesting = False
-       print 'This line is highlighted.'
-       print 'This one is not...'
-       print '...but this one is.'
-
-Sidebar
-=======
-
-.. sidebar:: Ch'ien / The Creative
-
-    .. image:: https://source.unsplash.com/200x200/daily?cute+animals
-
-    *Above* CH'IEN THE CREATIVE, HEAVEN
-
-    *Below* CH'IEN THE CREATIVE, HEAVEN
-
-The first hexagram is made up of six unbroken lines. These unbroken lines stand for the primal power,
-which is light-giving, active, strong, and of the spirit. The hexagram is consistently strong in character,
-and since it is without weakness, its essence is power or energy. Its image is heaven.
-Its energy is represented as unrestricted by any fixed conditions in space and is therefore conceived of as motion.
-Time is regarded as the basis of this motion.
-Thus the hexagram includes also the power of time and the power of persisting in time, that is, duration.
-
-The power represented by the hexagram is to be interpreted in a dual sense in terms of its action
-on the universe and of its action on the world of men. In relation to the universe, the hexagram expresses the strong,
-creative action of the Deity. In relation to the human world, it denotes the creative action of the holy man or sage,
-of the ruler or leader of men, who through his power awakens and develops their higher nature.
-
-Code with Sidebar
------------------
-
-.. sidebar:: A code example
-
-    With a sidebar on the right.
-
-.. literalinclude:: api.rst
-    :language: rst
-    :caption: Literal includes can also have captions.
-    :linenos:
-    :lines: 5-15
-
-References
-==========
-
-Footnotes
----------
-
-.. [1] A footnote contains body elements, consistently indented by at
-   least 3 spaces.
-
-   This is the footnote's second paragraph.
-
-.. [#label] Footnotes may be numbered, either manually (as in [1]_) or
-   automatically using a "#"-prefixed label.  This footnote has a
-   label so it can be referred to from multiple places, both as a
-   footnote reference ([#label]_) and as a hyperlink reference
-   (label_).
-
-.. [#] This footnote is numbered automatically and anonymously using a
-   label of "#" only.
-
-.. [*] Footnotes may also use symbols, specified with a "*" label.
-   Here's a reference to the next footnote: [*]_.
-
-.. [*] This footnote shows the next symbol in the sequence.
-
-.. [4] Here's an unreferenced footnote, with a reference to a
-   nonexistent footnote: [5]_.
-
-Citations
----------
-
-.. [11] This is the citation I made, let's make this extremely long so that we can tell that it doesn't follow the normal responsive table stuff.
-
-.. [12] This citation has some ``code blocks`` in it, maybe some **bold** and
-       *italics* too. Heck, lets put a link to a meta citation [13]_ too.
-
-.. [13] This citation will have two backlinks.
-
-
-Here's a reference to the above, [12]_, and a [nonexistent]_ citation.
-
-Here is another type of citation: `citation`
-
-Glossary
---------
-
-This is a glossary with definition terms for thing like :term:`Writing`:
-
-.. glossary::
-
-  Documentation
-     Provides users with the knowledge they need to use something.
-
-  Reading
-     The process of taking information into ones mind through the use of eyes.
-
-  Writing
-     The process of putting thoughts into a medium for other people to :term:`read `.
-
-Targets
--------
-
-.. _example:
-
-This paragraph is pointed to by the explicit "example" target.
-A reference can be found under `Inline Markup`_, above. `Inline
-hyperlink targets`_ are also possible.
-
-Section headers are implicit targets, referred to by name. See
-Targets_, which is a subsection of `Body Elements`_.
-
-Explicit external targets are interpolated into references such as "Python_".
-
-.. _Python: http://www.python.org/
-
-Targets may be indirect and anonymous.  Thus `this phrase`__ may also
-refer to the Targets_ section.
-
-__ Targets_
-
-Here's a `hyperlink reference without a target`_, which generates an error.
-
-
-Directives
-==========
-
-.. contents::
-   :local:
-
-Above mini table of contents is generated by the ``.. contents::`` directive.
-It and all the other directives presented here are just a sample of the many
-reStructuredText Directives. For others, please see:
-http://docutils.sourceforge.net/docs/ref/rst/directives.html.
-
-
-Centered text
--------------
-
-You can create a statement with centered text with ``.. centered::``
-
-.. centered:: This is centered text!
-
-Images & Figures
-----------------
-
-Images
-^^^^^^
-
-An image directive (also clickable -- a hyperlink reference):
-
-.. image:: https://source.unsplash.com/200x200/daily?cute+animals
-   :target: directives_
-
-Figures
-^^^^^^^
-
-.. figure:: https://source.unsplash.com/200x200/daily?cute+animals
-   :alt: reStructuredText, the markup syntax
-
-   A figure is an image with a caption and/or a legend:
-
-   +------------+-----------------------------------------------+
-   | re         | Revised, revisited, based on 're' module.     |
-   +------------+-----------------------------------------------+
-   | Structured | Structure-enhanced text, structuredtext.      |
-   +------------+-----------------------------------------------+
-   | Text       | Well it is, isn't it?                         |
-   +------------+-----------------------------------------------+
-
-   This paragraph is also part of the legend.
-
-A figure directive with center alignment
-
-.. figure:: https://source.unsplash.com/200x200/daily?cute+animals
-   :align: center
-
-   This caption should be centered.
-
-Admonitions
------------
-
-.. Attention:: Directives at large.
-
-.. Caution:: Don't take any wooden nickels.
-
-.. DANGER:: Mad scientist at work!
-
-.. Error:: Does not compute.
-
-.. Hint:: It's bigger than a bread box.
-
-.. Important::
-   - Wash behind your ears.
-   - Clean up your room.
-
-     - Including the closet.
-     - The bathroom too.
-
-       - Take the trash out of the bathroom.
-       - Clean the sink.
-   - Call your mother.
-   - Back up your data.
-
-.. Note:: This is a note.
-   Equations within a note:
-   :math:`G_{\mu\nu} = 8 \pi G (T_{\mu\nu}  + \rho_\Lambda g_{\mu\nu})`.
-
-.. Tip:: 15% if the service is good.
-
-    +---------+
-    | Example |
-    +=========+
-    | Thing1  |
-    +---------+
-    | Thing2  |
-    +---------+
-    | Thing3  |
-    +---------+
-
-.. WARNING:: Strong prose may provoke extreme mental exertion.
-   Reader discretion is strongly advised.
-
-.. admonition:: And, by the way...
-
-   You can make up your own admonition too.
-
-Topics, Sidebars, and Rubrics
------------------------------
-
-.. sidebar:: Sidebar Title
-   :subtitle: Optional Subtitle
-
-   This is a sidebar.  It is for text outside the flow of the main
-   text.
-
-   .. rubric:: This is a rubric inside a sidebar
-
-   Sidebars often appears beside the main text with a border and
-   background color.
-
-.. topic:: Topic Title
-
-   This is a topic.
-
-.. rubric:: This is a rubric
-
-Target Footnotes
-----------------
-
-.. target-notes::
-
-Replacement Text
-----------------
-
-I recommend you try |Python|_.
-
-.. |Python| replace:: Python, *the* best language around
-
-Compound Paragraph
-------------------
-
-.. compound::
-
-   This paragraph contains a literal block::
-
-       Connecting... OK
-       Transmitting data... OK
-       Disconnecting... OK
-
-   and thus consists of a simple paragraph, a literal block, and
-   another simple paragraph.  Nonetheless it is semantically *one*
-   paragraph.
-
-This construct is called a *compound paragraph* and can be produced
-with the "compound" directive.
-
-Download Links
-==============
-
-:download:`This long long long long long long long long long long long long long long long download link should be blue, normal weight text with a leading icon, and should wrap white-spaces `
diff --git a/docs/reference/kitchen-sink/really-long.rst b/docs/reference/kitchen-sink/really-long.rst
new file mode 100644
index 00000000..c214ae50
--- /dev/null
+++ b/docs/reference/kitchen-sink/really-long.rst
@@ -0,0 +1,256 @@
+..
+   Copyright (c) 2021 Pradyun Gedam
+   Licensed under Creative Commons Attribution-ShareAlike 4.0 International License
+   SPDX-License-Identifier: CC-BY-SA-4.0
+
+.. admonition:: Mimicking ReadTheDocs' PR previews
+    :class: warning
+
+    This is simulating how ReadTheDocs puts admonitions on top of previews.
+
+==============================================================
+Really Long Page Title because we should test sidebar wrapping
+==============================================================
+
+This page basically exists to show-off the cool table of contents sidebar.
+
+Heading 1
+=========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+.. _`second-heading`:
+.. _`second-heading-again`:
+.. _`second-heading-yet-again`:
+
+Heading 2
+=========
+
+Let's make sure multiple permalinks work: :ref:`one `, :ref:`two `, :ref:`three `.
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 3
+=========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 4
+=========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 5
+=========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 6
+=========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 7
+=========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 7.1
+-----------
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 7.2
+-----------
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 7.3
+-----------
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 7.4
+-----------
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 8
+=========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 9
+=========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 10
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 11
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 12
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 13
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 14
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 15 -- this one is intentionally really long
+===================================================
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 16 -- this one is also lots of words that would wrap content
+====================================================================
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 17
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 18
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 19
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 20
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 21
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 22
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 23
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 24
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 25
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 26
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 27
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 28
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 29
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 30
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 31
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 32
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 33
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 34
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 35
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 36
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 37
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 38
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 39
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 40
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 41
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 42
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
+
+Heading 43
+==========
+
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque sit temporibus cupiditate in ducimus illum assumenda dolor, dignissimos laboriosam voluptate dolorem dolore eum repellendus minima, nisi sequi? Eveniet, dignissimos asperiores!
diff --git a/docs/reference/kitchen-sink/structure.rst b/docs/reference/kitchen-sink/structure.rst
new file mode 100644
index 00000000..6a7d7093
--- /dev/null
+++ b/docs/reference/kitchen-sink/structure.rst
@@ -0,0 +1,103 @@
+..
+   Copyright (c) 2021 Pradyun Gedam
+   Licensed under Creative Commons Attribution-ShareAlike 4.0 International License
+   SPDX-License-Identifier: CC-BY-SA-4.0
+
+*******************
+Structural Elements
+*******************
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec lorem neque, interdum in ipsum nec,
+finibus dictum velit. Ut eu efficitur arcu, id aliquam erat. In sit amet diam gravida, imperdiet tellus eu,
+gravida nisl. Praesent aliquet odio eget libero elementum, quis rhoncus tellus tincidunt.
+Suspendisse quis volutpat ipsum. Sed lobortis scelerisque tristique. Aenean condimentum risus tellus,
+quis accumsan ipsum laoreet ut. Integer porttitor maximus suscipit. Mauris in posuere sapien.
+Aliquam accumsan feugiat ligula, nec fringilla libero commodo sed. Proin et erat pharetra.
+
+---------
+
+Etiam turpis ante, luctus sed velit tristique, finibus volutpat dui. Nam sagittis vel ante nec malesuada.
+Praesent dignissim mi nec ornare elementum. Nunc eu augue vel sem dignissim cursus sed et nulla.
+Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
+Pellentesque dictum dui sem, non placerat tortor rhoncus in. Sed placerat nulla at rhoncus iaculis.
+
+Document Section
+================
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed condimentum nulla vel neque venenatis,
+nec placerat lorem placerat. Cras purus eros, gravida vitae tincidunt id, vehicula nec nulla.
+Fusce aliquet auctor cursus. Phasellus ex neque, vestibulum non est vitae, viverra fringilla tortor.
+Donec vestibulum convallis justo, a faucibus lorem vulputate vel. Aliquam cursus odio eu felis sodales aliquet.
+Aliquam erat volutpat. Maecenas eget dictum mauris. Suspendisse arcu eros, condimentum eget risus sed,
+luctus efficitur arcu. Cras ut dictum mi. Nulla congue interdum lorem, semper semper enim commodo nec.
+
+Document Subsection
+-------------------
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam efficitur in eros et blandit. Nunc maximus,
+nisl at auctor vestibulum, justo ex sollicitudin ligula, id faucibus urna orci tristique nisl.
+Duis auctor rutrum orci, in ornare lacus condimentum quis. Quisque arcu velit, facilisis quis interdum ac,
+hendrerit auctor mauris. Curabitur urna nibh, porttitor at ante sit amet, vestibulum interdum dolor.
+Duis dictum elit orci, tincidunt imperdiet sem pellentesque et. In vehicula pellentesque varius.
+Phasellus a turpis sollicitudin, bibendum massa et, imperdiet neque. Integer quis sapien in magna rutrum bibendum.
+Integer cursus ex sed magna vehicula finibus. Proin tempus orci quis dolor tempus, nec condimentum odio vestibulum.
+Etiam efficitur sollicitudin libero, tincidunt volutpat ligula interdum sed.
+
+Document Subsubsection
+^^^^^^^^^^^^^^^^^^^^^^
+
+Donec non rutrum lorem. Aenean sagittis metus at pharetra fringilla. Nunc sapien dolor, cursus sed nisi at,
+pretium tristique lectus. Sed pellentesque leo lectus, et convallis ipsum euismod a.
+Integer at leo vitae felis pretium aliquam fringilla quis odio. Sed pharetra enim accumsan feugiat pretium.
+Maecenas at pharetra tortor. Morbi semper eget mi vel finibus. Cras rutrum nulla eros, id feugiat arcu pellentesque ut.
+Sed finibus tortor ac nisi ultrices viverra. Duis feugiat malesuada sapien, at commodo ante porttitor ac.
+Curabitur posuere mauris mi, vel ornare orci scelerisque sit amet. Suspendisse nec fringilla dui.
+
+Document Paragraph
+""""""""""""""""""
+
+Pellentesque nec est in odio ultrices elementum. Vestibulum et hendrerit sapien, quis vulputate turpis.
+Suspendisse potenti. Curabitur tristique sit amet lectus non viverra. Phasellus rutrum dapibus turpis sed imperdiet.
+Mauris maximus viverra ante. Donec eu egestas mauris. Morbi vulputate tincidunt euismod. Integer vel porttitor neque.
+Donec at lacus suscipit, lacinia lectus vel, sagittis lectus.
+
+*********************
+Structural Elements 2
+*********************
+
+Etiam turpis ante, luctus sed velit tristique, finibus volutpat dui. Nam sagittis vel ante nec malesuada.
+Praesent dignissim mi nec ornare elementum. Nunc eu augue vel sem dignissim cursus sed et nulla.
+Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
+Pellentesque dictum dui sem, non placerat tortor rhoncus in. Sed placerat nulla at rhoncus iaculis.
+
+Document Section
+================
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed condimentum nulla vel neque venenatis,
+nec placerat lorem placerat. Cras purus eros, gravida vitae tincidunt id, vehicula nec nulla.
+Fusce aliquet auctor cursus. Phasellus ex neque, vestibulum non est vitae, viverra fringilla tortor.
+Donec vestibulum convallis justo, a faucibus lorem vulputate vel. Aliquam cursus odio eu felis sodales aliquet.
+Aliquam erat volutpat. Maecenas eget dictum mauris. Suspendisse arcu eros, condimentum eget risus sed,
+luctus efficitur arcu. Cras ut dictum mi. Nulla congue interdum lorem, semper semper enim commodo nec.
+
+Document Subsection
+-------------------
+
+.. figure:: https://source.unsplash.com/200x200/daily?cute+puppy
+    :align: right
+    :figwidth: 200px
+
+    This is a caption for a figure. Text should wrap around the caption.
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam efficitur in eros et blandit. Nunc maximus,
+nisl at auctor vestibulum, justo ex sollicitudin ligula, id faucibus urna orci tristique nisl.
+Duis auctor rutrum orci, in ornare lacus condimentum quis. Quisque arcu velit, facilisis quis interdum ac,
+hendrerit auctor mauris. Curabitur urna nibh, porttitor at ante sit amet, vestibulum interdum dolor.
+Duis dictum elit orci, tincidunt imperdiet sem pellentesque et. In vehicula pellentesque varius.
+Phasellus a turpis sollicitudin, bibendum massa et, imperdiet neque. Integer quis sapien in magna rutrum bibendum.
+Integer cursus ex sed magna vehicula finibus. Proin tempus orci quis dolor tempus, nec condimentum odio vestibulum.
+Etiam efficitur sollicitudin libero, tincidunt volutpat ligula interdum sed. Praesent congue sagittis nisl et suscipit.
+Vivamus sagittis risus et egestas commodo.Cras venenatis arcu in pharetra interdum.
+Donec quis metus porttitor tellus cursus lobortis. Quisque et orci magna. Fusce rhoncus mi mi,
+at vehicula massa rhoncus quis. Mauris augue leo, pretium eget molestie vitae, efficitur nec nulla.
+In hac habitasse platea dictumst. Sed sit amet imperdiet purus.
diff --git a/docs/reference/kitchen-sink/tables.rst b/docs/reference/kitchen-sink/tables.rst
new file mode 100644
index 00000000..6c2b91b6
--- /dev/null
+++ b/docs/reference/kitchen-sink/tables.rst
@@ -0,0 +1,107 @@
+..
+   Copyright (c) 2021 Pradyun Gedam
+   Licensed under Creative Commons Attribution-ShareAlike 4.0 International License
+   SPDX-License-Identifier: CC-BY-SA-4.0
+
+======
+Tables
+======
+
+Grid Tables
+-----------
+
+Here's a grid table followed by a simple table:
+
++------------------------+------------+----------+----------+
+| Header row, column 1   | Header 2   | Header 3 | Header 4 |
+| (header rows optional) |            |          |          |
++========================+============+==========+==========+
+| body row 1, column 1   | column 2   | column 3 | column 4 |
++------------------------+------------+----------+----------+
+| body row 2             | Cells may span columns.          |
++------------------------+------------+---------------------+
+| body row 3             | Cells may  | - Table cells       |
++------------------------+ span rows. | - contain           |
+| body row 4             |            | - body elements.    |
++------------------------+------------+----------+----------+
+| body row 5             | Cells may also be     |          |
+|                        | empty: ``-->``        |          |
++------------------------+-----------------------+----------+
+
+=====  =====  ======
+   Inputs     Output
+------------  ------
+  A      B    A or B
+=====  =====  ======
+False  False  False
+True   False  True
+False  True   True
+True   True   True
+=====  =====  ======
+
+Giant Tables
+^^^^^^^^^^^^
+
++------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+
+| Header 1   | Header 2   | Header 3  | Header 1   | Header 2   | Header 3  | Header 1   | Header 2   | Header 3  | Header 1   | Header 2   | Header 3  |
++============+============+===========+============+============+===========+============+============+===========+============+============+===========+
+| body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  |
++------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+
+| body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  |
++------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+
+| body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  |
++------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+
+| body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  | body row 1 | column 2   | column 3  |
++------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+------------+------------+-----------+
+
+Table containing code
+---------------------
+
+==================================== ===========================================
+Version                              Installing
+==================================== ===========================================
+Pradyun's pip fork and installer     .. code-block:: bash
+
+                                        pip install "pip @ git+https://github.com/pradyunsg/pip#20.3.3" "installer @ git+https://github.com/pradyunsg/installer"
+
+PyPI                                 .. code-block:: bash
+
+                                        pip install pip installer
+
+==================================== ===========================================
+
+List Tables
+-----------
+
+.. list-table:: List tables can have captions like this one.
+    :widths: 10 5 10 50
+    :header-rows: 1
+    :stub-columns: 1
+
+    * - List table
+      - Header 1
+      - Header 2
+      - Header 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
+    * - Stub Row 1
+      - Row 1
+      - Column 2
+      - Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
+    * - Stub Row 2
+      - Row 2
+      - Column 2
+      - Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
+    * - Stub Row 3
+      - Row 3
+      - Column 2
+      - Column 3 long. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet mauris arcu.
+
+.. list-table:: This is a list table with images in it.
+
+    * - .. figure:: https://source.unsplash.com/200x200/daily?cute+puppy
+
+           This is a short caption for a figure.
+
+      - .. figure:: https://source.unsplash.com/200x200/daily?cute+puppy
+
+           This is a long caption for a figure. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+           Donec porttitor dolor in odio posuere, vitae ornare libero mattis. In lobortis justo vestibulum nibh aliquet, non.
diff --git a/docs/reference/kitchen-sink/typography.rst b/docs/reference/kitchen-sink/typography.rst
new file mode 100644
index 00000000..ae9492c2
--- /dev/null
+++ b/docs/reference/kitchen-sink/typography.rst
@@ -0,0 +1,66 @@
+..
+   Copyright (c) 2021 Pradyun Gedam
+   Licensed under Creative Commons Attribution-ShareAlike 4.0 International License
+   SPDX-License-Identifier: CC-BY-SA-4.0
+
+==========
+Typography
+==========
+
+This is quite important, for a website where the majority of the content is going to be prose.
+
+Notice the font family being used for the prose, as well as the font family being used for the heading. Think about the spacing between the lines, as well as the spacing between various paragraphs. Also keep the font weight in mind, and consider if/how you want antialiasing and font-smoothing to work.
+
+Multiple paragraphs are a common occurance, because you often need more than a single paragraph to describe a thing. The rest of this paragraph is gonna be the famous lorem-ipsum: Lorem ipsum **dolor** sit amet consectetur adipisicing elit. Accusamus, sunt voluptatum tenetur libero nulla esse veritatis accusantium earum commodi hic voluptatem officia culpa optio atque. Quaerat sed quibusdam ratione nam.
+
+Headings
+========
+
+This next bit will explore how the various headings look. Think about how the content separation should work, and how the various headings should interact with the main content.
+
+Heading 3
+---------
+
+Heading 4
+^^^^^^^^^
+
+Heading 5
+~~~~~~~~~
+
+Heading 6
+*********
+
+Heading 2 with content
+======================
+
+Lorem ipsum **dolor** sit amet consectetur adipisicing elit.
+
+Accusamus, sunt voluptatum tenetur libero nulla esse veritatis accusantium earum commodi hic voluptatem officia culpa optio atque. Quaerat sed quibusdam ratione nam.
+
+Heading 3 with content
+----------------------
+
+Lorem ipsum **dolor** sit amet consectetur adipisicing elit.
+
+Accusamus, sunt voluptatum tenetur libero nulla esse veritatis accusantium earum commodi hic voluptatem officia culpa optio atque. Quaerat sed quibusdam ratione nam.
+
+Heading 4 with content
+^^^^^^^^^^^^^^^^^^^^^^
+
+Lorem ipsum **dolor** sit amet consectetur adipisicing elit.
+
+Accusamus, sunt voluptatum tenetur libero nulla esse veritatis accusantium earum commodi hic voluptatem officia culpa optio atque. Quaerat sed quibusdam ratione nam.
+
+Heading 5 with content
+~~~~~~~~~~~~~~~~~~~~~~
+
+Lorem ipsum **dolor** sit amet consectetur adipisicing elit.
+
+Accusamus, sunt voluptatum tenetur libero nulla esse veritatis accusantium earum commodi hic voluptatem officia culpa optio atque. Quaerat sed quibusdam ratione nam.
+
+Heading 6 with content
+**********************
+
+Lorem ipsum **dolor** sit amet consectetur adipisicing elit.
+
+Accusamus, sunt voluptatum tenetur libero nulla esse veritatis accusantium earum commodi hic voluptatem officia culpa optio atque. Quaerat sed quibusdam ratione nam.
diff --git a/docs/scripts/update_kitchen_sink.py b/docs/scripts/update_kitchen_sink.py
new file mode 100644
index 00000000..0116b47c
--- /dev/null
+++ b/docs/scripts/update_kitchen_sink.py
@@ -0,0 +1,45 @@
+from urllib.request import urlopen
+from pathlib import Path
+
+EXTRA_MESSAGE = """\
+
+.. AUTOGENERATED by docs/scripts/update_kitchen_sink.py
+
+.. note::
+
+   The Kitchen Sink was generated from the `Sphinx Themes website `_, a community-supported showcase of themes for `Sphinx `_.
+   Check it out to see other great themes.
+
+   .. button-link:: https://sphinx-themes.org
+      :color: primary
+
+      Go to Sphinx Themes
+"""  # noqa
+
+kitchen_sink_files = [
+    "admonitions.rst",
+    "api.rst",
+    "blocks.rst",
+    "generic.rst",
+    "images.rst",
+    "index.rst",
+    "lists.rst",
+    "really-long.rst",
+    "structure.rst",
+    "tables.rst",
+    "typography.rst",
+]
+path_sink = Path(__file__).parent.parent / "reference" / "kitchen-sink"
+for ifile in kitchen_sink_files:
+    print(f"Reading {ifile}...")
+    url = f"https://github.com/sphinx-themes/sphinx-themes.org/raw/master/sample-docs/kitchen-sink/{ifile}"  # noqa
+    text = urlopen(url).read().decode()
+    # The sphinx-themes docs expect Furo to be installed, so we overwrite w/ this path
+    text = text.replace("src/furo", "src/sphinx_book_theme")
+    text = text.replace(":any:`sphinx.ext.autodoc`", "``sphinx.ext.autodoc``")
+    # Add introductory message directing people to Sphinx Themes
+    if "index" in ifile:
+        text = text.replace("============", "============\n\n" + EXTRA_MESSAGE)
+    (path_sink / f"{ifile}").write_text(text)
+
+print(f"Finished updating {len(kitchen_sink_files)} files...")