diff --git a/.circleci/config.yml b/.circleci/config.yml
index 807fa67..1c7aeb4 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -14,7 +14,7 @@ jobs:
- python/install-packages
- run:
name: Build docs
- command: cd docs/ && make html
+ command: cd docs/ && make html O="-Dlanguage='la'"
- persist_to_workspace:
root: docs/_build/html
paths: .
diff --git a/docs/_static/css/landing.css b/docs/_static/css/landing.css
index b0a6a42..c3c40e2 100644
--- a/docs/_static/css/landing.css
+++ b/docs/_static/css/landing.css
@@ -58,26 +58,43 @@
--shadow: 0px 2px 2px rgba(0, 0, 0, 0.11);
}
-/* callout boxes */
-.callout {
- border-left: solid 1px var(--pst-color-border);
- border-bottom: solid 1px var(--pst-color-border);
- border-right: solid 1px var(--pst-color-border);
- border-bottom-right-radius: var(--border-radius);
- border-bottom-left-radius: var(--border-radius);
- box-shadow: var(--shadow);
- margin-bottom: 20px;
- padding: 28px 20px 20px;
- position: relative;
+/* Introductory title. */
+.intro-title {
+ color: var(--pst-color-primary);
+ font-family: var(--pst-font-family-heading);
+ font-size: var(--pst-font-size-h2);
+ font-weight: var(--regular) !important;
}
-.callout__list {
- display: flex;
- flex-direction: row;
+.mpl-card-title {
+ color: var(--pst-color-text-base);
+ font-family: var(--pst-font-family-heading);
+ font-size: var(--pst-font-size-h3);
+ font-weight: var(--regular) !important;
}
-.callout__list p{
- margin: 1em 0;
+.mpl-card-resources ul {
+ list-style-type: none;
+ padding: 0;
+ display: table;
+ border-collapse: separate;
+ border-spacing: 0 1em;
+}
+
+.mpl-card-resources ul li {
+ display: table-row;
+}
+
+.mpl-card-resources ul li p {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+/* callout boxes */
+.callout {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ margin-bottom: 20px;
}
.callout::before {
@@ -91,41 +108,43 @@
background-color: var(--blue);
}
-.callout--purple::before {
+.callout-purple::before {
background-image: var(--viridis-purple);
}
-.callout--blue::before {
+.callout-blue::before {
background-image: var(--viridis-blue);
}
-.callout--teal::before {
+.callout-teal::before {
background-image: var(--viridis-teal);
}
-.callout--green::before {
+.callout-green::before {
background-image: var(--viridis-green);
}
-.callout__icon {
+.mpl-callout-title {
+ color: var(--pst-color-text-base);
+ font-family: var(--pst-font-family-heading);
+ font-size: var(--pst-font-size-h4);
+ font-weight: var(--regular) !important;
+}
+
+.callout-icon {
color: var(--pst-color-primary);
font-size: 2em;
margin: auto 10px auto 0;
}
-.callout > * {
- margin-top: 0;
-}
/* offsite links */
-a.link--offsite {
+a.link-offsite, div.link-offsite a {
font-size: var(--pst-font-size-h5);
- display: block;
- position: relative;
- left: 0;
+ padding-left: 0;
transition: left 0.2s ease-in-out;
}
-a.link--offsite::after {
+a.link-offsite::after, div.link-offsite a::after {
display: inline-block;
font-style: normal;
font-variant: normal;
@@ -143,193 +162,90 @@ a.link--offsite::after {
border: none;
height: 1px;
margin-bottom: 0em;
+ margin-top: 1em;
}
-.rule--viridis {
+.rule-viridis {
background-image: var(--viridis);
height: 3px;
margin-bottom: 0em;
}
/* Quicklinks */
-.quicklinks {
- padding: 0;
- list-style-type: none;
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- flex-wrap: wrap;
-}
-.quicklinks a {
- display: flex;
- flex-direction: column;
- align-items: center;
- flex: 1 1 100px;
- font-size: var(--heading-4);
- font-family: var(--heading-font);
+.quicklink {
+ text-decoration: underline;
}
-.quicklinks a, .quicklinks a:visited,
-.quicklinks a:hover, .quicklinks a:visited:hover {
- color: var(--default-text);
+.quicklink:hover {
+ text-decoration-thickness: max(3px,.1875rem,.12em);
}
-.quicklinks__icon {
+.quicklink img {
width: 1in;
- display: block;
- margin-bottom: 10px;
-}
-
-@media (max-width: 700px) {
- .quicklinks__icon {
- width: 60px;
- }
- .quicklinks a {
- font-size: var(--base-font);
- }
- .quicklinks li {
- margin-bottom: 20px;
- }
+ margin: 0 auto;
}
/* News */
-.news {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- margin-bottom: 2em;
-}
-.news__item:not(:last-of-type){
+.news-item:not(:last-of-type) {
margin-bottom: 2em;
}
-.news__item--highlight, .news__item:last-of-type {
+.news-item-highlight, .news-item:last-of-type {
margin-bottom: 40px;
}
-.news__item .date, .news__item--highlight .date{
+.news-item-highlight p:first-of-type, .news-item p:first-of-type {
+ margin-bottom: 0;
+}
+
+.news-item .date, .news-item-highlight .date {
margin: 1em 0 .5em;
}
.date{
font-size: small;
}
+
/* tab switcher */
.tools {
min-height: 280px;
}
-.tabs {
- padding: 0;
- padding: 0;
- list-style-type: none;
- display: flex;
- flex-direction: column;
- justify-content: space-evenly;
- position: relative;
-}
-
-.tabs__tab {
- border: none;
- text-align: right;
- line-height: 1em;
- cursor: pointer;
- padding: 0.5em 0;
- background-color: transparent;
- font-family: var(--heading-font);
- color: var(--pst-color-link);
- font-size: var(--heading-4);
- font-weight: var(--bold);
- transition: left 0.2s ease-out;
- position: relative;
- left: 0;
-}
-
-.tabs__tab:hover {
- left: 8px;
-}
-
-.tabs__content {
- border-top: solid 1px var(--pst-color-border);
- border-bottom: solid 1px var(--pst-color-border);
- border-right: solid 1px var(--pst-color-border);
- flex-grow: 1;
- padding: 20px 40px 20px 50px;
- position: relative;
-}
-
-.tabs::before {
- content: "";
- width: 8px;
- height: 100%;
- background-color: var(--dark-purple);
- position: absolute;
- top: 0;
- right: -20px;
- display: block;
- transition: background-color 0.2s ease-in-out;
-}
-
-.tabs[data-current-tab="0"]::before {
- background-color: var(--dark-purple);
-}
-
-.tabs[data-current-tab="1"]::before {
- background-color: var(--purple);
-}
-
-.tabs[data-current-tab="2"]::before {
- background-color: var(--blue);
-}
-
-.tabs[data-current-tab="3"]::before {
- background-color: var(--teal);
-}
-
-.tabs[data-current-tab="4"]::before {
- background-color: var(--green);
-}
-
-.tabs::after {
- content: "";
- width: 0;
- height: 0;
- border-top: 9px solid transparent;
- border-left: 18px solid var(--purple);
- border-bottom: 9px solid transparent;
- position: absolute;
- right: -38px;
- top: 0;
- display: block;
- margin: 10% 0;
- transition: top 0.2s ease-out, border-left-color 0.2s ease-in-out;
-}
-
-.tabs[data-current-tab="0"]::after {
- top: 0;
- border-left-color: var(--dark-purple);
+.sd-tab-label[for="sd-tab-item-0"] {
+ --sd-color-tabs-underline-active: var(--dark-purple);
+ --sd-color-tabs-underline-hover: var(--dark-purple);
+ --sd-color-tabs-label-active: var(--dark-purple);
+ --sd-color-tabs-label-hover: var(--dark-purple);
}
-.tabs[data-current-tab="1"]::after {
- top: 20%;
- border-left-color: var(--purple);
+.sd-tab-label[for="sd-tab-item-1"] {
+ --sd-color-tabs-underline-active: var(--purple);
+ --sd-color-tabs-underline-hover: var(--purple);
+ --sd-color-tabs-label-active: var(--purple);
+ --sd-color-tabs-label-hover: var(--purple);
}
-.tabs[data-current-tab="2"]::after {
- top: 40%;
- border-left-color: var(--blue);
+.sd-tab-label[for="sd-tab-item-2"] {
+ --sd-color-tabs-underline-active: var(--blue);
+ --sd-color-tabs-underline-hover: var(--blue);
+ --sd-color-tabs-label-active: var(--blue);
+ --sd-color-tabs-label-hover: var(--blue);
}
-.tabs[data-current-tab="3"]::after {
- top: 60%;
- border-left-color: var(--teal);
+.sd-tab-label[for="sd-tab-item-3"] {
+ --sd-color-tabs-underline-active: var(--teal);
+ --sd-color-tabs-underline-hover: var(--teal);
+ --sd-color-tabs-label-active: var(--teal);
+ --sd-color-tabs-label-hover: var(--teal);
}
-.tabs[data-current-tab="4"]::after {
- top: 80%;
- border-left-color: var(--green);
+.sd-tab-label[for="sd-tab-item-4"] {
+ --sd-color-tabs-underline-active: var(--green);
+ --sd-color-tabs-underline-hover: var(--green);
+ --sd-color-tabs-label-active: var(--green);
+ --sd-color-tabs-label-hover: var(--green);
}
/* footer */
@@ -437,142 +353,6 @@ html, body {
align-items: stretch;
}
-@media (min-width: 960px) {
- /* Undo pydata-sphinx-theme's max width setting. */
- div.bd-container__inner.bd-page-width {
- max-width: inherit;
- }
-}
-
-main.bd-main {
- flex-grow: 1;
- display: grid;
- column-gap: 20px;
-}
-
-@media (min-width: 800px) {
- main.bd-main {
- grid-template-columns:
- minmax(1em, auto) repeat(12, minmax(44px, 118px)) minmax(1em, auto);
- grid-template-areas:
- /* These are mostly two sections side-by-side (6 columns each), except
- * for tools+tool-switcher which are 1/3+2/3. */
- ". intro intro intro intro intro intro intro-text intro-text intro-text intro-text intro-text intro-text ."
- ". quicklinks quicklinks quicklinks quicklinks quicklinks quicklinks quicklinks quicklinks quicklinks quicklinks quicklinks quicklinks ."
- "rule1 rule1 rule1 rule1 rule1 rule1 rule1 rule1 rule1 rule1 rule1 rule1 rule1 rule1"
- ". news news news news news news resources resources resources resources resources resources ."
- "rule2 rule2 rule2 rule2 rule2 rule2 rule2 rule2 rule2 rule2 rule2 rule2 rule2 rule2"
- ". tools tools tools tools tool-switcher tool-switcher tool-switcher tool-switcher tool-switcher tool-switcher tool-switcher tool-switcher ."
- "rule3 rule3 rule3 rule3 rule3 rule3 rule3 rule3 rule3 rule3 rule3 rule3 rule3 rule3"
- ". support support support support support support support support support support support support ."
- "footer footer footer footer footer footer footer footer footer footer footer footer footer footer";
- }
-}
-
-@media (max-width: 799px) {
- main.bd-main {
- margin-top: 0px;
- grid-template-columns: 1em auto 1em;
- grid-template-areas:
- ". intro-text ."
- ". intro ."
- ". quicklinks ."
- "rule1 rule1 rule1"
- ". resources ."
- ". news ."
- "rule2 rule2 rule2"
- ". tools ."
- ". tool-switcher ."
- "rule3 rule3 rule3"
- ". support ."
- "footer footer footer";
- }
-}
-
-.grid__full-page {
- grid-area: intro-start / intro-start / footer-start / intro-text-end;
-}
-
-.grid__intro-text {
- grid-area: intro-text;
-}
-
-.grid__intro {
- margin-top: 4em;
- grid-area: intro;
-}
-
-.grid__quicklinks {
- margin-top: 2em;
- grid-area: quicklinks;
-}
-
-@media (min-width: 1000px) {
- .grid__quicklinks {
- padding: 0 100px;
- }
-}
-
-.grid__rule1 {
- margin-top: 1em;
- grid-area: rule1;
-}
-
-.grid__resources {
- grid-area: resources;
-}
-
-.grid__news {
- grid-area: news;
-}
-
-.grid__rule2 {
- margin-top: 1em;
- grid-area: rule2;
-}
-
-.grid__tools {
- margin-top: 2em;
- margin-bottom: 2em;
- grid-area: tools;
-}
-
-.grid__tools-switcher {
- margin-top: 2em;
- margin-bottom: 2em;
- grid-area: tool-switcher;
-}
-
-.grid__rule3 {
- margin-top: 1em;
- grid-area: rule3;
-}
-
-.grid__support {
- grid-area: support;
-}
-
-.grid__contribute {
- grid-area: contribute;
-}
-
-.support__items {
- list-style-type: none;
- padding: 0;
-}
-
-@media (min-width: 800px) {
- .support__items {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
- }
-}
-
-.support__items .callout {
- flex: 0 0 calc(33.333333% - 13.3333333333333px);
-}
-
footer {
grid-area: footer;
display: grid;
@@ -616,39 +396,6 @@ footer {
grid-area: release;
}
-.grid__tools-switcher__tabs {
- display: grid;
- gap: 2em;
-}
-
-@media (min-width: 800px) {
- .grid__tools-switcher__tabs {
- grid-template-columns:
- minmax(44px, 118px) minmax(44px, 118px) minmax(44px, 118px)
- minmax(44px, 118px) minmax(44px, 118px) minmax(44px, 118px) minmax(
- 44px,
- 118px
- )
- minmax(44px, 118px);
- grid-template-areas: "tabs tabs panel panel panel panel panel panel";
- }
-}
-
-@media (max-width: 799px) {
- .grid__tools-switcher__tabs {
- grid-template-columns: 30% auto;
- grid-template-areas: "tabs panel";
- }
-}
-
-.grid__tabs__tabs {
- grid-area: tabs;
-}
-
-.grid__tabs__panel {
- grid-area: panel;
-}
-
/* buttons */
.button,
a.button {
@@ -657,6 +404,7 @@ a.button {
width: fit-content;
width: -moz-fit-content;
display: block;
+ border: none;
border-radius: var(--border-radius);
color: var(--white);
margin: 1em 0;
@@ -685,37 +433,37 @@ a.button:hover::after {
margin-left: 80px;
}
-.button--purple,
-a.button--purple {
+.button-purple,
+a.button-purple {
background: var(--viridis-purple);
}
-.button--blue,
-a.button--blue {
+.button-blue,
+a.button-blue {
background: var(--viridis-blue);
}
-.button--teal,
-a.button--teal {
+.button-teal,
+a.button-teal {
background: var(--viridis-teal);
}
-.button--green,
-a.button--green,
-a.button--green:hover {
+.button-green,
+a.button-green,
+a.button-green:hover {
background: var(--viridis-green);
color: var(--black);
}
-.button--green::after,
-a.button--green::after {
+.button-green::after,
+a.button-green::after {
content: "\f061"; /* fa-arrow-right */
font-family: "Font Awesome 5 Free";
font-weight: 900;
}
.imrot-img {
- display: flex;
+ display: flex;
margin: auto;
max-width:18em;
align-self: center;
diff --git a/docs/_static/script.js b/docs/_static/script.js
index a94e644..10fe655 100644
--- a/docs/_static/script.js
+++ b/docs/_static/script.js
@@ -1,50 +1,8 @@
-// accessible JavaScript tab switcher
-// modified from https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role
-
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
document.addEventListener("DOMContentLoaded", function(event) {
- const tabs = document.querySelectorAll('[role="tab"]');
- const tabList = document.querySelector('[role="tablist"]');
-
- // set currently active tab to 0
- tabList.setAttribute("data-current-tab", 0);
-
- // Add a click event handler to each tab
- tabs.forEach((tab, i) => {
- tab.addEventListener("click", changeTabs);
- tab.setAttribute("data-tab-count", i);
- });
-
- // Enable arrow navigation between tabs in the tab list
- let tabFocus = 0;
-
- tabList.addEventListener("keydown", e => {
- // Move right
- if (e.keyCode === 39 || e.keyCode === 37) {
- tabs[tabFocus].setAttribute("tabindex", -1);
- if (e.keyCode === 39) {
- tabFocus++;
- // If we're at the end, go to the start
- if (tabFocus >= tabs.length) {
- tabFocus = 0;
- }
- // Move left
- } else if (e.keyCode === 37) {
- tabFocus--;
- // If we're at the start, move to the end
- if (tabFocus < 0) {
- tabFocus = tabs.length - 1;
- }
- }
-
- tabs[tabFocus].setAttribute("tabindex", 0);
- tabs[tabFocus].focus();
- }
- });
-
///////////////////////////////////////
// rotate images in images-rotate directory:
var ind = getRandomInt(images_rotate.length);
@@ -56,33 +14,5 @@ document.addEventListener("DOMContentLoaded", function(event) {
'
' +
'
' + caption + '
' +
'';
- document.getElementById('image_rotator').innerHTML = html;
-
+ document.getElementById('image-rotator').innerHTML = html;
});
-
-function changeTabs(e) {
- const target = e.target;
- const parent = target.parentNode;
- const grandparent = parent.parentNode;
-
- // set attribute for currently active tab for setting the location of the pointer triangle
- parent.setAttribute("data-current-tab", e.target.getAttribute("data-tab-count"));
-
- // Remove all current selected tabs
- parent
- .querySelectorAll('[aria-selected="true"]')
- .forEach(t => t.setAttribute("aria-selected", false));
-
- // Set this tab as selected
- target.setAttribute("aria-selected", true);
-
- // Hide all tab panels
- grandparent
- .querySelectorAll('[role="tabpanel"]')
- .forEach(p => p.setAttribute("hidden", true));
-
- // Show the selected panel
- grandparent.parentNode
- .querySelector(`#${target.getAttribute("aria-controls")}`)
- .removeAttribute("hidden");
-}
diff --git a/docs/_templates/landing_footer.html b/docs/_templates/landing_footer.html
index e502188..bf35027 100644
--- a/docs/_templates/landing_footer.html
+++ b/docs/_templates/landing_footer.html
@@ -30,7 +30,7 @@ Matplotlib
Donate to Matplotlib
{{ copyright }}
diff --git a/docs/body.html b/docs/body.html
deleted file mode 100644
index d089ad8..0000000
--- a/docs/body.html
+++ /dev/null
@@ -1,457 +0,0 @@
-
- Matplotlib: Visualization with Python
-
- Matplotlib is a comprehensive library for creating static, animated,
- and interactive visualizations in Python. Matplotlib makes easy things
- easy and hard things possible.
-
-
-
-
-
- Try Matplotlib (on Binder)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
News
-
-
-
-
May 16, 2024
-
Matplotlib 3.9.0 Released
-
- We thank the 175 authors for the 450 pull requests that comprise the 3.9.0 release.
-
-
-
-
-
-
-
-
-
-
-
-
- Resources
-
-
-
- Be sure to check the
- Users
- guide and the
- API
- docs. The full text
- search is a
- good way to discover the docs including the many examples.
-
-
-
-
-
-
- Join our community at
- discourse.matplotlib.org
- to get help, share your work, and discuss contributing &
- development.
-
-
-
-
-
-
-
-
- Meet us at our monthly call for new contributors to the Matplotlib
- project. Subscribe to our
- community calendar
- at Scientific Python to get access to all our community meetings.
-
-
-
-
-
-
- Short questions related to contributing to Matplotlib may be posted on the
- gitter
- channel.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/conf.py b/docs/conf.py
index 5da9c3d..59baa10 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -17,6 +17,7 @@
# ones.
extensions = [
'notfound.extension',
+ 'sphinx_design',
]
# The language for content autogenerated by Sphinx. Refer to documentation for
@@ -31,6 +32,10 @@
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
+# -- Options for Internationalization ----------------------------------------
+
+gettext_compact = 'brochure'
+
# -- Options for HTML output -------------------------------------------------
html_css_files = ['css/normalize.css', 'css/landing.css']
@@ -50,3 +55,26 @@
# Prefix added to all the URLs generated in the 404 page.
notfound_urls_prefix = '/'
+
+# -- Options for sphinx-design ------------------------------------------------
+
+sd_custom_directives = {
+ "quicklink": {
+ "inherit": "card",
+ "options": {
+ "class-card": "quicklink sd-border-0",
+ "class-img-top": "dark-light",
+ "shadow": "none",
+ "text-align": "center",
+ },
+ },
+ "project-card": {
+ "inherit": "card",
+ "options": {
+ "class-card": "sd-border-0",
+ "class-header": "mpl-card-title",
+ "class-footer": "link-offsite",
+ "shadow": "none",
+ },
+ },
+}
diff --git a/docs/index.rst b/docs/index.rst
index 464cdc7..8a8a0c3 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,4 +1,303 @@
.. title:: Matplotlib
+.. grid::
+ :class-row: sd-align-minor-center
+ :reverse:
+ :gutter: 1
+
+ .. grid-item-card:: Matplotlib: Visualization with Python
+ :class-card: sd-border-0 mpl-card-intro
+ :class-title: intro-title
+ :shadow: none
+
+ Matplotlib is a comprehensive library for creating static, animated, and
+ interactive visualizations in Python. Matplotlib makes easy things easy and hard
+ things possible.
+
+ - Create `publication quality plots
+ `__.
+ - Make `interactive figures
+ `__
+ that can zoom, pan, update.
+ - Customize `visual style
+ `__
+ and `layout `__.
+ - Export to `many file formats
+ `__.
+ - Embed in `JupyterLab and Graphical User Interfaces
+ `__.
+ - Use a rich array of `third-party packages
+ `__ built on Matplotlib.
+
+ .. button-link:: https://mybinder.org/v2/gh/matplotlib/mpl-brochure-binder/main?labpath=MatplotlibExample.ipynb
+ :class: button button-purple
+
+ Try Matplotlib (on Binder)
+
+ .. grid-item::
+
+ .. div::
+ :name: image-rotator
+
+.. div:: sd-d-flex-row sd-align-major-spaced flex-wrap
+
+ .. quicklink::
+ :img-top: _static/images/getting-started.svg
+ :img-alt: computer desktop icon
+ :link: https://matplotlib.org/stable/users/getting_started/
+
+ Getting Started
+
+ .. quicklink::
+ :img-top: _static/images/sample-plots.svg
+ :img-alt: folder icon
+ :link: https://matplotlib.org/stable/plot_types/index.html
+
+ Examples
+
+ .. quicklink::
+ :img-top: _static/images/userguide.svg
+ :img-alt: documentation book icon
+ :link: https://matplotlib.org/stable/index.html
+
+ Reference
+
+ .. quicklink::
+ :img-top: _static/images/cheatsheets.svg
+ :img-alt: cheatsheet icon
+ :link: https://matplotlib.org/cheatsheets/
+
+ Cheat Sheets
+
+ .. quicklink::
+ :img-top: _static/images/documentation.svg
+ :img-alt: matplotlib logo icon
+ :link: https://matplotlib.org/stable/index.html
+
+ Documentation
+
+.. div:: rule rule-viridis
+
+.. grid:: 1 1 2 2
+ :gutter: 1
+
+ .. grid-item-card:: News
+ :class-card: sd-border-0 mpl-card-news
+ :class-title: mpl-card-title
+ :class-footer: link-offsite
+ :shadow: none
+
+ .. div:: news-item-highlight
+
+ .. div:: date
+
+ May 30, 2024
+
+ .. button-link:: https://discourse.matplotlib.org/t/gsoc-2024-announcement/24469
+ :class: link-offsite
+
+ GSOC 2024: Bivariate Colormaps
+
+ A warm welcome to Trygve Magnus Ræder, who is working on `bivariate colormapping
+ `__.
+
+ .. div:: news-item
+
+ .. div:: date
+
+ May 16, 2023
+
+ .. button-link:: https://discourse.matplotlib.org/t/matplotlib-announce-ann-matplotlib-3-9-0/24444
+ :class: link-offsite
+
+ Matplotlib 3.9.0 Released
+
+ We thank the 175 authors for the 450 pull requests that comprise the 3.9.0 release.
+
+ +++
+ `Older Announcements `__
+
+ .. grid-item-card:: Resources
+ :class-card: sd-border-0 mpl-card-resources
+ :class-title: mpl-card-title
+ :shadow: none
+
+ - :far:`question-circle;callout-icon`
+
+ Be sure to check the `Users guide
+ `__ and the `API docs
+ `__. The full text `search
+ `__ is a good way to discover the docs
+ including the many examples.
+
+ - :fab:`discourse;callout-icon`
+
+ Join our community at `discourse.matplotlib.org
+ `__ to get help, share your work, and discuss
+ contributing & development.
+
+ - :fab:`stack-overflow;callout-icon`
+
+ Check out the Matplotlib tag on `StackOverflow
+ `__.
+
+ - :fas:`calendar-alt;callout-icon`
+
+ Meet us at our monthly call for new contributors to the Matplotlib project.
+ Subscribe to our `community calendar
+ `__ at Scientific Python to get access
+ to all our community meetings.
+
+ - :fab:`gitter;callout-icon`
+
+ Short questions related to contributing to Matplotlib may be posted on the
+ `gitter `__ channel.
+
+.. div:: rule rule-viridis
+
+.. grid:: 1 1 2 2
+ :gutter: 1
+
+ .. grid-item-card:: Domain Specific Tools
+ :class-card: sd-border-0 mpl-card-tools
+ :class-title: mpl-card-title
+ :class-footer: link-offsite
+ :shadow: none
+
+ A large number of third party packages extend and build on Matplotlib
+ functionality, including several higher-level plotting interfaces (seaborn,
+ HoloViews, ggplot, ...), and a projection and mapping toolkit (Cartopy).
+
+ +++
+ `More Domain-Specific Tools `__
+
+ .. grid-item::
+ :class: mpl-card-projects
+
+ .. tab-set::
+ :class: tabs tools
+
+ .. tab-item:: seaborn
+ :selected:
+
+ .. project-card::
+
+ seaborn is a high level interface for drawing statistical graphics with
+ Matplotlib. It aims to make visualization a central part of exploring and
+ understanding complex datasets.
+ +++
+ `statistical data visualization `__
+
+ .. tab-item:: Cartopy
+
+ .. project-card::
+
+ Cartopy is a Python package designed for geospatial data processing in
+ order to produce maps and other geospatial data analyses.
+ +++
+ `Cartopy `__
+
+ .. tab-item:: DNA Features Viewer
+
+ .. project-card::
+
+ DNA Features Viewer is a Python library to visualize DNA features, e.g.
+ from GenBank or Gff files, or Biopython SeqRecords.
+ +++
+ `DNA Features Viewer
+ `__
+
+ .. tab-item:: plotnine
+
+ .. project-card::
+
+ plotnine is an implementation of a grammar of graphics in Python. The
+ grammar allows users to compose plots by explicitly mapping data to the
+ visual objects that make up the plot.
+ +++
+ `plotnine `__
+
+ .. tab-item:: WCS Axes
+
+ .. project-card::
+
+ WCSAxes is a framework for making plots of Astronomical data in
+ Matplotlib.
+ +++
+ `WCSAxes `__
+
+.. div:: rule rule-viridis
+
+.. grid::
+
+ .. grid-item-card:: Support Matplotlib
+ :class-card: sd-border-0 mpl-card-support
+ :class-title: mpl-card-title
+ :shadow: none
+
+ .. grid:: 1 1 3 3
+
+ .. grid-item-card:: Contribute
+ :class-card: callout callout-purple sd-border-top-0
+ :class-title: mpl-callout-title
+ :class-body: sd-px-4 sd-py-4
+
+ Matplotlib is a community project maintained for and by its users
+
+ You can help by answering questions `on discourse
+ `__, reporting a bug or requesting a
+ feature `on GitHub `__, or
+ improving the `documentation and code
+ `__!
+
+ .. button-link:: https://discourse.matplotlib.org
+ :class: link-offsite
+
+ Join us on Discourse
+
+ .. button-link:: https://github.com/matplotlib/matplotlib
+ :class: link-offsite
+
+ Join us on GitHub
+
+ .. grid-item-card:: Cite
+ :class-card: callout callout-blue sd-border-top-0
+ :class-title: mpl-callout-title
+ :class-body: sd-px-4 sd-py-4
+
+ Matplotlib is the result of development efforts by John Hunter (1968–2012)
+ and the project's `many contributors
+ `__.
+
+ If Matplotlib contributes to a project that leads to a scientific
+ publication, please acknowledge this work by citing the project!
+
+ .. button-link:: https://matplotlib.org/stable/project/citing.html
+ :class: link-offsite
+
+ Ready made citation
+
+ .. grid-item-card:: Donate
+ :class-card: callout callout-teal sd-border-top-0
+ :class-title: mpl-callout-title
+ :class-body: sd-px-4 sd-py-4
+
+ If you would like to support Matplotlib financially you can donate by
+ `sponsoring Matplotlib on GitHub `__
+ or making a (USA) tax-deductible donation `through NumFOCUS
+ `__.
+
+ .. button-link:: https://github.com/sponsors/matplotlib
+ :class: link-offsite
+
+ Sponsor on GitHub
+
+ .. button-link:: https://numfocus.org/donate-to-matplotlib
+ :class: link-offsite
+
+ Donate to Matplotlib
+
.. raw:: html
- :file: body.html
\ No newline at end of file
+
+
+
diff --git a/docs/locales/.keep b/docs/locales/.keep
new file mode 100644
index 0000000..e69de29
diff --git a/docs/locales/la/LC_MESSAGES/brochure.mo b/docs/locales/la/LC_MESSAGES/brochure.mo
new file mode 100644
index 0000000..9cd89d0
Binary files /dev/null and b/docs/locales/la/LC_MESSAGES/brochure.mo differ
diff --git a/docs/locales/la/LC_MESSAGES/brochure.po b/docs/locales/la/LC_MESSAGES/brochure.po
new file mode 100644
index 0000000..84a5b2c
--- /dev/null
+++ b/docs/locales/la/LC_MESSAGES/brochure.po
@@ -0,0 +1,449 @@
+#
+# <>, 2024.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Matplotlib landing page \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-08-16 02:22-0400\n"
+"PO-Revision-Date: 2024-08-16 06:42-0400\n"
+"Last-Translator: <>\n"
+"Language: la\n"
+"Language-Team: Latin\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Gtranslator 46.1\n"
+
+#: ../../index.rst:8
+msgid "Matplotlib: Visualization with Python"
+msgstr "Atplotlibmay: Isualizationvay ithway Ythonpay"
+
+#: ../../index.rst:13
+msgid ""
+"Matplotlib is a comprehensive library for creating static, animated, and "
+"interactive visualizations in Python. Matplotlib makes easy things easy and "
+"hard things possible."
+msgstr ""
+"Atplotlibmay siway away omprehensivecay ibrarylay orfay eatingcray aticstay, "
+"nimatedaway, danay eractiveintay isualizationsvay niway Ythonpay. "
+"atplotlibmay akesmay syeaway ingsthay syeaway danay ardhay ingsthay "
+"ossiblepay."
+
+#: ../../index.rst:17
+msgid ""
+"Create `publication quality plots `__."
+msgstr ""
+"Eatecray `ublicationpay alityquay otsplay `__."
+
+#: ../../index.rst:19
+msgid ""
+"Make `interactive figures `__ that can zoom, pan, "
+"update."
+msgstr ""
+"Akemay `eractiveintay iguresfay `__ atthay ancay "
+"oomzay, anpay, dateupay."
+
+#: ../../index.rst:22
+msgid ""
+"Customize `visual style `__ and `layout `__."
+msgstr ""
+"Ustomizecay `isualvay ylesyat `__ danay `ayoutlay `__."
+
+#: ../../index.rst:25
+msgid ""
+"Export to `many file formats `__."
+msgstr ""
+"Ortexpay otay `anymay ilefay ormatsfay `__."
+
+#: ../../index.rst:27
+msgid ""
+"Embed in `JupyterLab and Graphical User Interfaces `__."
+msgstr ""
+"Bedemay niway `UpyterjayAbLay danay Aphicalgray Seruway Erfacesintay "
+"`__."
+
+#: ../../index.rst:29
+msgid ""
+"Use a rich array of `third-party packages `__ built on Matplotlib."
+msgstr ""
+"Seuway away ichray rrayaway foway `irdthay-artypay ackagespay `__ uiltbay nay Atplotlibmay."
+
+#: ../../index.rst:32
+msgid "Try Matplotlib (on Binder)"
+msgstr "Rytay Atplotlibmay (noway Inderbay)"
+
+#: ../../index.rst:44
+msgid "computer desktop icon"
+msgstr "omputercay esktopday coniway"
+
+#: ../../index.rst:49
+msgid "Getting Started"
+msgstr "Ettinggay Artedstay"
+
+#: ../../index.rst:51
+msgid "folder icon"
+msgstr "olderfay coniway"
+
+#: ../../index.rst:56
+msgid "Examples"
+msgstr "Xampleseway"
+
+#: ../../index.rst:58
+msgid "documentation book icon"
+msgstr "ocumentationday ookbay coniway"
+
+#: ../../index.rst:63
+msgid "Reference"
+msgstr "Eferenceray"
+
+#: ../../index.rst:65
+msgid "cheatsheet icon"
+msgstr "eatsheetchay coniway"
+
+#: ../../index.rst:70
+msgid "Cheat Sheets"
+msgstr "Eatchay Eetsshay"
+
+#: ../../index.rst:72
+msgid "matplotlib logo icon"
+msgstr "atplotlibmay ogolay coniway"
+
+#: ../../index.rst:77
+msgid "Documentation"
+msgstr "Ocumentationday"
+
+#: ../../index.rst:84
+msgid "News"
+msgstr "Ewsnay"
+
+#: ../../index.rst:94
+msgid "May 30, 2024"
+msgstr "Aymay 30, 2024"
+
+#: ../../index.rst:96
+msgid "GSOC 2024: Bivariate Colormaps"
+msgstr "OUFO 2024: Ivariatebay Olormapscay"
+
+#: ../../index.rst:101
+msgid ""
+"A warm welcome to Trygve Magnus Ræder, who is working on `bivariate "
+"colormapping `__."
+msgstr ""
+"Away armway elcomeway otay Ygvetray Agnusmay Æderray, owhay siway orkingway "
+"noway `ivariatebay olormappingcay `__."
+
+#: ../../index.rst:108
+msgid "May 16, 2023"
+msgstr "Aymay 16, 2023"
+
+#: ../../index.rst:110
+msgid "Matplotlib 3.9.0 Released"
+msgstr "Atplotlibmay 3.9.0 Eleasedray"
+
+#: ../../index.rst:115
+msgid ""
+"We thank the 175 authors for the 450 pull requests that comprise the 3.9.0 "
+"release."
+msgstr ""
+"Eway ankthay ethay 175 thorsauway orfay ethay 450 ullpay equestsray atthay "
+"omprisecay ethay 3.9.0 eleaseray."
+
+#: ../../index.rst:118
+msgid ""
+"`Older Announcements `__"
+msgstr ""
+"`Derolay Nnouncementsaway `__"
+
+#: ../../index.rst:120
+msgid "Resources"
+msgstr "Esourcesray"
+
+#: ../../index.rst:125
+msgid ":far:`question-circle;callout-icon`"
+msgstr ""
+
+#: ../../index.rst:127
+msgid ""
+"Be sure to check the `Users guide `__ and the `API docs `__. The full text `search `__ is a good way to discover the docs including the many examples."
+msgstr ""
+"Ebay uresay otay eckchay ethay `Sersuway uidegay `__ danay ethay `PON ocsday `__. Ethay ullfay exttay `earchsay `__ siway away oodgay ayway otay iscoverday ethay "
+"ocsday ludingincay ethay anymay xampleseway."
+
+#: ../../index.rst:133
+msgid ":fab:`discourse;callout-icon`"
+msgstr ""
+
+#: ../../index.rst:135
+msgid ""
+"Join our community at `discourse.matplotlib.org `__ to get help, share your work, and discuss contributing & "
+"development."
+msgstr ""
+"Oinjay uroway ommunitycay taway `discourse.matplotlib.org `__ otay etgay elphay, areshay ouryay orkway, danay iscussday "
+"ontributingcay & evelopmentday."
+
+#: ../../index.rst:139
+msgid ":fab:`stack-overflow;callout-icon`"
+msgstr ""
+
+#: ../../index.rst:141
+msgid ""
+"Check out the Matplotlib tag on `StackOverflow `__."
+msgstr ""
+"Eckchay utoway ethay Atplotlibmay agtay noway `AckstayVerflowoway `__."
+
+#: ../../index.rst:144
+msgid ":fas:`calendar-alt;callout-icon`"
+msgstr ""
+
+#: ../../index.rst:146
+msgid ""
+"Meet us at our monthly call for new contributors to the Matplotlib project. "
+"Subscribe to our `community calendar `__ at Scientific Python to get access to all our community "
+"meetings."
+msgstr ""
+"Eetmay suway taway uroway onthlymay allcay orfay ewnay ontributorscay otay "
+"ethay Atplotlibmay ojectpray. Ubscribesay otay uroway `ommunitycay "
+"alendarcay `__ taway Ientificscay "
+"Ythonpay otay etgay ccessaway otay llaway uroway ommunitycay eetingsmay."
+
+#: ../../index.rst:151
+msgid ":fab:`gitter;callout-icon`"
+msgstr ""
+
+#: ../../index.rst:153
+msgid ""
+"Short questions related to contributing to Matplotlib may be posted on the "
+"`gitter `__ channel."
+msgstr ""
+"Ortshay estionsquay elatedray otay ontributingcay otay Atplotlibmay aymay "
+"ebay ostedpay noway ethay `ittergay `__ annelchay."
+
+#: ../../index.rst:161
+msgid "Domain Specific Tools"
+msgstr "Omainday Ecificspay Oolstay"
+
+#: ../../index.rst:167
+msgid ""
+"A large number of third party packages extend and build on Matplotlib "
+"functionality, including several higher-level plotting interfaces (seaborn, "
+"HoloViews, ggplot, ...), and a projection and mapping toolkit (Cartopy)."
+msgstr ""
+"Away argelay umbernay foway irdthay artypay ackagespay tendexay danay "
+"uildbay noway Atplotlibmay unctionalityfay, ludingincay everalsay igherhay-"
+"evellay ottingplay erfacesintay (eabornsay, OlohayIewsVay, aaotplay, ...), "
+"danay away ojectionpray danay appingmay oolkittay (ArtoYt)."
+
+#: ../../index.rst:172
+msgid ""
+"`More Domain-Specific Tools `__"
+msgstr ""
+"`Oremay Omainday-Ecificspay Oolstay `__"
+
+#: ../../index.rst
+msgid "seaborn"
+msgstr "eabornsay"
+
+#: ../../index.rst:185
+msgid ""
+"seaborn is a high level interface for drawing statistical graphics with "
+"Matplotlib. It aims to make visualization a central part of exploring and "
+"understanding complex datasets."
+msgstr ""
+"eabornsay siway away ighhay evellay erfaceintay orfay awingdray "
+"atisticalstay aphicsgray ithway Atplotlibmay. Tiway imsaway otay akemay "
+"isualizationvay away entralcay artpay foway ploringexay danay "
+"nderstandinguway omplexcay atasetsday."
+
+#: ../../index.rst:189
+msgid "`statistical data visualization `__"
+msgstr "`atisticalstay ataday isualizationvay `__"
+
+#: ../../index.rst
+msgid "Cartopy"
+msgstr "ArtoYt"
+
+#: ../../index.rst:195
+msgid ""
+"Cartopy is a Python package designed for geospatial data processing in order "
+"to produce maps and other geospatial data analyses."
+msgstr ""
+"ArtoYt siway away Ythonpay ackagepay esignedday orfay eospatialgay ataday "
+"ocessingpray niway rderoway otay oducepray apsmay danay theroway "
+"eospatialgay ataday nalysesaway."
+
+#: ../../index.rst:198
+msgid "`Cartopy `__"
+msgstr "`ArtoYt `__"
+
+#: ../../index.rst
+msgid "DNA Features Viewer"
+msgstr "EUC Eaturesfay Iewervay"
+
+#: ../../index.rst:204
+msgid ""
+"DNA Features Viewer is a Python library to visualize DNA features, e.g. from "
+"GenBank or Gff files, or Biopython SeqRecords."
+msgstr ""
+"EUC Eaturesfay Iewervay siway away Ythonpay ibrarylay otay isualizevay EUC "
+"eaturesfay, x.a. omfray EngayAnkbay roway Gff ilesfay, roway IobayYthonpay "
+"EqsayEcordsray."
+
+#: ../../index.rst:207
+msgid ""
+"`DNA Features Viewer `__"
+msgstr ""
+"`EUC Eaturesfay Iewervay `__"
+
+#: ../../index.rst
+msgid "plotnine"
+msgstr "otplyainenay"
+
+#: ../../index.rst:214
+msgid ""
+"plotnine is an implementation of a grammar of graphics in Python. The "
+"grammar allows users to compose plots by explicitly mapping data to the "
+"visual objects that make up the plot."
+msgstr ""
+"otplyainenay siway naway plementationimay foway away ammargray foway "
+"aphicsgray niway Ythonpay. Ethay ammargray llowsaway sersuway otay omposecay "
+"otsplay ybay plicitlyexay appingmay ataday otay ethay isualvay bjectsoway "
+"atthay akemay puway ethay otplay."
+
+#: ../../index.rst:218
+msgid "`plotnine `__"
+msgstr "`otplyainenay `__"
+
+#: ../../index.rst
+msgid "WCS Axes"
+msgstr "OOY Xesaway"
+
+#: ../../index.rst:224
+msgid ""
+"WCSAxes is a framework for making plots of Astronomical data in Matplotlib."
+msgstr ""
+"OOYXesaway siway away ameworkfray orfay akingmay otsplay foway "
+"Stronomicalaway ataday niway Atplotlibmay."
+
+#: ../../index.rst:227
+msgid "`WCSAxes `__"
+msgstr ""
+"`OOY Xesaway `__"
+
+#: ../../index.rst:233
+msgid "Support Matplotlib"
+msgstr "Upportsay Atplotlibmay"
+
+#: ../../index.rst:240
+msgid "Contribute"
+msgstr "Ontributecay"
+
+#: ../../index.rst:245
+msgid "Matplotlib is a community project maintained for and by its users"
+msgstr ""
+"Atplotlibmay siway away ommunitycay ojectpray aintainedmay orfay danay ybay "
+"tsiway sersuway"
+
+#: ../../index.rst:247
+msgid ""
+"You can help by answering questions `on discourse `__, reporting a bug or requesting a feature `on GitHub "
+"`__, or improving the "
+"`documentation and code `__!"
+msgstr ""
+"Ouyay ancay elphay ybay nsweringaway estionsquay `noway iscourseday `__, eportingray away ugbay roway equestingray away "
+"eaturefay `noway ItgayUbhay `__, roway mprovingiway ethay `ocumentationday danay odecay `__!"
+
+#: ../../index.rst:253
+msgid "Join us on Discourse"
+msgstr "Oinjay suway noway Iscourseday"
+
+#: ../../index.rst:258
+msgid "Join us on GitHub"
+msgstr "Oinjay suway noway ItgayUbhay"
+
+#: ../../index.rst:263
+msgid "Cite"
+msgstr "Itecay"
+
+#: ../../index.rst:268
+msgid ""
+"Matplotlib is the result of development efforts by John Hunter (1968–2012) "
+"and the project's `many contributors `__."
+msgstr ""
+"Atplotlibmay siway ethay esultray foway evelopmentday ffortseway ybay Ohnjay "
+"Unterhay (1968–2012) danay ethay ojectpray's `anymay ontributorscay `__."
+
+#: ../../index.rst:272
+msgid ""
+"If Matplotlib contributes to a project that leads to a scientific "
+"publication, please acknowledge this work by citing the project!"
+msgstr ""
+"Fiway Atplotlibmay ontributescay otay away ojectpray atthay eadslay otay "
+"away ientificscay ublicationpay, easeplay cknowledgeaway isthay orkway ybay "
+"itingcay ethay ojectpray!"
+
+#: ../../index.rst:275
+msgid "Ready made citation"
+msgstr "Eadyway ademay itationcay"
+
+#: ../../index.rst:280
+msgid "Donate"
+msgstr "Onateday"
+
+#: ../../index.rst:285
+msgid ""
+"If you would like to support Matplotlib financially you can donate by "
+"`sponsoring Matplotlib on GitHub `__ "
+"or making a (USA) tax-deductible donation `through NumFOCUS `__."
+msgstr ""
+"Fiway ouyay ouldway ikelay otay upportsay Atplotlibmay inanciallyfay ouyay "
+"ancay onateday ybay `onsoringspay Atplotlibmay noway ItgayUbhay `__ roway akingmay away (NAM) axtay-"
+"eductibleday onationday `oughthray UmnayOCUSFAY `__."
+
+#: ../../index.rst:290
+msgid "Sponsor on GitHub"
+msgstr "Onsorspay noway ItgayUbhay"
+
+#: ../../index.rst:295
+msgid "Donate to Matplotlib"
+msgstr "Onateday otay Atplotlibmay"
diff --git a/requirements.txt b/requirements.txt
index 0eab217..72a9fe2 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,4 +3,6 @@ mpl-sphinx-theme~=3.9.0
pydata-sphinx-theme~=0.15.0
pygments>=2.7
sphinx>=7.1
+sphinx-design>=0.6.0
+sphinx-intl
sphinx-notfound-page