diff --git a/.gitignore b/.gitignore
index 155dfb12c..cb2c84416 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,7 @@ data/nmc?.*
docs/src/polyglot-dkvp-io/__pycache__
docs/site/
+docs/miller-docs.epub
.cursor
.claude
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
index 3c4dd6dd4..97d79d7ee 100644
--- a/.readthedocs.yaml
+++ b/.readthedocs.yaml
@@ -10,6 +10,17 @@ build:
os: ubuntu-24.04
tools:
python: "3.12"
+ apt_packages:
+ - pandoc
+ jobs:
+ # Read the Docs' built-in `formats:` support (below) only produces
+ # epub/PDF/htmlzip for Sphinx projects, not MkDocs ones. So for issue
+ # #1835 we build the epub ourselves after the MkDocs HTML build; anything
+ # placed in $READTHEDOCS_OUTPUT/epub/ is published on the project's
+ # Downloads page and in the docs' flyout menu.
+ post_build:
+ - mkdir -p $READTHEDOCS_OUTPUT/epub
+ - bash docs/build-epub.sh $READTHEDOCS_OUTPUT/epub/miller.epub
python:
install:
diff --git a/docs/Makefile b/docs/Makefile
index acc03b3d3..b264d060a 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -3,4 +3,10 @@ build:
make -C src genmds
mkdocs build
-.PHONY: build
+# Optional: build a single-file epub of the documentation for offline
+# reading. Requires pandoc. Not part of the default build; Read the Docs runs
+# this via .readthedocs.yaml (see docs/build-epub.sh for details).
+epub:
+ ./build-epub.sh
+
+.PHONY: build epub
diff --git a/docs/build-epub.sh b/docs/build-epub.sh
new file mode 100755
index 000000000..f57da2817
--- /dev/null
+++ b/docs/build-epub.sh
@@ -0,0 +1,74 @@
+#!/bin/bash
+
+# ================================================================
+# Builds a single-file epub of the Miller documentation from the generated
+# Markdown files in docs/src, for offline reading (issue #1835).
+#
+# Usage: docs/build-epub.sh [output-path]
+# Default output is ./miller-docs.epub.
+#
+# Requires pandoc (https://pandoc.org). This script is invoked on Read the
+# Docs (see .readthedocs.yaml) to publish an epub download alongside the HTML
+# docs; Read the Docs' built-in `formats:` support only produces epub/PDF for
+# Sphinx projects, not MkDocs ones, hence this script. It can also be run
+# locally by anyone with pandoc installed. It is not part of `make dev` or
+# any other default build path.
+# ================================================================
+
+set -euo pipefail
+
+output="${1:-miller-docs.epub}"
+# Make the output path absolute, since we cd around below.
+case "$output" in
+ /*) ;;
+ *) output="$PWD/$output" ;;
+esac
+
+docs_dir=$(cd "$(dirname "$0")" && pwd)
+src_dir="$docs_dir/src"
+
+if ! command -v pandoc > /dev/null 2>&1; then
+ echo "$0: pandoc not found; please install it (https://pandoc.org)." 1>&2
+ exit 1
+fi
+
+# Chapter ordering is the nav order in mkdocs.yml. Nav entries look like
+# - "Miller in 10 minutes": "10min.md"
+# and these are the only lines in mkdocs.yml ending with a quoted .md name.
+chapters=$(sed -n 's/^ *-.*: *"\(.*\.md\)" *$/\1/p' "$docs_dir/mkdocs.yml")
+if [ -z "$chapters" ]; then
+ echo "$0: could not extract any nav entries from $docs_dir/mkdocs.yml." 1>&2
+ exit 1
+fi
+
+tmp_dir=$(mktemp -d)
+trap 'rm -rf "$tmp_dir"' EXIT
+
+# Each generated page starts with a quicklinks navigation block -- raw HTML,
+# useful on the website but not in an epub -- which we strip here. It is the
+# only
...
pair at column zero in each page.
+inputs=()
+for chapter in $chapters; do
+ if [ ! -f "$src_dir/$chapter" ]; then
+ echo "$0: $src_dir/$chapter is listed in mkdocs.yml nav but does not exist." 1>&2
+ echo "$0: perhaps you need to run: make -C $src_dir genmds" 1>&2
+ exit 1
+ fi
+ sed '/^$/,/^<\/div>$/d' "$src_dir/$chapter" > "$tmp_dir/$chapter"
+ inputs+=("$tmp_dir/$chapter")
+done
+
+# Run from src_dir so relative image paths (pix/*.png) resolve.
+cd "$src_dir"
+pandoc \
+ --toc \
+ --toc-depth=2 \
+ --split-level=1 \
+ --resource-path="$src_dir" \
+ --metadata title="Miller Documentation" \
+ --metadata author="John Kerl" \
+ --metadata lang="en" \
+ --output "$output" \
+ "${inputs[@]}"
+
+echo "Wrote $output"
diff --git a/docs/src/10min.md b/docs/src/10min.md
index eaec2be05..3ca1b276d 100644
--- a/docs/src/10min.md
+++ b/docs/src/10min.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/agent-skill.md b/docs/src/agent-skill.md
index 793e34b4d..08ca35b7f 100644
--- a/docs/src/agent-skill.md
+++ b/docs/src/agent-skill.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/ai-support.md b/docs/src/ai-support.md
index 4c01bc5f0..7fb26f9dc 100644
--- a/docs/src/ai-support.md
+++ b/docs/src/ai-support.md
@@ -1,4 +1,4 @@
-
+
Quick links:
@@ -64,7 +64,7 @@ one-line summary (here trimmed, and then counted, using Miller itself):
[
{
- "count": 661
+ "count": 662
}
]
diff --git a/docs/src/ai.md b/docs/src/ai.md
index 20f218b21..7637b7ea8 100644
--- a/docs/src/ai.md
+++ b/docs/src/ai.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/build.md b/docs/src/build.md
index b6678282f..73b3c1c9e 100644
--- a/docs/src/build.md
+++ b/docs/src/build.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/community.md b/docs/src/community.md
index b0562c345..e530b189b 100644
--- a/docs/src/community.md
+++ b/docs/src/community.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/contributing.md b/docs/src/contributing.md
index 9e4122abc..256270622 100644
--- a/docs/src/contributing.md
+++ b/docs/src/contributing.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/cpu.md b/docs/src/cpu.md
index 0fe2e1880..3ef38b294 100644
--- a/docs/src/cpu.md
+++ b/docs/src/cpu.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/csv-with-and-without-headers.md b/docs/src/csv-with-and-without-headers.md
index 944255e55..773ff1dd5 100644
--- a/docs/src/csv-with-and-without-headers.md
+++ b/docs/src/csv-with-and-without-headers.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/customization.md b/docs/src/customization.md
index cbc69928f..1c90da971 100644
--- a/docs/src/customization.md
+++ b/docs/src/customization.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/data-cleaning-examples.md b/docs/src/data-cleaning-examples.md
index 77c08e680..5cddccdd0 100644
--- a/docs/src/data-cleaning-examples.md
+++ b/docs/src/data-cleaning-examples.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/data-diving-examples.md b/docs/src/data-diving-examples.md
index 100716ec2..0a2f27be2 100644
--- a/docs/src/data-diving-examples.md
+++ b/docs/src/data-diving-examples.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/date-time-examples.md b/docs/src/date-time-examples.md
index 5bcbdac01..837e9dc0e 100644
--- a/docs/src/date-time-examples.md
+++ b/docs/src/date-time-examples.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/dkvp-examples.md b/docs/src/dkvp-examples.md
index 2f3e3b510..9620eedab 100644
--- a/docs/src/dkvp-examples.md
+++ b/docs/src/dkvp-examples.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/etymology.md b/docs/src/etymology.md
index 9c277924f..0124817c7 100644
--- a/docs/src/etymology.md
+++ b/docs/src/etymology.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/features.md b/docs/src/features.md
index 048ec2a04..9339cc156 100644
--- a/docs/src/features.md
+++ b/docs/src/features.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/file-formats.md b/docs/src/file-formats.md
index 685d1433b..2074138c6 100644
--- a/docs/src/file-formats.md
+++ b/docs/src/file-formats.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/flatten-unflatten.md b/docs/src/flatten-unflatten.md
index 9706ddd1d..c0cb6fe6b 100644
--- a/docs/src/flatten-unflatten.md
+++ b/docs/src/flatten-unflatten.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/genmd-filter b/docs/src/genmd-filter
index 32626326c..6686c4ba8 100755
--- a/docs/src/genmd-filter
+++ b/docs/src/genmd-filter
@@ -18,7 +18,7 @@ def main
input_handle = $stdin
output_handle = $stdout
- output_handle.puts("")
+ output_handle.puts("")
# The filename on the command line is used for link-generation; file contents
# are read from standard input.
diff --git a/docs/src/glossary.md b/docs/src/glossary.md
index 542f49494..5875d2a47 100644
--- a/docs/src/glossary.md
+++ b/docs/src/glossary.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/how-to-release.md b/docs/src/how-to-release.md
index f8b680ca2..33f0f6add 100644
--- a/docs/src/how-to-release.md
+++ b/docs/src/how-to-release.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/index.md b/docs/src/index.md
index a14fddfca..cc36e236e 100644
--- a/docs/src/index.md
+++ b/docs/src/index.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/installing-miller.md b/docs/src/installing-miller.md
index f24a0007c..feb485de3 100644
--- a/docs/src/installing-miller.md
+++ b/docs/src/installing-miller.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/internationalization.md b/docs/src/internationalization.md
index 5fadcab1e..dfe8a0969 100644
--- a/docs/src/internationalization.md
+++ b/docs/src/internationalization.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/keystroke-savers.md b/docs/src/keystroke-savers.md
index e8fbc9073..0ab43b7e5 100644
--- a/docs/src/keystroke-savers.md
+++ b/docs/src/keystroke-savers.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/kubectl-and-helm.md b/docs/src/kubectl-and-helm.md
index 5f53001be..87e81f643 100644
--- a/docs/src/kubectl-and-helm.md
+++ b/docs/src/kubectl-and-helm.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/log-processing-examples.md b/docs/src/log-processing-examples.md
index ad0b2a333..dfbba41da 100644
--- a/docs/src/log-processing-examples.md
+++ b/docs/src/log-processing-examples.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/manpage.md b/docs/src/manpage.md
index f283ec6f8..38091ec62 100644
--- a/docs/src/manpage.md
+++ b/docs/src/manpage.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/mcp-server.md b/docs/src/mcp-server.md
index ce496d5c2..443c46ca7 100644
--- a/docs/src/mcp-server.md
+++ b/docs/src/mcp-server.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/miller-as-library.md b/docs/src/miller-as-library.md
index 3b09a4bbc..8f452ec44 100644
--- a/docs/src/miller-as-library.md
+++ b/docs/src/miller-as-library.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/miller-on-windows.md b/docs/src/miller-on-windows.md
index 8ffb6a44b..615b93e5e 100644
--- a/docs/src/miller-on-windows.md
+++ b/docs/src/miller-on-windows.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/miller-programming-language.md b/docs/src/miller-programming-language.md
index 2b87c5106..24ce2dd27 100644
--- a/docs/src/miller-programming-language.md
+++ b/docs/src/miller-programming-language.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/misc-examples.md b/docs/src/misc-examples.md
index a1a56317f..96c5d889b 100644
--- a/docs/src/misc-examples.md
+++ b/docs/src/misc-examples.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/new-in-miller-6.md b/docs/src/new-in-miller-6.md
index 93698d0a4..a41e470d0 100644
--- a/docs/src/new-in-miller-6.md
+++ b/docs/src/new-in-miller-6.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/online-help.md b/docs/src/online-help.md
index fcdb52a00..4ea0559bf 100644
--- a/docs/src/online-help.md
+++ b/docs/src/online-help.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/operating-on-all-fields.md b/docs/src/operating-on-all-fields.md
index 476b685dd..9f2266409 100644
--- a/docs/src/operating-on-all-fields.md
+++ b/docs/src/operating-on-all-fields.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/operating-on-all-records.md b/docs/src/operating-on-all-records.md
index 668dcc367..1be9dbd65 100644
--- a/docs/src/operating-on-all-records.md
+++ b/docs/src/operating-on-all-records.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/originality.md b/docs/src/originality.md
index 6e7fd8c49..b2a604fdf 100644
--- a/docs/src/originality.md
+++ b/docs/src/originality.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/output-colorization.md b/docs/src/output-colorization.md
index e94cfe91a..534b2e1db 100644
--- a/docs/src/output-colorization.md
+++ b/docs/src/output-colorization.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/parsing-and-formatting-fields.md b/docs/src/parsing-and-formatting-fields.md
index 1f2d5426e..1d7f9a925 100644
--- a/docs/src/parsing-and-formatting-fields.md
+++ b/docs/src/parsing-and-formatting-fields.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/performance.md b/docs/src/performance.md
index 48d3e1d94..47e308c42 100644
--- a/docs/src/performance.md
+++ b/docs/src/performance.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/programming-examples.md b/docs/src/programming-examples.md
index a8e42db58..aa9d3bd72 100644
--- a/docs/src/programming-examples.md
+++ b/docs/src/programming-examples.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/questions-about-joins.md b/docs/src/questions-about-joins.md
index c620e8190..478719d37 100644
--- a/docs/src/questions-about-joins.md
+++ b/docs/src/questions-about-joins.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/questions-about-then-chaining.md b/docs/src/questions-about-then-chaining.md
index 7f558ee8a..cefdb84b3 100644
--- a/docs/src/questions-about-then-chaining.md
+++ b/docs/src/questions-about-then-chaining.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/randomizing-examples.md b/docs/src/randomizing-examples.md
index 3a389e9a7..3bf7907ac 100644
--- a/docs/src/randomizing-examples.md
+++ b/docs/src/randomizing-examples.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/record-heterogeneity.md b/docs/src/record-heterogeneity.md
index 5daed3644..e4b104892 100644
--- a/docs/src/record-heterogeneity.md
+++ b/docs/src/record-heterogeneity.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-builtin-functions.md b/docs/src/reference-dsl-builtin-functions.md
index ad729f793..c7e684846 100644
--- a/docs/src/reference-dsl-builtin-functions.md
+++ b/docs/src/reference-dsl-builtin-functions.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-complexity.md b/docs/src/reference-dsl-complexity.md
index de97fa3f0..78273304c 100644
--- a/docs/src/reference-dsl-complexity.md
+++ b/docs/src/reference-dsl-complexity.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-control-structures.md b/docs/src/reference-dsl-control-structures.md
index 60bb52d95..fd4c4d977 100644
--- a/docs/src/reference-dsl-control-structures.md
+++ b/docs/src/reference-dsl-control-structures.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-differences.md b/docs/src/reference-dsl-differences.md
index 7bcd813e7..491b605f9 100644
--- a/docs/src/reference-dsl-differences.md
+++ b/docs/src/reference-dsl-differences.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-errors.md b/docs/src/reference-dsl-errors.md
index b4d620faa..dafa7d4ef 100644
--- a/docs/src/reference-dsl-errors.md
+++ b/docs/src/reference-dsl-errors.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-filter-statements.md b/docs/src/reference-dsl-filter-statements.md
index 3d2d733f2..0d99b12df 100644
--- a/docs/src/reference-dsl-filter-statements.md
+++ b/docs/src/reference-dsl-filter-statements.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-higher-order-functions.md b/docs/src/reference-dsl-higher-order-functions.md
index 2b3f4691b..bd15a1848 100644
--- a/docs/src/reference-dsl-higher-order-functions.md
+++ b/docs/src/reference-dsl-higher-order-functions.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-operators.md b/docs/src/reference-dsl-operators.md
index cdba1ca55..bb0d002db 100644
--- a/docs/src/reference-dsl-operators.md
+++ b/docs/src/reference-dsl-operators.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-output-statements.md b/docs/src/reference-dsl-output-statements.md
index 8db3ddfdd..87b8372c6 100644
--- a/docs/src/reference-dsl-output-statements.md
+++ b/docs/src/reference-dsl-output-statements.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-syntax.md b/docs/src/reference-dsl-syntax.md
index 9b51cdd61..6204ebe61 100644
--- a/docs/src/reference-dsl-syntax.md
+++ b/docs/src/reference-dsl-syntax.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-time.md b/docs/src/reference-dsl-time.md
index 597850d63..6f93d6e98 100644
--- a/docs/src/reference-dsl-time.md
+++ b/docs/src/reference-dsl-time.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-unset-statements.md b/docs/src/reference-dsl-unset-statements.md
index d7ced4177..2271e46ae 100644
--- a/docs/src/reference-dsl-unset-statements.md
+++ b/docs/src/reference-dsl-unset-statements.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-user-defined-functions.md b/docs/src/reference-dsl-user-defined-functions.md
index 5197701de..ee86a86d2 100644
--- a/docs/src/reference-dsl-user-defined-functions.md
+++ b/docs/src/reference-dsl-user-defined-functions.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl-variables.md b/docs/src/reference-dsl-variables.md
index cfa29e298..0d8c296c1 100644
--- a/docs/src/reference-dsl-variables.md
+++ b/docs/src/reference-dsl-variables.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-dsl.md b/docs/src/reference-dsl.md
index b51ddef4a..280909fca 100644
--- a/docs/src/reference-dsl.md
+++ b/docs/src/reference-dsl.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-arithmetic.md b/docs/src/reference-main-arithmetic.md
index b35f9d807..8622d441e 100644
--- a/docs/src/reference-main-arithmetic.md
+++ b/docs/src/reference-main-arithmetic.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-arrays.md b/docs/src/reference-main-arrays.md
index abdc3bb63..2f8bc4f14 100644
--- a/docs/src/reference-main-arrays.md
+++ b/docs/src/reference-main-arrays.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-auxiliary-commands.md b/docs/src/reference-main-auxiliary-commands.md
index 16fa67c09..11e1508a5 100644
--- a/docs/src/reference-main-auxiliary-commands.md
+++ b/docs/src/reference-main-auxiliary-commands.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-compressed-data.md b/docs/src/reference-main-compressed-data.md
index 729cf5bbc..cef5ae607 100644
--- a/docs/src/reference-main-compressed-data.md
+++ b/docs/src/reference-main-compressed-data.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-data-types.md b/docs/src/reference-main-data-types.md
index aa6bce487..604bcef7d 100644
--- a/docs/src/reference-main-data-types.md
+++ b/docs/src/reference-main-data-types.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-env-vars.md b/docs/src/reference-main-env-vars.md
index 295973d58..327867327 100644
--- a/docs/src/reference-main-env-vars.md
+++ b/docs/src/reference-main-env-vars.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-flag-list.md b/docs/src/reference-main-flag-list.md
index d402919e3..8ec6051d2 100644
--- a/docs/src/reference-main-flag-list.md
+++ b/docs/src/reference-main-flag-list.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-in-place-processing.md b/docs/src/reference-main-in-place-processing.md
index 9081e0459..0942e7dc9 100644
--- a/docs/src/reference-main-in-place-processing.md
+++ b/docs/src/reference-main-in-place-processing.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-maps.md b/docs/src/reference-main-maps.md
index 4d8942d8d..95729f078 100644
--- a/docs/src/reference-main-maps.md
+++ b/docs/src/reference-main-maps.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-null-data.md b/docs/src/reference-main-null-data.md
index 80a378f7f..1a863046c 100644
--- a/docs/src/reference-main-null-data.md
+++ b/docs/src/reference-main-null-data.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-number-formatting.md b/docs/src/reference-main-number-formatting.md
index 627cb1748..e1a761f29 100644
--- a/docs/src/reference-main-number-formatting.md
+++ b/docs/src/reference-main-number-formatting.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-overview.md b/docs/src/reference-main-overview.md
index de241cf5f..16e62a461 100644
--- a/docs/src/reference-main-overview.md
+++ b/docs/src/reference-main-overview.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-regular-expressions.md b/docs/src/reference-main-regular-expressions.md
index b9ed50389..db195c23c 100644
--- a/docs/src/reference-main-regular-expressions.md
+++ b/docs/src/reference-main-regular-expressions.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-separators.md b/docs/src/reference-main-separators.md
index 1214ccfdb..f133e8a04 100644
--- a/docs/src/reference-main-separators.md
+++ b/docs/src/reference-main-separators.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-strings.md b/docs/src/reference-main-strings.md
index b16b03483..fdfaea4c0 100644
--- a/docs/src/reference-main-strings.md
+++ b/docs/src/reference-main-strings.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-main-then-chaining.md b/docs/src/reference-main-then-chaining.md
index cb6502102..65ae90341 100644
--- a/docs/src/reference-main-then-chaining.md
+++ b/docs/src/reference-main-then-chaining.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/reference-verbs.md b/docs/src/reference-verbs.md
index 0af0f1e45..4a9eeb42b 100644
--- a/docs/src/reference-verbs.md
+++ b/docs/src/reference-verbs.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/release-docs.md b/docs/src/release-docs.md
index fc7e2a396..534b3ddd8 100644
--- a/docs/src/release-docs.md
+++ b/docs/src/release-docs.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/repl.md b/docs/src/repl.md
index 71de28b33..9d04e2d9c 100644
--- a/docs/src/repl.md
+++ b/docs/src/repl.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/scripting.md b/docs/src/scripting.md
index 953687c81..384f16911 100644
--- a/docs/src/scripting.md
+++ b/docs/src/scripting.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/shapes-of-data.md b/docs/src/shapes-of-data.md
index f97040543..ef50ba82f 100644
--- a/docs/src/shapes-of-data.md
+++ b/docs/src/shapes-of-data.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/shell-commands.md b/docs/src/shell-commands.md
index e22713a90..98c28730e 100644
--- a/docs/src/shell-commands.md
+++ b/docs/src/shell-commands.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/shell-completion.md b/docs/src/shell-completion.md
index 19add90f7..e48e4084d 100644
--- a/docs/src/shell-completion.md
+++ b/docs/src/shell-completion.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/sorting.md b/docs/src/sorting.md
index 7d876eda2..19eef67be 100644
--- a/docs/src/sorting.md
+++ b/docs/src/sorting.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/special-symbols-and-formatting.md b/docs/src/special-symbols-and-formatting.md
index 58f477ee6..0a0d8128a 100644
--- a/docs/src/special-symbols-and-formatting.md
+++ b/docs/src/special-symbols-and-formatting.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/sql-examples.md b/docs/src/sql-examples.md
index 781b0003a..e80d742b7 100644
--- a/docs/src/sql-examples.md
+++ b/docs/src/sql-examples.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/statistics-examples.md b/docs/src/statistics-examples.md
index 2e80e8a39..5f0bea7d9 100644
--- a/docs/src/statistics-examples.md
+++ b/docs/src/statistics-examples.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/streaming-and-memory.md b/docs/src/streaming-and-memory.md
index e1b0ad183..b6097e755 100644
--- a/docs/src/streaming-and-memory.md
+++ b/docs/src/streaming-and-memory.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/structure-of-these-documents.md b/docs/src/structure-of-these-documents.md
index cdaeef8a9..4e3f1a5dc 100644
--- a/docs/src/structure-of-these-documents.md
+++ b/docs/src/structure-of-these-documents.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/troubleshooting-csv-and-json-input.md b/docs/src/troubleshooting-csv-and-json-input.md
index 49c3880ab..45bbe8589 100644
--- a/docs/src/troubleshooting-csv-and-json-input.md
+++ b/docs/src/troubleshooting-csv-and-json-input.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/two-pass-algorithms.md b/docs/src/two-pass-algorithms.md
index e475aebf3..bb9164eb4 100644
--- a/docs/src/two-pass-algorithms.md
+++ b/docs/src/two-pass-algorithms.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/unix-toolkit-context.md b/docs/src/unix-toolkit-context.md
index ffc8ede78..28a6765a1 100644
--- a/docs/src/unix-toolkit-context.md
+++ b/docs/src/unix-toolkit-context.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/vimrc.md b/docs/src/vimrc.md
index 25c1c4635..74fa1fed9 100644
--- a/docs/src/vimrc.md
+++ b/docs/src/vimrc.md
@@ -1,4 +1,4 @@
-
+
Quick links:
diff --git a/docs/src/why.md b/docs/src/why.md
index aa00458be..d7bbc7537 100644
--- a/docs/src/why.md
+++ b/docs/src/why.md
@@ -1,4 +1,4 @@
-
+
Quick links: