Import Upstream version 3.2.0

This commit is contained in:
su-fang 2023-03-20 15:22:10 +08:00
commit e79eb46a9a
74 changed files with 4672 additions and 0 deletions

81
.github/workflows/tests.yml vendored Normal file
View File

@ -0,0 +1,81 @@
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: continuous-integration
on:
push:
branches: [master]
tags:
- 'v*'
pull_request:
jobs:
py-tests:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.6, 3.7, 3.8]
sphinx: [">=2,<3", ">=3,<4", "==4.0.0b1"]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install "sphinx${{ matrix.sphinx }}"
pip install .[testing]
- name: Run pytest
run: |
pytest --cov=sphinx_tabs --cov-report=xml --cov-report=term-missing
- name: Upload to Codecov
if: matrix.python-version == 3.7 && matrix.sphinx == '>=3,<4' && github.repository == 'executablebooks/sphinx-tabs'
uses: codecov/codecov-action@v1
with:
name: sphinx-tabs-pytests-py3.7
flags: pytests
file: ./coverage.xml
fail_ci_if_error: true
js-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 15
uses: actions/setup-node@v1
with:
node-version: '15'
- name: Install jest
run: npm install jest@26.6.3
- name: Run JS tests
run: npm test
publish:
name: Publish to PyPi
needs: [py-tests, js-tests]
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v2
- name: Set up Python 3.7
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Build package
run: |
pip install wheel
python setup.py sdist bdist_wheel
- name: Publish
uses: pypa/gh-action-pypi-publish@v1.1.0
with:
user: __token__
password: ${{ secrets.PYPI_KEY }}

11
.gitignore vendored Normal file
View File

@ -0,0 +1,11 @@
build
_build
dist
test-output
*.egg*
docs/.doctrees
.tox/
.vscode/
__pycache__
*.pyc
.DS_Store

38
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,38 @@
repos:
- repo: git://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
hooks:
- id: check-json
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
exclude:
".xml"
- repo: https://github.com/mgedmin/check-manifest
rev: "0.46"
hooks:
- id: check-manifest
- repo: https://github.com/psf/black
rev: 21.7b0
hooks:
- id: black
- repo: https://github.com/PyCQA/pylint
rev: v2.9.5
hooks:
- id: pylint
args:
- --disable=missing-docstring,similarities,fixme,bad-continuation
additional_dependencies:
- sphinx
- docutils
- pygments
exclude: >
(?x)^(
setup.py|
tests/.*|
docs/.*
)$

14
.readthedocs.yml Normal file
View File

@ -0,0 +1,14 @@
version: 2
python:
version: 3
install:
- method: pip
path: .
sphinx:
builder: html
fail_on_warning: true
formats:
- pdf

178
CHANGELOG.md Normal file
View File

@ -0,0 +1,178 @@
# Change Log
## 3.2.0 - 2021-06-11
### Fixed
* 🐛 Added default value for `exports` in JavaScript. Removes error that `exports` is not defined on page
### Added
* 👌 Use of [`sphinx` HTML assets policy](https://github.com/sphinx-doc/sphinx/issues/9115) to decide whether include assets
## 3.1.0 - 2021-06-11
### Added
* 👌 Added new sphinx config `sphinx_tabs_disable_css_loading` option to disable css from loading
## 3.0.0 - 2021-05-10
### Fixed
* 🐛 Update for compatibility with Sphinx 4
## 2.1.0 - 2021-03-10
### Fixed
* 🐛 Tabs with nested content becoming hidden on click
### Improved
* 👌 Added new sphinx config option `sphinx_tabs_disable_tab_closing` to allow new tab closing functionality to be disabled globally (better backwards compatibility with sphinx-tabs<2)
## 2.0.1 - 2021-02-07
### Fixed
* Nested parsing of tab labels, to support use of reST roles within label text
* Parsing tabs with unsupported builders, including for pdf
### Added
* Test for successful pdf building using `rinohtype`
## 2.0.0 - 2021-01-24
♻️ Refactor to reduce JS/CSS payload size and improve accesibility:
* Removed semantic-ui assets
* Removed unused 'sphinx_tabs_nowarn' sphinx option
* JS/CSS assets are now copied across by sphinx when builing, rather than being copied by the extension
* Changed tab HTML to use tab roles
* Changed tab label colour, to increase contrast with background
* Added ARIA labels for tabs and panels
* Added tabindex atributes to allow users to focus and switch tabs using a keyboard
* Added a margin below images inside tab content
✨ New features:
* Selecting an open tab now closes the tabs panel
* The last selected group tab persists between pages (if the browser supports session storage)
## 1.3.0 - 2020-09-08
♻️ Major refactor of tabs, group-tabs and code-tabs (thanks to [@foster999](https://github.com/foster999)):
* Removes hard-coded reStructuredText for group and code tabs, so that this works with other parsers (inc `MyST Markdown`)
* group-tab directive now subclasses `TabDirective` to remove duplicated run code
* likewise, `code-tab` now subclasses `group-tab`
* `TabDirective` and `TabsDirective` now subclass `SphinxDirective` for easier access to directive `env`
🧪 testing infrastructure has now fully moved from unittest to pytest
✨ New features:
* Can now pass `code-tabs` with a second argument (allowing whitespace) to provide an alternative tab label
* `code-tabs` can now use custom lexers, which are added to the sphinx app in `conf.py`
## v1.2.1 - 2020-08-20
🐛 FIX: Remove `app.add_javascript` use for sphinx v2
## v1.2.0 - 2020-08-18
`sphinx-tabs` has now moved to the [EBP organisation](https://executablebooks.org) 🎉
### Deprecated 🗑
- Python < 3.5 and Sphinx < 2 support dropped
### Improved 👌
- Lots of code and CI restructuring (see [EBP Migration (#76)](https://github.com/executablebooks/sphinx-tabs/commit/6342ed3f1f7d4cb50891001f26d4e3c4c08ee422))
### Fixed 🐛
- Replace `add_javascript` by `add_js` for sphinx>=3 (removes warning!),
thanks to [@Daltz333](https://github.com/Daltz333)
## v1.1.13
- Marked the extension as parallel safe (#46)
## v1.1.12
- Fix bug in Internet Explorer (#33)
- Drop support for Python 3.4 (as lxml no longer supports it)
## v1.1.11
- Support for Sphinx 2
- Update to Semantic UI 2.4.1
- Fix oversize tabs in Sphinx 2 (#38)
- Various bug fixes
## v1.1.10
- Fix group tabs behaviour (#31)
## v1.1.9
- Fix copying of tab assets (JS and CSS) when module is installed as a python egg
- Make tabs wrap on narrow screens (#30)
- Add support for nested tabs (#29)
## v1.1.8
- Add support for :linenos: to code tabs (#22)
- Improve fallback for non-HTML builders (#19)
- Add spelling builder to list of builders (#20)
- Fix naming a tab as a number (#24)
## v1.1.7
- Fix css files not being removed when tabs are not used on a page
- Now require sphinx>=1.4
- Fix issues with script and css includes on readthedocs (#17)
## v1.1.6
- Don't emit an additional error in the copy assets handler if the build process fails
## v1.1.5
- Add sphinx_tabs_nowarn option to disable warning about incompatible builder. Useful when running sphinx-build with the -W flag
## v1.1.4
- Fix broken javascript file inclusion
## v1.1.3
- Insert CSS and JS files after custom ones add in conf.py
## v1.1.2
- Add support for dirhtml builder
## v1.1.1
- Allow multiple group tabs with the same name (the ordering of the tabs is used to determine the group ids)
- Use b64 encoding of group id for group tabs to avoid illegal character in CSS class
## v1.1.0
- Fix issue with multiple words in tab titles
- Add support for markup in tab titles
- Fix graphical glitches caused by illegal characters in group tab ids
## v1.0.1
- Fix possible exception when adding/removing CSS/JS files from the context
## v1.0.0
- Initial version

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2017 djungelorm
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

23
MANIFEST.in Normal file
View File

@ -0,0 +1,23 @@
exclude docs
recursive-exclude docs *
exclude tests
recursive-exclude tests *
exclude images
recursive-exclude images *
exclude .pre-commit-config.yaml
exclude .readthedocs.yml
exclude pylint.cfg
exclude tox.ini
exclude codecov.yml
include LICENSE
include README.md
include CHANGELOG.md
recursive-include sphinx_tabs *.css
recursive-include sphinx_tabs *.js
include *.js
include *.json
recursive-include __tests__ *.js

191
README.md Normal file
View File

@ -0,0 +1,191 @@
# sphinx-tabs
[![Github-CI][github-ci]][github-link]
[![Coverage Status][codecov-badge]][codecov-link]
[![PyPI][pypi-badge]][pypi-link]
Create tabbed content in [Sphinx documentation](http://www.sphinx-doc.org) when building HTML.
For example, see the [Raw] code of [docs/index.rst](docs/index.rst) which generates the following:
A live demo can be found here: <https://sphinx-tabs.readthedocs.io>
![Tabs](/images/tabs.gif)
## Installation
```bash
pip install sphinx-tabs
```
To enable the extension in Sphinx, add the following to your conf.py:
```python
extensions = ['sphinx_tabs.tabs']
```
If needed, there is a configuration option to allow additional builders to be considered compatible. For example, to add the `linkcheck` builder, add the following to your conf.py:
```python
sphinx_tabs_valid_builders = ['linkcheck']
```
If you are using [Read The Docs](https://readthedocs.org/) for building your documentation, the extension must be added as a requirement. Please add the following to `requirements.txt` at the root of the project:
```
sphinx-tabs
```
## Contributing
We welcome all contributions!
See the [EBP Contributing Guide](https://executablebooks.org/en/latest/contributing.html) for general details.
The simplest way to run tests is to install [pre-commit](https://pre-commit.com/) for linting and [tox](https://tox.readthedocs.io) for unit tests and documentation build:
```console
$ pre-commit run --all
```
```console
$ tox -p
```
## Basic Tabs
Basic tabs can be coded as follows:
```rst
.. tabs::
.. tab:: Apples
Apples are green, or sometimes red.
.. tab:: Pears
Pears are green.
.. tab:: Oranges
Oranges are orange.
```
![Tabs](/images/tabs.gif)
The contents of each tab can be displayed by clicking on the tab that you wish to show. Clicking on the tab that is currently open will hide the tab's content, leaving only the tab set labels visible.
Alternatively, tab sets can be focused using :kbd:`Tab`. The :kbd:`Left Arrow` and :kbd:`Right Arrow` keys can then be used to navigate across the tab set and :kbd:`Enter` can be used to select a tab.
## Grouped Tabs
Tabs can be grouped, so that changing the current tab in one tabset changes the current tab in all other tabsets containing a tab with a matching label.
For example:
```rst
.. tabs::
.. group-tab:: Linux
Linux Line 1
.. group-tab:: Mac OSX
Mac OSX Line 1
.. group-tab:: Windows
Windows Line 1
.. tabs::
.. group-tab:: Linux
Linux Line 1
.. group-tab:: Mac OSX
Mac OSX Line 1
.. group-tab:: Windows
Windows Line 1
```
![Group Tabs](/images/groupTabs.gif)
If permitted by the user's browser, the last selected group tab will be remembered when changing page. As such, if any tabsets on the next page contain a tab with the same label it will be selected.
## Code Tabs
Grouped tabs containing code with syntax highlighting can be created as follows:
```rst
.. tabs::
.. code-tab:: c
int main(const int argc, const char **argv) {
return 0;
}
.. code-tab:: c++
int main(const int argc, const char **argv) {
return 0;
}
.. code-tab:: py
def main():
return
.. code-tab:: java
class Main {
public static void main(String[] args) {
}
}
.. code-tab:: julia
function main()
end
.. code-tab:: fortran
PROGRAM main
END PROGRAM main
```
![Code Tabs](/images/codeTabs.gif)
Code tabs also support custom lexers (added via sphinx `conf.py`). Pass the lexers alias as the first argument of `code-tab`.
By default, code tabs are labelled with the language name, though a custom label can be provided as an optional second argument to the `code-tabs` directive:
```rst
.. tabs::
.. code-tab:: c I love C
int main(const int argc, const char **argv) {
return 0;
}
.. code-tab:: py I love Python more
def main():
return
```
The tab label is used to group tabs, including `code-tabs`. As such, the same custom label should be used to group related tabs.
[github-ci]: https://github.com/executablebooks/sphinx-tabs/workflows/continuous-integration/badge.svg?branch=master
[github-link]: https://github.com/executablebooks/sphinx-tabs
[pypi-badge]: https://img.shields.io/pypi/v/sphinx-tabs.svg
[pypi-link]: https://pypi.org/project/sphinx-tabs
[codecov-badge]: https://codecov.io/gh/executablebooks/sphinx-tabs/branch/master/graph/badge.svg
[codecov-link]: https://codecov.io/gh/executablebooks/sphinx-tabs

View File

@ -0,0 +1,126 @@
const { changeTabs } = require("../sphinx_tabs/static/tabs");
global.scrollTo = jest.fn();
describe("changeTabs", () => {
it("changes tab when new tab is selected", () => {
document.body.innerHTML =
'<div>' +
' <div>' +
' <button id="tab-1" aria-controls="panel-1" aria-selected="true">Test tab 1</button>' +
' <button id="tab-2" aria-controls="panel-2" aria-selected="false">Test tab 2</button>' +
' </div>' +
' <div id="panel-1">Test panel 1</div>' +
' <div id="panel-2" hidden="true">Test panel 2</div>' +
'</div>';
const allTabs = document.querySelectorAll('button');
allTabs.forEach(tab => {
tab.addEventListener("click", changeTabs);
});
let tab1 = document.getElementById('tab-1');
let tab2 = document.getElementById('tab-2');
let panel1 = document.getElementById('panel-1');
let panel2 = document.getElementById('panel-2');
expect(tab1.getAttribute('aria-selected')).toEqual('true');
expect(tab2.getAttribute('aria-selected')).toEqual('false');
expect(panel1.getAttribute('hidden')).toEqual(null);
expect(panel2.getAttribute('hidden')).toEqual('true');
tab2.click()
expect(tab1.getAttribute('aria-selected')).toEqual('false');
expect(tab2.getAttribute('aria-selected')).toEqual('true');
expect(panel1.getAttribute('hidden')).toEqual('true');
expect(panel2.getAttribute('hidden')).toEqual(null);
tab1.click();
expect(tab1.getAttribute('aria-selected')).toEqual('true');
expect(tab2.getAttribute('aria-selected')).toEqual('false');
expect(panel1.getAttribute('hidden')).toEqual(null);
expect(panel2.getAttribute('hidden')).toEqual('true');
})
it("closes tab in closeable tabList when selected", () => {
document.body.innerHTML =
'<div>' +
' <div class="closeable">' +
' <button id="tab-1" aria-controls="panel-1" aria-selected="true">Test tab 1</button>' +
' </div>' +
' <div id="panel-1">Test panel 1</div>' +
'</div>';
let tab = document.getElementById('tab-1');
let panel = document.getElementById('panel-1');
tab.addEventListener("click", changeTabs);
expect(tab.getAttribute('aria-selected')).toEqual('true');
expect(panel.getAttribute('hidden')).toEqual(null);
// Close
tab.click();
expect(tab.getAttribute('aria-selected')).toEqual('false');
expect(panel.getAttribute('hidden')).toEqual('true');
// Re-open
tab.click();
expect(tab.getAttribute('aria-selected')).toEqual('true');
expect(panel.getAttribute('hidden')).toEqual(null);
})
it("does not close tab in non-closeable tabList when selected", () => {
document.body.innerHTML =
'<div>' +
' <div>' +
' <button id="tab-1" aria-controls="panel-1" aria-selected="true">Test tab 1</button>' +
' </div>' +
' <div id="panel-1">Test panel 1</div>' +
'</div>';
let tab = document.getElementById('tab-1');
let panel = document.getElementById('panel-1');
tab.addEventListener("click", changeTabs);
expect(tab.getAttribute('aria-selected')).toEqual('true');
expect(panel.getAttribute('hidden')).toEqual(null);
tab.click();
expect(tab.getAttribute('aria-selected')).toEqual('true');
expect(panel.getAttribute('hidden')).toEqual(null);
})
it("changes tab when content nested inside the tab is clicked", () => {
document.body.innerHTML =
'<div>' +
' <div>' +
' <button id="tab-1" aria-controls="panel-1" aria-selected="true">Test tab 1</button>' +
' <button id="tab-2" aria-controls="panel-2" aria-selected="false"><strong id=bold>Test tab 2</strong></button>' +
' </div>' +
' <div id="panel-1">Test panel 1</div>' +
' <div id="panel-2" hidden="true">Test panel 2</div>' +
'</div>';
let tab1 = document.getElementById('tab-1');
let tab2 = document.getElementById('tab-2');
let panel1 = document.getElementById('panel-1');
let panel2 = document.getElementById('panel-2');
expect(tab1.getAttribute('aria-selected')).toEqual('true');
expect(tab2.getAttribute('aria-selected')).toEqual('false');
expect(panel1.getAttribute('hidden')).toEqual(null);
expect(panel2.getAttribute('hidden')).toEqual('true');
let tab_2_text = document.getElementById('bold');
expect(tab_2_text.getAttribute('hidden')).toEqual(null);
tab2.addEventListener("click", changeTabs);
tab_2_text.click();
expect(tab1.getAttribute('aria-selected')).toEqual('false');
expect(tab2.getAttribute('aria-selected')).toEqual('true');
expect(panel1.getAttribute('hidden')).toEqual('true');
expect(panel2.getAttribute('hidden')).toEqual(null);
expect(tab_2_text.getAttribute('hidden')).toEqual(null);
})
});

View File

@ -0,0 +1,31 @@
const { deselectTabList } = require("../sphinx_tabs/static/tabs");
describe("deselectTabList", () => {
it("deselects all tabs in tablist when one tab is clicked", () => {
document.body.innerHTML =
'<div>' +
' <div>' +
' <button id="tab-1" aria-controls="panel-1" aria-selected="true">Test tab 1</button>' +
' <button id="tab-2" aria-controls="panel-2" aria-selected="true">Test tab 2</button>' +
' </div>' +
' <div id="panel-1">Test panel 1</div>' +
' <div id="panel-2">Test panel 2</div>' +
'</div>';
let tab1 = document.getElementById('tab-1');
let tab2 = document.getElementById('tab-2');
let panel1 = document.getElementById('panel-1');
let panel2 = document.getElementById('panel-2');
expect(tab1.getAttribute('aria-selected')).toEqual('true');
expect(tab2.getAttribute('aria-selected')).toEqual('true');
expect(panel1.getAttribute('hidden')).toEqual(null);
expect(panel2.getAttribute('hidden')).toEqual(null);
deselectTabList(tab1);
expect(tab1.getAttribute('aria-selected')).toEqual('false');
expect(tab2.getAttribute('aria-selected')).toEqual('false');
expect(panel1.getAttribute('hidden')).toEqual('true');
expect(panel2.getAttribute('hidden')).toEqual('true');
})
})

View File

@ -0,0 +1,106 @@
const { selectNamedTabs } = require("../sphinx_tabs/static/tabs");
describe("selectNamedTabs", () => {
it("selects tabs with name, but not clickedId", () => {
document.body.innerHTML =
'<div>' +
' <div>' +
' <button class="sphinx-tabs-tab" aria-controls="panel-1-1" aria-selected="true">Test tab 1</button>' +
' <button class="sphinx-tabs-tab" aria-controls="panel-1-2" aria-selected="false" name="sharedName" id="clicked">Test tab 2</button>' +
' </div>' +
' <div id="panel-1-1">Test panel 1</div>' +
' <div id="panel-1-2" hidden="true"">Test panel 2</div>' +
'</div>' +
'<div>' +
' <div>' +
' <button class="sphinx-tabs-tab" aria-controls="panel-2-1" aria-selected="true">Test tab 1</button>' +
' <button class="sphinx-tabs-tab" aria-controls="panel-2-2" aria-selected="false" name="sharedName" id="notClicked">Test tab 2</button>' +
' </div>' +
' <div id="panel-2-1">Test panel 1</div>' +
' <div id="panel-2-2" hidden="true">Test panel 2</div>' +
'</div>';
let clickedTab = document.getElementById('clicked');
let namedTab = document.getElementById('notClicked');
let clickedTabPanel = document.getElementById('panel-1-2');
let namedTabPanel = document.getElementById('panel-2-2');
expect(clickedTab.getAttribute('aria-selected')).toEqual('false');
expect(namedTab.getAttribute('aria-selected')).toEqual('false');
expect(clickedTabPanel.getAttribute('hidden')).toEqual('true');
expect(namedTabPanel.getAttribute('hidden')).toEqual('true');
selectNamedTabs("sharedName", clickedId="clicked");
expect(clickedTab.getAttribute('aria-selected')).toEqual('false');
expect(namedTab.getAttribute('aria-selected')).toEqual('true');
expect(clickedTabPanel.getAttribute('hidden')).toEqual("true");
expect(namedTabPanel.getAttribute('hidden')).toEqual(null);
})
it("selects first tab with same name in another tabList", () => {
document.body.innerHTML =
'<div>' +
' <div>' +
' <button class="sphinx-tabs-tab" aria-controls="panel-1-1" aria-selected="true">Test tab 1</button>' +
' <button class="sphinx-tabs-tab" aria-controls="panel-1-2" aria-selected="false" name="sharedName" id="clicked">Test tab 2</button>' +
' </div>' +
' <div id="panel-1-1">Test panel 1</div>' +
' <div id="panel-1-2" hidden="true"">Test panel 2</div>' +
'</div>' +
'<div>' +
' <div>' +
' <button class="sphinx-tabs-tab" aria-controls="panel-2-1" aria-selected="true">Test tab 1</button>' +
' <button class="sphinx-tabs-tab" aria-controls="panel-2-2" aria-selected="false" name="sharedName" id="notClicked1">Test tab 2</button>' +
' <button class="sphinx-tabs-tab" aria-controls="panel-2-3" aria-selected="false" name="sharedName" id="notClicked2">Test tab 3</button>' +
' </div>' +
' <div id="panel-2-1">Test panel 1</div>' +
' <div id="panel-2-2" hidden="true">Test panel 2</div>' +
' <div id="panel-2-3" hidden="true">Test panel 3</div>' +
'</div>';
let clickedTab = document.getElementById('clicked');
let firstNamedTab = document.getElementById('notClicked1');
let secondNamedTab = document.getElementById('notClicked2');
expect(clickedTab.getAttribute('aria-selected')).toEqual('false');
expect(firstNamedTab.getAttribute('aria-selected')).toEqual('false');
expect(secondNamedTab.getAttribute('aria-selected')).toEqual('false');
selectNamedTabs("sharedName", clickedId="clicked");
expect(clickedTab.getAttribute('aria-selected')).toEqual('false');
expect(firstNamedTab.getAttribute('aria-selected')).toEqual('true');
expect(secondNamedTab.getAttribute('aria-selected')).toEqual('false');
})
it("doesn't change selected tab if tabList does not contain the name", () => {
document.body.innerHTML =
'<div>' +
' <div>' +
' <button class="sphinx-tabs-tab" aria-controls="panel-1-1" aria-selected="true">Test tab 1</button>' +
' <button class="sphinx-tabs-tab" aria-controls="panel-1-2" aria-selected="false" name="sharedName" id="clicked">Test tab 2</button>' +
' </div>' +
' <div id="panel-1-1">Test panel 1</div>' +
' <div id="panel-1-2" hidden="true"">Test panel 2</div>' +
'</div>' +
'<div>' +
' <div>' +
' <button class="sphinx-tabs-tab" aria-controls="panel-2-1" aria-selected="true" id="tab-2-1" >Test tab 1</button>' +
' <button class="sphinx-tabs-tab" aria-controls="panel-2-2" aria-selected="false" name="aName" id="tab-2-2">Test tab 2</button>' +
' </div>' +
' <div id="panel-2-1">Test panel 1</div>' +
' <div id="panel-2-2" hidden="true">Test panel 2</div>' +
'</div>';
let clickedTab = document.getElementById('clicked');
let tab1Tabset2 = document.getElementById('tab-2-1');
let tab2Tabset2 = document.getElementById('tab-2-2');
expect(clickedTab.getAttribute('aria-selected')).toEqual('false');
expect(tab1Tabset2.getAttribute('aria-selected')).toEqual('true');
expect(tab2Tabset2.getAttribute('aria-selected')).toEqual('false');
selectNamedTabs("sharedName", clickedId="clicked");
expect(clickedTab.getAttribute('aria-selected')).toEqual('false');
expect(tab1Tabset2.getAttribute('aria-selected')).toEqual('true');
expect(tab2Tabset2.getAttribute('aria-selected')).toEqual('false');
})
})

View File

@ -0,0 +1,38 @@
const { selectTab } = require("../sphinx_tabs/static/tabs");
describe("selectTab", () => {
test("unselected tab become selected", () => {
document.body.innerHTML =
'<div>' +
' <button id="tab" aria-controls="panel" aria-selected="false">Test</button>' +
' <div id="panel" hidden="true">Test</div>' +
'</div>';
let tab = document.getElementById('tab');
let panel = document.getElementById('panel');
expect(tab.getAttribute('aria-selected')).toEqual('false');
expect(panel.getAttribute('hidden')).toEqual("true");
selectTab(tab);
expect(tab.getAttribute('aria-selected')).toEqual('true');
expect(panel.getAttribute('hidden')).toEqual(null);
})
test("selected tab stays selected", () => {
document.body.innerHTML =
'<div>' +
' <button id="test-button" aria-controls="panel" aria-selected="true">Test</button>' +
' <div id="panel">Test</div>' +
'</div>';
let tab = document.getElementById('test-button');
let panel = document.getElementById('panel');
expect(tab.getAttribute('aria-selected')).toEqual('true');
expect(panel.getAttribute('hidden')).toEqual(null);
selectTab(tab);
expect(tab.getAttribute('aria-selected')).toEqual('true');
expect(panel.getAttribute('hidden')).toEqual(null);
})
})

10
codecov.yml Normal file
View File

@ -0,0 +1,10 @@
coverage:
status:
project:
default:
target: 85%
threshold: 0.5%
patch:
default:
target: 80%
threshold: 0.5%

5
docs/conf.py Normal file
View File

@ -0,0 +1,5 @@
project = "sphinx-tabs"
master_doc = "index"
source_suffix = ".rst"
extensions = ["sphinx_tabs.tabs"]
pygments_style = "sphinx"

387
docs/index.rst Normal file
View File

@ -0,0 +1,387 @@
Sphinx Tabs
***********
Create tabbed content in `Sphinx documentation <http://www.sphinx-doc.org>`_ when building HTML.
Installation
============
.. code-block:: bash
pip install sphinx-tabs
To enable the extension in Sphinx, add the following to your conf.py:
.. code-block:: python
extensions = ['sphinx_tabs.tabs']
If you are using `Read The Docs <https://readthedocs.org/>`_ for building your documentation, the extension must be added as a requirement. Please add `sphinx-tabs` to `requirements.txt` at the root of the project or in your docs folder.
Sphinx Configuration
====================
If needed, there is a configuration option to allow additional builders to be considered compatible. For example, to add the `linkcheck` builder, add the following to your `conf.py`:
.. code-block:: python
sphinx_tabs_valid_builders = ['linkcheck']
By default, tabs can be closed by selecting the open tab. This functionality can be disabled using the `sphinx_tabs_disable_tab_closing` configuration option:
.. code-block:: python
sphinx_tabs_disable_tab_closing = True
Custom lexers that have been loaded in the sphinx `conf.py` can be used with `code-tabs`:
.. code-block:: python
def setup(app):
app.add_lexer('alias', MyCustomLexer())
By default, the extension loads predefined CSS styles for tabs. To disable the CSS from loading, add the following to your `conf.py`:
.. code-block:: python
sphinx_tabs_disable_css_loading = True
Basic Tabs
===========
All `sphinx-tabs` use the `tabs` directive to define a tab set. Basic tabs are added using the `tab` directive, which takes the tab's label as an argument:
.. code-block:: RST
.. tabs::
.. tab:: Apples
Apples are green, or sometimes red.
.. tab:: Pears
Pears are green.
.. tab:: Oranges
Oranges are orange.
These will appear as:
.. tabs::
.. tab:: Apples
Apples are green, or sometimes red.
.. tab:: Pears
Pears are green.
.. tab:: Oranges
Oranges are orange.
The contents of each tab can be displayed by clicking on the tab that you wish to show. Clicking on the tab that is currently open will hide the tab's content, leaving only the tab set labels visible.
Alternatively, tab sets can be focused using :kbd:`Tab`. The :kbd:`Left Arrow` and :kbd:`Right Arrow` keys can then be used to navigate across the tab set and :kbd:`Enter` can be used to select a tab.
Nested Tabs
===========
Tabs can be nested inside one another:
.. code-block:: RST
.. tabs::
.. tab:: Stars
.. tabs::
.. tab:: The Sun
The closest star to us.
.. tab:: Proxima Centauri
The second closest star to us.
.. tab:: Polaris
The North Star.
.. tab:: Moons
.. tabs::
.. tab:: The Moon
Orbits the Earth
.. tab:: Titan
Orbits Jupiter
Nested tabs appear as:
.. tabs::
.. tab:: Stars
.. tabs::
.. tab:: The Sun
The closest star to us.
.. tab:: Proxima Centauri
The second closest star to us.
.. tab:: Polaris
The North Star.
.. tab:: Moons
.. tabs::
.. tab:: The Moon
Orbits the Earth
.. tab:: Titan
Orbits Jupiter
Group Tabs
==========
When multiple tab sets contain related content, the `group-tab` directive can be used to create group tabs:
.. code-block:: RST
.. tabs::
.. group-tab:: Linux
Linux tab content - tab set 1
.. group-tab:: Mac OSX
Mac OSX tab content - tab set 1
.. group-tab:: Windows
Windows tab content - tab set 1
.. tabs::
.. group-tab:: Linux
Linux tab content - tab set 2
.. group-tab:: Mac OSX
Mac OSX tab content - tab set 2
.. group-tab:: Windows
Windows tab content - tab set 2
.. tabs::
.. group-tab:: Linux
Linux tab content - tab set 1
.. group-tab:: Mac OSX
Mac OSX tab content - tab set 1
.. group-tab:: Windows
Windows tab content - tab set 1
.. tabs::
.. group-tab:: Linux
Linux tab content - tab set 2
.. group-tab:: Mac OSX
Mac OSX tab content - tab set 2
.. group-tab:: Windows
Windows tab content - tab set 2
The tab selection in these groups is synchronised, so selecting the 'Linux' tab of one tab set will open the 'Linux' tab contents in all tab sets on the current page.
If permitted by the user's browser, the last selected group tab will be remembered when changing page in the current session. As such, if any tabsets on the next page contain a tab with the same label it will be selected.
Code Tabs
=========
A common use of group tabs is to show code examples in multiple programming languages. The `code-tab` directive creates a group tab and treats the tab content as a `code-block`.
The first argument to a `code-tab` is the name of the language to use for code highlighting, while the optional second argument is a custom label for the tab. By default, the tab is labelled using the lexer name. The tab label is used to group tabs, so the same custom label should be used to group related tabs.
.. code-block:: RST
.. tabs::
.. code-tab:: c
C Main Function
.. code-tab:: c++
C++ Main Function
.. code-tab:: py
Python Main Function
.. code-tab:: java
Java Main Function
.. code-tab:: julia
Julia Main Function
.. code-tab:: fortran
Fortran Main Function
.. code-tab:: r R
R Main Function
.. tabs::
.. code-tab:: c
int main(const int argc, const char **argv) {
return 0;
}
.. code-tab:: c++
int main(const int argc, const char **argv) {
return 0;
}
.. code-tab:: py
def main():
return
.. code-tab:: java
class Main {
public static void main(String[] args) {
}
}
.. code-tab:: julia
function main()
end
.. code-tab:: fortran
PROGRAM main
END PROGRAM main
.. code-tab:: r R
main <- function() {
return(0)
}
.. tabs::
.. code-tab:: c
C Main Function
.. code-tab:: c++
C++ Main Function
.. code-tab:: py
Python Main Function
.. code-tab:: java
Java Main Function
.. code-tab:: julia
Julia Main Function
.. code-tab:: fortran
Fortran Main Function
.. code-tab:: r R
R Main Function
.. tabs::
.. code-tab:: c
int main(const int argc, const char **argv) {
return 0;
}
.. code-tab:: c++
int main(const int argc, const char **argv) {
return 0;
}
.. code-tab:: py
def main():
return
.. code-tab:: java
class Main {
public static void main(String[] args) {
}
}
.. code-tab:: julia
function main()
end
.. code-tab:: fortran
PROGRAM main
END PROGRAM main
.. code-tab:: r R
main <- function() {
return(0)
}
Code tabs support highlighting using `custom syntax highlighters <https://pygments.org/docs/lexerdevelopment/>`_ that have been loaded in the sphinx configuration. To use custom lexers, pass the lexers alias as the first argument of `code-tab`.

BIN
images/codeTabs.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

BIN
images/groupTabs.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

BIN
images/tabs.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

6
jest.config.js Normal file
View File

@ -0,0 +1,6 @@
/*
* For a detailed explanation regarding each configuration property, visit:
* https://jestjs.io/docs/en/configuration.html
*/
module.exports = {};

5
package.json Normal file
View File

@ -0,0 +1,5 @@
{
"scripts": {
"test": "jest"
}
}

8
pylint.cfg Normal file
View File

@ -0,0 +1,8 @@
[BASIC]
extension-pkg-whitelist=lxml
[MESSAGES CONTROL]
disable=missing-docstring,similarities,fixme,bad-continuation
[REPORTS]
reports=no

62
setup.py Executable file
View File

@ -0,0 +1,62 @@
#!/usr/bin/env python
from os import path
import re
from setuptools import setup
def get_version():
text = open(path.join(path.dirname(__file__), "sphinx_tabs", "__init__.py")).read()
match = re.compile(r"^__version__\s*\=\s*[\"\']([^\s\'\"]+)", re.M).search(text)
return match.group(1)
with open("README.md") as readme:
long_description = readme.read()
setup(
name="sphinx-tabs",
version=get_version(),
description="Tabbed views for Sphinx",
long_description=open("README.md").read(),
long_description_content_type="text/markdown",
author="djungelorm",
author_email="djungelorm@users.noreply.github.com",
packages=["sphinx_tabs"],
include_package_data=True,
url="https://github.com/executablebooks/sphinx-tabs",
license="MIT",
python_requires="~=3.6",
install_requires=["sphinx>=2,<5", "pygments", "docutils~=0.16.0"],
extras_require={
"testing": [
"coverage",
"pytest>=3.6,<4",
"pytest-cov",
"pytest-regressions",
"pygments",
"sphinx_testing",
"bs4",
"rinohtype",
],
"code_style": ["pre-commit==2.13.0"],
},
classifiers=[
"Development Status :: 5 - Production/Stable",
"Environment :: Plugins",
"Environment :: Web Environment",
"Framework :: Sphinx :: Extension",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python",
"Topic :: Documentation :: Sphinx",
"Topic :: Documentation",
"Topic :: Software Development :: Documentation",
"Topic :: Text Processing",
"Topic :: Utilities",
],
)

3
sphinx_tabs/__init__.py Normal file
View File

@ -0,0 +1,3 @@
__version__ = "3.2.0"
__import__("pkg_resources").declare_namespace(__name__)

View File

@ -0,0 +1,53 @@
.sphinx-tabs {
margin-bottom: 1rem;
}
[role="tablist"] {
border-bottom: 1px solid #a0b3bf;
}
.sphinx-tabs-tab {
position: relative;
font-family: Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;
color: #1D5C87;
line-height: 24px;
margin: 0;
font-size: 16px;
font-weight: 400;
background-color: rgba(255, 255, 255, 0);
border-radius: 5px 5px 0 0;
border: 0;
padding: 1rem 1.5rem;
margin-bottom: 0;
}
.sphinx-tabs-tab[aria-selected="true"] {
font-weight: 700;
border: 1px solid #a0b3bf;
border-bottom: 1px solid white;
margin: -1px;
background-color: white;
}
.sphinx-tabs-tab:focus {
z-index: 1;
outline-offset: 1px;
}
.sphinx-tabs-panel {
position: relative;
padding: 1rem;
border: 1px solid #a0b3bf;
margin: 0px -1px -1px -1px;
border-radius: 0 0 5px 5px;
border-top: 0;
background: white;
}
.sphinx-tabs-panel.code-tab {
padding: 0.4rem;
}
.sphinx-tab img {
margin-bottom: 24 px;
}

145
sphinx_tabs/static/tabs.js Normal file
View File

@ -0,0 +1,145 @@
try {
var session = window.sessionStorage || {};
} catch (e) {
var session = {};
}
window.addEventListener("DOMContentLoaded", () => {
const allTabs = document.querySelectorAll('.sphinx-tabs-tab');
const tabLists = document.querySelectorAll('[role="tablist"]');
allTabs.forEach(tab => {
tab.addEventListener("click", changeTabs);
});
tabLists.forEach(tabList => {
tabList.addEventListener("keydown", keyTabs);
});
// Restore group tab selection from session
const lastSelected = session.getItem('sphinx-tabs-last-selected');
if (lastSelected != null) selectNamedTabs(lastSelected);
});
/**
* Key focus left and right between sibling elements using arrows
* @param {Node} e the element in focus when key was pressed
*/
function keyTabs(e) {
const tab = e.target;
let nextTab = null;
if (e.keyCode === 39 || e.keyCode === 37) {
tab.setAttribute("tabindex", -1);
// Move right
if (e.keyCode === 39) {
nextTab = tab.nextElementSibling;
if (nextTab === null) {
nextTab = tab.parentNode.firstElementChild;
}
// Move left
} else if (e.keyCode === 37) {
nextTab = tab.previousElementSibling;
if (nextTab === null) {
nextTab = tab.parentNode.lastElementChild;
}
}
}
if (nextTab !== null) {
nextTab.setAttribute("tabindex", 0);
nextTab.focus();
}
}
/**
* Select or deselect clicked tab. If a group tab
* is selected, also select tab in other tabLists.
* @param {Node} e the element that was clicked
*/
function changeTabs(e) {
// Use this instead of the element that was clicked, in case it's a child
const notSelected = this.getAttribute("aria-selected") === "false";
const positionBefore = this.parentNode.getBoundingClientRect().top;
const notClosable = !this.parentNode.classList.contains("closeable");
deselectTabList(this);
if (notSelected || notClosable) {
selectTab(this);
const name = this.getAttribute("name");
selectNamedTabs(name, this.id);
if (this.classList.contains("group-tab")) {
// Persist during session
session.setItem('sphinx-tabs-last-selected', name);
}
}
const positionAfter = this.parentNode.getBoundingClientRect().top;
const positionDelta = positionAfter - positionBefore;
// Scroll to offset content resizing
window.scrollTo(0, window.scrollY + positionDelta);
}
/**
* Select tab and show associated panel.
* @param {Node} tab tab to select
*/
function selectTab(tab) {
tab.setAttribute("aria-selected", true);
// Show the associated panel
document
.getElementById(tab.getAttribute("aria-controls"))
.removeAttribute("hidden");
}
/**
* Hide the panels associated with all tabs within the
* tablist containing this tab.
* @param {Node} tab a tab within the tablist to deselect
*/
function deselectTabList(tab) {
const parent = tab.parentNode;
const grandparent = parent.parentNode;
Array.from(parent.children)
.forEach(t => t.setAttribute("aria-selected", false));
Array.from(grandparent.children)
.slice(1) // Skip tablist
.forEach(panel => panel.setAttribute("hidden", true));
}
/**
* Select grouped tabs with the same name, but no the tab
* with the given id.
* @param {Node} name name of grouped tab to be selected
* @param {Node} clickedId id of clicked tab
*/
function selectNamedTabs(name, clickedId=null) {
const groupedTabs = document.querySelectorAll(`.sphinx-tabs-tab[name="${name}"]`);
const tabLists = Array.from(groupedTabs).map(tab => tab.parentNode);
tabLists
.forEach(tabList => {
// Don't want to change the tabList containing the clicked tab
const clickedTab = tabList.querySelector(`[id="${clickedId}"]`);
if (clickedTab === null ) {
// Select first tab with matching name
const tab = tabList.querySelector(`.sphinx-tabs-tab[name="${name}"]`);
deselectTabList(tab);
selectTab(tab);
}
})
}
if (typeof exports === 'undefined') {
exports = {};
}
exports.keyTabs = keyTabs;
exports.changeTabs = changeTabs;
exports.selectTab = selectTab;
exports.deselectTabList = deselectTabList;
exports.selectNamedTabs = selectNamedTabs;

366
sphinx_tabs/tabs.py Normal file
View File

@ -0,0 +1,366 @@
""" Tabbed views for Sphinx, with HTML builder """
import base64
from pathlib import Path
from functools import partial
import sphinx
from docutils import nodes
from docutils.parsers.rst import directives
from pygments.lexers import get_all_lexers
from sphinx.highlighting import lexer_classes
from sphinx.util.docutils import SphinxDirective
from sphinx.directives.code import CodeBlock
FILES = [
"tabs.js",
"tabs.css",
]
LEXER_MAP = {}
for lexer in get_all_lexers():
for short_name in lexer[1]:
LEXER_MAP[short_name] = lexer[0]
def get_compatible_builders(app):
builders = [
"html",
"singlehtml",
"dirhtml",
"readthedocs",
"readthedocsdirhtml",
"readthedocssinglehtml",
"readthedocssinglehtmllocalmedia",
"spelling",
]
builders.extend(app.config["sphinx_tabs_valid_builders"])
return builders
class SphinxTabsContainer(nodes.container):
tagname = "div"
class SphinxTabsPanel(nodes.container):
tagname = "div"
class SphinxTabsTab(nodes.paragraph):
tagname = "button"
class SphinxTabsTablist(nodes.container):
tagname = "div"
def visit(translator, node):
# Borrowed from `sphinx-inline-tabs`
attrs = node.attributes.copy()
attrs.pop("classes")
attrs.pop("ids")
attrs.pop("names")
attrs.pop("dupnames")
attrs.pop("backrefs")
text = translator.starttag(node, node.tagname, **attrs)
translator.body.append(text.strip())
def depart(translator, node):
translator.body.append(f"</{node.tagname}>")
class TabsDirective(SphinxDirective):
"""Top-level tabs directive"""
has_content = True
def run(self):
"""Parse a tabs directive"""
self.assert_has_content()
node = nodes.container(type="tab-element")
node["classes"].append("sphinx-tabs")
if "next_tabs_id" not in self.env.temp_data:
self.env.temp_data["next_tabs_id"] = 0
if "tabs_stack" not in self.env.temp_data:
self.env.temp_data["tabs_stack"] = []
tabs_id = self.env.temp_data["next_tabs_id"]
tabs_key = "tabs_%d" % tabs_id
self.env.temp_data["next_tabs_id"] += 1
self.env.temp_data["tabs_stack"].append(tabs_id)
self.env.temp_data[tabs_key] = {}
self.env.temp_data[tabs_key]["tab_ids"] = []
self.env.temp_data[tabs_key]["tab_titles"] = []
self.env.temp_data[tabs_key]["is_first_tab"] = True
self.state.nested_parse(self.content, self.content_offset, node)
if self.env.app.builder.name in get_compatible_builders(self.env.app):
tablist = SphinxTabsTablist()
tablist["role"] = "tablist"
tablist["aria-label"] = "Tabbed content"
if not self.env.config["sphinx_tabs_disable_tab_closing"]:
tablist["classes"].append("closeable")
tab_titles = self.env.temp_data[tabs_key]["tab_titles"]
for idx, [data_tab, tab_name] in enumerate(tab_titles):
tab_name.attributes["role"] = "tab"
tab_name["ids"] = [f"tab-{tabs_id}-{data_tab}"]
tab_name["name"] = data_tab
tab_name["tabindex"] = "0" if idx == 0 else "-1"
tab_name["aria-selected"] = "true" if idx == 0 else "false"
tab_name["aria-controls"] = tab_name["ids"][0].replace("tab-", "panel-")
tablist += tab_name
node.insert(0, tablist)
self.env.temp_data["tabs_stack"].pop()
return [node]
class TabDirective(SphinxDirective):
"""Tab directive, for adding a tab to a collection of tabs"""
has_content = True
def __init__(self, *args, **kwargs):
self.tab_id = None
self.tab_classes = set()
super().__init__(*args, **kwargs)
def run(self):
"""Parse a tab directive"""
self.assert_has_content()
tabs_id = self.env.temp_data["tabs_stack"][-1]
tabs_key = "tabs_%d" % tabs_id
include_tabs_id_in_data_tab = False
if self.tab_id is None:
tab_id = self.env.new_serialno(tabs_key)
include_tabs_id_in_data_tab = True
else:
tab_id = self.tab_id
tab_name = SphinxTabsTab()
self.state.nested_parse(self.content[0:1], 0, tab_name)
# Remove the paragraph node that is created by nested_parse
tab_name.children[0].replace_self(tab_name.children[0].children)
tab_name["classes"].append("sphinx-tabs-tab")
tab_name["classes"].extend(sorted(self.tab_classes))
i = 1
while tab_id in self.env.temp_data[tabs_key]["tab_ids"]:
tab_id = "%s-%d" % (tab_id, i)
i += 1
self.env.temp_data[tabs_key]["tab_ids"].append(tab_id)
data_tab = str(tab_id)
if include_tabs_id_in_data_tab:
data_tab = "%d-%s" % (tabs_id, data_tab)
self.env.temp_data[tabs_key]["tab_titles"].append((data_tab, tab_name))
panel = SphinxTabsPanel()
panel["role"] = "tabpanel"
panel["ids"] = [f"panel-{tabs_id}-{data_tab}"]
panel["name"] = data_tab
panel["tabindex"] = 0
panel["aria-labelledby"] = panel["ids"][0].replace("panel-", "tab-")
panel["classes"].append("sphinx-tabs-panel")
panel["classes"].extend(sorted(self.tab_classes))
if self.env.temp_data[tabs_key]["is_first_tab"]:
self.env.temp_data[tabs_key]["is_first_tab"] = False
else:
panel["hidden"] = "true"
self.state.nested_parse(self.content[2:], self.content_offset, panel)
if self.env.app.builder.name not in get_compatible_builders(self.env.app):
# Use base docutils classes
outer_node = nodes.container()
tab = nodes.container()
tab_name = nodes.container()
panel = nodes.container()
self.state.nested_parse(self.content[0:1], 0, tab_name)
self.state.nested_parse(self.content[2:], self.content_offset, panel)
tab += tab_name
outer_node += tab
outer_node += panel
return [outer_node]
return [panel]
class GroupTabDirective(TabDirective):
"""Tab directive that toggles with same tab names across page"""
has_content = True
def run(self):
self.assert_has_content()
self.tab_classes.add("group-tab")
group_name = self.content[0]
if self.tab_id is None:
self.tab_id = base64.b64encode(group_name.encode("utf-8")).decode("utf-8")
node = super().run()
return node
class CodeTabDirective(GroupTabDirective):
"""Tab directive with a codeblock as its content"""
has_content = True
required_arguments = 1 # Lexer name
optional_arguments = 1 # Custom label
final_argument_whitespace = True
option_spec = { # From sphinx CodeBlock
"force": directives.flag,
"linenos": directives.flag,
"dedent": int,
"lineno-start": int,
"emphasize-lines": directives.unchanged_required,
"caption": directives.unchanged_required,
"class": directives.class_option,
"name": directives.unchanged,
}
def run(self):
"""Parse a code-tab directive"""
self.assert_has_content()
if len(self.arguments) > 1:
tab_name = self.arguments[1]
elif self.arguments[0] in lexer_classes and not isinstance(
lexer_classes[self.arguments[0]], partial
):
tab_name = lexer_classes[self.arguments[0]].name
else:
try:
tab_name = LEXER_MAP[self.arguments[0]]
except KeyError as invalid_lexer_error:
raise ValueError(
"Lexer not implemented: {}".format(self.arguments[0])
) from invalid_lexer_error
self.tab_classes.add("code-tab")
# All content parsed as code
code_block = CodeBlock.run(self)
# Reset to generate panel
self.content.data = [tab_name, ""]
self.content.items = [(None, 0), (None, 1)]
node = super().run()
node[0].extend(code_block)
return node
class _FindTabsDirectiveVisitor(nodes.NodeVisitor):
"""Visitor pattern than looks for a sphinx tabs
directive in a document"""
def __init__(self, document):
nodes.NodeVisitor.__init__(self, document)
self._found = False
def unknown_visit(self, node):
if (
not self._found
and isinstance(node, nodes.container)
and "classes" in node
and isinstance(node["classes"], list)
):
self._found = "sphinx-tabs" in node["classes"]
@property
def found_tabs_directive(self):
"""Return whether a sphinx tabs directive was found"""
return self._found
def update_config(app, config):
"""Adds sphinx-tabs CSS and JS asset files"""
for path in [Path(path) for path in FILES]:
if not config.sphinx_tabs_disable_css_loading and path.suffix == ".css":
if "add_css_file" in dir(app):
app.add_css_file(path.as_posix())
else:
app.add_stylesheet(path.as_posix())
if path.suffix == ".js":
if "add_script_file" in dir(app):
app.add_script_file(path.as_posix())
else:
app.add_js_file(path.as_posix())
# pylint: disable=unused-argument
def update_context(app, pagename, templatename, context, doctree):
"""Remove sphinx-tabs CSS and JS asset files if not used in a page"""
if doctree is None:
return
visitor = _FindTabsDirectiveVisitor(doctree)
doctree.walk(visitor)
include_assets_in_all_pages = False
if sphinx.version_info >= (4, 1, 0):
include_assets_in_all_pages = app.registry.html_assets_policy == "always"
if not visitor.found_tabs_directive and not include_assets_in_all_pages:
paths = [Path("_static") / f for f in FILES]
if "css_files" in context:
context["css_files"] = context["css_files"][:]
for path in paths:
if path.suffix == ".css" and path in context["css_files"]:
context["css_files"].remove(path.as_posix())
if "script_files" in context:
context["script_files"] = context["script_files"][:]
for path in paths:
if path.suffix == ".js" and path.as_posix() in context["script_files"]:
context["script_files"].remove(path.as_posix())
# pylint: enable=unused-argument
def setup(app):
"""Set up the plugin"""
app.add_config_value("sphinx_tabs_valid_builders", [], "")
app.add_config_value("sphinx_tabs_disable_css_loading", False, "html", [bool])
app.add_config_value("sphinx_tabs_disable_tab_closing", False, "html", [bool])
app.add_node(SphinxTabsContainer, html=(visit, depart))
app.add_node(SphinxTabsPanel, html=(visit, depart))
app.add_node(SphinxTabsTab, html=(visit, depart))
app.add_node(SphinxTabsTablist, html=(visit, depart))
app.add_directive("tabs", TabsDirective)
app.add_directive("tab", TabDirective)
app.add_directive("group-tab", GroupTabDirective)
app.add_directive("code-tab", CodeTabDirective)
static_dir = Path(__file__).parent / "static"
app.connect(
"builder-inited",
(lambda app: app.config.html_static_path.append(static_dir.as_posix())),
)
app.connect("config-inited", update_config)
app.connect("html-page-context", update_context)
return {
"parallel_read_safe": True,
"parallel_write_safe": True,
}

0
tests/__init__.py Normal file
View File

179
tests/conftest.py Normal file
View File

@ -0,0 +1,179 @@
import os
import pytest
from pathlib import Path
from bs4 import BeautifulSoup
from sphinx.testing.path import path
from sphinx_tabs.tabs import FILES
pytest_plugins = "sphinx.testing.fixtures"
@pytest.fixture(scope="session")
def rootdir():
"""Pytest uses this to find test documents."""
return path(__file__).parent.abspath() / "roots"
@pytest.fixture(autouse=True)
def auto_build_and_check(
app,
status,
warning,
check_build_success,
get_sphinx_app_doctree,
regress_sphinx_app_output,
request,
):
"""
Build and check build success and output regressions.
Currently all tests start with this.
Disable using a `noautobuild` mark.
"""
if "noautobuild" in request.keywords:
return
app.build()
check_build_success(status, warning)
get_sphinx_app_doctree(app, regress=True)
regress_sphinx_app_output(app)
@pytest.fixture()
def manual_build_and_check(
app,
status,
warning,
check_build_success,
get_sphinx_app_doctree,
regress_sphinx_app_output,
):
"""
For manually triggering app build and check.
"""
app.build()
check_build_success(status, warning)
get_sphinx_app_doctree(app, regress=True)
regress_sphinx_app_output(app)
@pytest.fixture
def check_build_success():
"""Check build is successful and there are no warnings."""
def check(status, warning):
assert "build succeeded" in status.getvalue()
warnings = warning.getvalue().strip()
assert warnings == ""
return check
@pytest.fixture
def regress_sphinx_app_output(file_regression, get_sphinx_app_output):
"""
Get sphinx HTML output and regress inner body (other sections are
non-deterministic).
"""
def read(
app, buildername="html", filename="index.html", encoding="utf-8", replace=None
):
content = get_sphinx_app_output(app, buildername, filename, encoding)
if buildername == "html":
soup = BeautifulSoup(content, "html.parser")
doc_div = soup.findAll("div", {"class": "documentwrapper"})[0]
doc = doc_div.prettify()
for find, rep in (replace or {}).items():
doc = text.replace(find, rep)
else:
doc = content
file_regression.check(
doc, extension="." + filename.split(".")[-1], encoding="utf8"
)
return read
@pytest.fixture
def get_sphinx_app_doctree(file_regression):
"""Get sphinx doctree and optionally regress."""
def read(app, docname="index", resolve=False, regress=False, replace=None):
if resolve:
doctree = app.env.get_and_resolve_doctree(docname, app.builder)
extension = ".resolved.xml"
else:
doctree = app.env.get_doctree(docname)
extension = ".xml"
# convert absolute filenames
for node in doctree.traverse(lambda n: "source" in n):
node["source"] = Path(node["source"]).name
if regress:
text = doctree.pformat() # type: str
for find, rep in (replace or {}).items():
text = text.replace(find, rep)
file_regression.check(text, extension=extension)
return doctree
return read
@pytest.fixture
def check_asset_links(get_sphinx_app_output):
"""
Check if all stylesheets and scripts (.js) have been referenced in HTML.
Specify whether checking if assets are ``present`` or not ``present``.
"""
def check(
app,
buildername="html",
filename="index.html",
encoding="utf-8",
cssPresent=True,
jsPresent=True,
):
content = get_sphinx_app_output(app, buildername, filename, encoding)
css_assets = [f for f in FILES if f.endswith(".css")]
js_assets = [f for f in FILES if f.endswith(".js")]
soup = BeautifulSoup(content, "html.parser")
stylesheets = soup.find_all("link", {"rel": "stylesheet"}, href=True)
css_refs = [s["href"] for s in stylesheets]
scripts = soup.find_all("script", src=True)
js_refs = [s["src"] for s in scripts]
all_refs = css_refs + js_refs
if cssPresent:
css_present = all(any(a in ref for ref in all_refs) for a in css_assets)
assert css_present
else:
assert not "sphinx_tabs" in css_refs
if jsPresent:
js_present = all(any(a in ref for ref in js_refs) for a in js_assets)
assert js_present
else:
assert not "sphinx_tabs" in js_refs
return check
@pytest.fixture()
def get_sphinx_app_output():
"""Get content of a sphinx app output file."""
def get(app, buildername="html", filename="index.html", encoding="utf-8"):
outpath = Path(app.srcdir) / "_build" / buildername / filename
if not outpath.exists():
raise IOError("No output file exists: {}".format(outpath.as_posix()))
return outpath.read_text(encoding=encoding)
return get

View File

@ -0,0 +1,5 @@
project = "sphinx-tabs test"
master_doc = "index"
source_suffix = ".rst"
extensions = ["sphinx_tabs.tabs"]
pygments_style = "sphinx"

View File

@ -0,0 +1,17 @@
.. tabs::
.. tab:: Apples
Apples are green, or sometimes red.
.. tab:: Pears
Pears are green.
.. tab:: Oranges
Oranges are orange.
.. tab:: 404
A number in the name.

View File

@ -0,0 +1,5 @@
project = "sphinx-tabs test"
master_doc = "index"
source_suffix = ".rst"
extensions = ["sphinx_tabs.tabs"]
pygments_style = "sphinx"

View File

@ -0,0 +1,130 @@
.. toctree::
no_tabs1
no_tabs2
Fruits
========================================
.. tabs::
.. tab:: Apples
Apples are green, or sometimes red.
.. tab:: Pears
Pears are green.
.. tab:: Oranges
Oranges are orange.
Luminaries
========================================
.. tabs::
.. tab:: Sun
The sun is a star.
.. tab:: Moon
The moon is not a star.
Code Tabs
========================================
.. tabs::
.. code-tab:: c
C Main Function
.. code-tab:: c++
C++ Main Function
.. code-tab:: py
Python Main Function
.. code-tab:: java
Java Main Function
.. code-tab:: julia
Julia Main Function
.. code-tab:: fortran
Fortran Main Function
.. tabs::
.. code-tab:: c
int main(const int argc, const char **argv) {
return 0;
}
.. code-tab:: c++
int main(const int argc, const char **argv) {
return 0;
}
.. code-tab:: py
def main():
return
.. code-tab:: java
class Main {
public static void main(String[] args) {
}
}
.. code-tab:: julia
function main()
end
.. code-tab:: fortran
PROGRAM main
END PROGRAM main
Group Tabs
========================================
.. tabs::
.. group-tab:: Linux
Linux Line 1
.. group-tab:: Mac OSX
Mac OSX Line 1
.. group-tab:: Windows
Windows Line 1
.. tabs::
.. group-tab:: Linux
Linux Line 2
.. group-tab:: Mac OSX
Mac OSX Line 2
.. group-tab:: Windows
Windows Line 2

View File

@ -0,0 +1,4 @@
Another page without tabs
========================================
No tabs to see here

View File

@ -0,0 +1,4 @@
And another page without tabs
========================================
No tabs to see here either

View File

@ -0,0 +1,28 @@
from pygments.lexer import RegexLexer
from pygments.token import Text, Keyword
project = "sphinx-tabs test"
master_doc = "index"
source_suffix = ".rst"
extensions = ["sphinx_tabs.tabs"]
pygments_style = "sphinx"
class BYOLexer(RegexLexer):
name = "BYO"
aliases = ["byo"]
filenames = ["*.byo"]
tokens = {
"root": [
(r"Test\n", Keyword),
(r".*\n", Text),
]
}
def setup(app):
try:
app.add_lexer("byo", BYOLexer)
except:
# Passing instance is depreciated in Sphinx 4
app.add_lexer("byo", BYOLexer())

View File

@ -0,0 +1,10 @@
.. tabs::
.. code-tab:: byo
Test
This is just a test.
.. code-tab:: byo
Some other text.

View File

@ -0,0 +1,7 @@
project = "sphinx-tabs test"
master_doc = "index"
source_suffix = ".rst"
extensions = ["sphinx_tabs.tabs"]
pygments_style = "sphinx"
sphinx_tabs_disable_tab_closing = True

View File

@ -0,0 +1,17 @@
.. tabs::
.. tab:: Apples
Apples are green, or sometimes red.
.. tab:: Pears
Pears are green.
.. tab:: Oranges
Oranges are orange.
.. tab:: 404
A number in the name.

View File

@ -0,0 +1,7 @@
project = "sphinx-tabs test"
master_doc = "index"
source_suffix = ".rst"
extensions = ["sphinx_tabs.tabs"]
pygments_style = "sphinx"
sphinx_tabs_disable_css_loading = True

View File

@ -0,0 +1,17 @@
.. tabs::
.. tab:: Apples
Apples are green, or sometimes red.
.. tab:: Pears
Pears are green.
.. tab:: Oranges
Oranges are orange.
.. tab:: 404
A number in the name.

View File

@ -0,0 +1,5 @@
project = "sphinx-tabs test"
master_doc = "index"
source_suffix = ".rst"
extensions = ["sphinx_tabs.tabs"]
pygments_style = "sphinx"

View File

@ -0,0 +1,10 @@
.. tabs::
.. code-tab:: c++
:linenos:
std::cout << "hello world" << std::endl;
.. code-tab:: python
print('hello world')

View File

@ -0,0 +1,5 @@
project = "sphinx-tabs test"
master_doc = "index"
source_suffix = ".rst"
extensions = ["sphinx_tabs.tabs", "sphinx.ext.mathjax"]
pygments_style = "sphinx"

View File

@ -0,0 +1,62 @@
Markup in Tab Titles
========================================
.. tabs::
.. tab:: **bold** tab
**bold** text
.. tab:: *italic* tab
*italic* text
.. tabs::
.. group-tab:: **bold** group tab
**bold** text
.. group-tab:: *italic* group tab
*italic* text
.. tabs::
.. group-tab:: **bold** group tab
**bold** text
.. group-tab:: *italic* group tab
*italic* text
.. tabs::
.. tab:: :math:`x = y` tab
Variables are equal :math:`x = y`.
.. tab:: :math:`x \neq y` tab
Variables are not equal :math:`x \neq y`.
.. tabs::
.. group-tab:: :math:`x = y` group tab
Variables are equal :math:`x = y`.
.. group-tab:: :math:`x \neq y` group tab
Variables are not equal :math:`x \neq y`.
.. tabs::
.. group-tab:: :math:`x = y` group tab
Variables are equal :math:`x = y`.
.. group-tab:: :math:`x \neq y` group tab
Variables are not equal :math:`x \neq y`.

View File

@ -0,0 +1,5 @@
project = "sphinx-tabs test"
master_doc = "index"
source_suffix = ".rst"
extensions = ["sphinx_tabs.tabs"]
pygments_style = "sphinx"

View File

@ -0,0 +1 @@
There are no tabs here

View File

@ -0,0 +1,9 @@
project = "sphinx-tabs test"
master_doc = "index"
source_suffix = ".rst"
extensions = ["sphinx_tabs.tabs", "rinoh.frontend.sphinx"]
pygments_style = "sphinx"
rinoh_documents = [
dict(doc=master_doc, target="test"),
]

View File

@ -0,0 +1,9 @@
TESTING PDF
===========
.. toctree::
:maxdepth: 2
:caption: Contents:
tabs

View File

@ -0,0 +1,24 @@
============
Testing Tabs
============
The following should be rendered as a list of plain text items.
BEGIN_TEST
.. tabs::
.. tab:: Apples
Apples are green, or sometimes red.
.. tab:: Pears
Pears are green.
.. tab:: Oranges
Oranges are orange.
END_of_TEST

104
tests/test_build.py Normal file
View File

@ -0,0 +1,104 @@
import sys
import pytest
import sphinx
from sphinx.application import Sphinx
@pytest.mark.sphinx(testroot="basic")
def test_basic():
pass
@pytest.mark.sphinx(testroot="notabs")
def test_no_tabs(app, check_asset_links):
check_asset_links(app, cssPresent=False, jsPresent=False)
@pytest.mark.parametrize("docname", ["index", "no_tabs1", "no_tabs2"])
@pytest.mark.sphinx(testroot="conditionalassets")
def test_conditional_assets(app, docname, check_asset_links):
if docname == "index":
check_asset_links(app)
else:
check_asset_links(
app, filename=docname + ".html", cssPresent=False, jsPresent=False
)
@pytest.mark.noautobuild
@pytest.mark.parametrize("docname", ["index", "no_tabs1", "no_tabs2"])
@pytest.mark.sphinx(testroot="conditionalassets")
@pytest.mark.skipif(
sphinx.version_info[:2] < (4, 1), reason="Test uses Sphinx 4.1 config"
)
def test_conditional_assets_html_assets_policy(
app,
docname,
status,
warning,
check_build_success,
get_sphinx_app_doctree,
regress_sphinx_app_output,
check_asset_links,
):
app.set_html_assets_policy("always")
# Following lines are copied from ``auto_build_and_check`` since we need to
# set a config in the build object before auto build. Because of this, we
# need to use ``noautobuild``.
app.build()
check_build_success(status, warning)
get_sphinx_app_doctree(app, regress=True)
regress_sphinx_app_output(app)
check_asset_links(app, filename=docname + ".html")
@pytest.mark.sphinx(testroot="linenos")
@pytest.mark.skipif(
sphinx.version_info[:2] >= (4, 0), reason="Test uses Sphinx 3 code blocks"
)
def test_other_with_assets(app, check_asset_links):
check_asset_links(app)
@pytest.mark.sphinx(testroot="linenos")
@pytest.mark.skipif(
sphinx.version_info[:2] <= (4, 0), reason="Test uses Sphinx 4 code blocks"
)
def test_other_With_assets_new_style(app, check_asset_links):
check_asset_links(app)
@pytest.mark.sphinx(testroot="nestedmarkup")
def test_nested_markup(app, check_asset_links):
check_asset_links(app)
@pytest.mark.sphinx(testroot="customlexer")
def test_custom_lexer(app, check_asset_links):
check_asset_links(app)
@pytest.mark.noautobuild
@pytest.mark.sphinx("rinoh", testroot="rinohtype-pdf")
@pytest.mark.skipif(
sys.version_info < (3, 8), reason="Unknown dependency conflict in lower versions"
)
def test_rinohtype_pdf(
app, status, warning, check_build_success, get_sphinx_app_doctree
):
app.build()
check_build_success(status, warning)
get_sphinx_app_doctree(app, regress=True)
# Doesn't currently regression test pdf output
@pytest.mark.sphinx(testroot="disable-closing")
def test_disable_closing(app, check_asset_links):
check_asset_links(app)
@pytest.mark.sphinx(testroot="disable-css-loading")
def test_disable_css_loading(app, check_asset_links):
check_asset_links(app, cssPresent=False)

View File

@ -0,0 +1,42 @@
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-0-0-0" name="0-0" role="tab" tabindex="0">
Apples
</button>
<button aria-controls="panel-0-0-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
Pears
</button>
<button aria-controls="panel-0-0-2" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-2" name="0-2" role="tab" tabindex="-1">
Oranges
</button>
<button aria-controls="panel-0-0-3" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-3" name="0-3" role="tab" tabindex="-1">
404
</button>
</div>
<div aria-labelledby="tab-0-0-0" class="sphinx-tabs-panel" id="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<p>
Apples are green, or sometimes red.
</p>
</div>
<div aria-labelledby="tab-0-0-1" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<p>
Pears are green.
</p>
</div>
<div aria-labelledby="tab-0-0-2" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-2" name="0-2" role="tabpanel" tabindex="0">
<p>
Oranges are orange.
</p>
</div>
<div aria-labelledby="tab-0-0-3" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-3" name="0-3" role="tabpanel" tabindex="0">
<p>
A number in the name.
</p>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,23 @@
<document source="index.rst">
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" classes="sphinx-tabs-tab" ids="tab-0-0-0" name="0-0" role="tab" tabindex="0">
Apples
<button aria-controls="panel-0-0-1" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
Pears
<button aria-controls="panel-0-0-2" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-2" name="0-2" role="tab" tabindex="-1">
Oranges
<button aria-controls="panel-0-0-3" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-3" name="0-3" role="tab" tabindex="-1">
404
<div aria-labelledby="tab-0-0-0" classes="sphinx-tabs-panel" ids="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<paragraph>
Apples are green, or sometimes red.
<div aria-labelledby="tab-0-0-1" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<paragraph>
Pears are green.
<div aria-labelledby="tab-0-0-2" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-2" name="0-2" role="tabpanel" tabindex="0">
<paragraph>
Oranges are orange.
<div aria-labelledby="tab-0-0-3" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-3" name="0-3" role="tabpanel" tabindex="0">
<paragraph>
A number in the name.

View File

@ -0,0 +1,306 @@
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1">
<a class="reference internal" href="no_tabs1.html">
Another page without tabs
</a>
</li>
<li class="toctree-l1">
<a class="reference internal" href="no_tabs2.html">
And another page without tabs
</a>
</li>
</ul>
</div>
<div class="section" id="fruits">
<h1>
Fruits
<a class="headerlink" href="#fruits" title="Permalink to this headline">
</a>
</h1>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-0-0-0" name="0-0" role="tab" tabindex="0">
Apples
</button>
<button aria-controls="panel-0-0-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
Pears
</button>
<button aria-controls="panel-0-0-2" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-2" name="0-2" role="tab" tabindex="-1">
Oranges
</button>
</div>
<div aria-labelledby="tab-0-0-0" class="sphinx-tabs-panel" id="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<p>
Apples are green, or sometimes red.
</p>
</div>
<div aria-labelledby="tab-0-0-1" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<p>
Pears are green.
</p>
</div>
<div aria-labelledby="tab-0-0-2" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-2" name="0-2" role="tabpanel" tabindex="0">
<p>
Oranges are orange.
</p>
</div>
</div>
</div>
<div class="section" id="luminaries">
<h1>
Luminaries
<a class="headerlink" href="#luminaries" title="Permalink to this headline">
</a>
</h1>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-1-1-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-1-1-0" name="1-0" role="tab" tabindex="0">
Sun
</button>
<button aria-controls="panel-1-1-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-1-1-1" name="1-1" role="tab" tabindex="-1">
Moon
</button>
</div>
<div aria-labelledby="tab-1-1-0" class="sphinx-tabs-panel" id="panel-1-1-0" name="1-0" role="tabpanel" tabindex="0">
<p>
The sun is a star.
</p>
</div>
<div aria-labelledby="tab-1-1-1" class="sphinx-tabs-panel" hidden="true" id="panel-1-1-1" name="1-1" role="tabpanel" tabindex="0">
<p>
The moon is not a star.
</p>
</div>
</div>
</div>
<div class="section" id="code-tabs">
<h1>
Code Tabs
<a class="headerlink" href="#code-tabs" title="Permalink to this headline">
</a>
</h1>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-2-Qw==" aria-selected="true" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-Qw==" name="Qw==" role="tab" tabindex="0">
C
</button>
<button aria-controls="panel-2-Qysr" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-Qysr" name="Qysr" role="tab" tabindex="-1">
C++
</button>
<button aria-controls="panel-2-UHl0aG9u" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
</button>
<button aria-controls="panel-2-SmF2YQ==" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-SmF2YQ==" name="SmF2YQ==" role="tab" tabindex="-1">
Java
</button>
<button aria-controls="panel-2-SnVsaWE=" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-SnVsaWE=" name="SnVsaWE=" role="tab" tabindex="-1">
Julia
</button>
<button aria-controls="panel-2-Rm9ydHJhbg==" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tab" tabindex="-1">
Fortran
</button>
</div>
<div aria-labelledby="tab-2-Qw==" class="sphinx-tabs-panel code-tab group-tab" id="panel-2-Qw==" name="Qw==" role="tabpanel" tabindex="0">
<div class="highlight-c notranslate">
<div class="highlight">
<pre><span></span><span class="n">C</span> <span class="n">Main</span> <span class="n">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-Qysr" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<div class="highlight-c++ notranslate">
<div class="highlight">
<pre><span></span><span class="n">C</span><span class="o">++</span> <span class="n">Main</span> <span class="n">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-UHl0aG9u" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<div class="highlight-py notranslate">
<div class="highlight">
<pre><span></span><span class="n">Python</span> <span class="n">Main</span> <span class="n">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-SmF2YQ==" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-SmF2YQ==" name="SmF2YQ==" role="tabpanel" tabindex="0">
<div class="highlight-java notranslate">
<div class="highlight">
<pre><span></span><span class="n">Java</span> <span class="n">Main</span> <span class="n">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-SnVsaWE=" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-SnVsaWE=" name="SnVsaWE=" role="tabpanel" tabindex="0">
<div class="highlight-julia notranslate">
<div class="highlight">
<pre><span></span><span class="n">Julia</span> <span class="n">Main</span> <span class="kt">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-Rm9ydHJhbg==" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tabpanel" tabindex="0">
<div class="highlight-fortran notranslate">
<div class="highlight">
<pre><span></span><span class="n">Fortran</span> <span class="n">Main</span> <span class="k">Function</span>
</pre>
</div>
</div>
</div>
</div>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-3-Qw==" aria-selected="true" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-Qw==" name="Qw==" role="tab" tabindex="0">
C
</button>
<button aria-controls="panel-3-Qysr" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-Qysr" name="Qysr" role="tab" tabindex="-1">
C++
</button>
<button aria-controls="panel-3-UHl0aG9u" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
</button>
<button aria-controls="panel-3-SmF2YQ==" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-SmF2YQ==" name="SmF2YQ==" role="tab" tabindex="-1">
Java
</button>
<button aria-controls="panel-3-SnVsaWE=" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-SnVsaWE=" name="SnVsaWE=" role="tab" tabindex="-1">
Julia
</button>
<button aria-controls="panel-3-Rm9ydHJhbg==" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tab" tabindex="-1">
Fortran
</button>
</div>
<div aria-labelledby="tab-3-Qw==" class="sphinx-tabs-panel code-tab group-tab" id="panel-3-Qw==" name="Qw==" role="tabpanel" tabindex="0">
<div class="highlight-c notranslate">
<div class="highlight">
<pre><span></span><span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-Qysr" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<div class="highlight-c++ notranslate">
<div class="highlight">
<pre><span></span><span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-UHl0aG9u" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<div class="highlight-py notranslate">
<div class="highlight">
<pre><span></span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="k">return</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-SmF2YQ==" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-SmF2YQ==" name="SmF2YQ==" role="tabpanel" tabindex="0">
<div class="highlight-java notranslate">
<div class="highlight">
<pre><span></span><span class="kd">class</span> <span class="nc">Main</span> <span class="p">{</span>
<span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="p">)</span> <span class="p">{</span>
<span class="p">}</span>
<span class="p">}</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-SnVsaWE=" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-SnVsaWE=" name="SnVsaWE=" role="tabpanel" tabindex="0">
<div class="highlight-julia notranslate">
<div class="highlight">
<pre><span></span><span class="k">function</span> <span class="n">main</span><span class="p">()</span>
<span class="k">end</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-Rm9ydHJhbg==" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tabpanel" tabindex="0">
<div class="highlight-fortran notranslate">
<div class="highlight">
<pre><span></span><span class="k">PROGRAM </span><span class="n">main</span>
<span class="k">END PROGRAM </span><span class="n">main</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="section" id="group-tabs">
<h1>
Group Tabs
<a class="headerlink" href="#group-tabs" title="Permalink to this headline">
</a>
</h1>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-4-TGludXg=" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-4-TGludXg=" name="TGludXg=" role="tab" tabindex="0">
Linux
</button>
<button aria-controls="panel-4-TWFjIE9TWA==" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-4-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tab" tabindex="-1">
Mac OSX
</button>
<button aria-controls="panel-4-V2luZG93cw==" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-4-V2luZG93cw==" name="V2luZG93cw==" role="tab" tabindex="-1">
Windows
</button>
</div>
<div aria-labelledby="tab-4-TGludXg=" class="sphinx-tabs-panel group-tab" id="panel-4-TGludXg=" name="TGludXg=" role="tabpanel" tabindex="0">
<p>
Linux Line 1
</p>
</div>
<div aria-labelledby="tab-4-TWFjIE9TWA==" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-4-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tabpanel" tabindex="0">
<p>
Mac OSX Line 1
</p>
</div>
<div aria-labelledby="tab-4-V2luZG93cw==" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-4-V2luZG93cw==" name="V2luZG93cw==" role="tabpanel" tabindex="0">
<p>
Windows Line 1
</p>
</div>
</div>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-5-TGludXg=" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-5-TGludXg=" name="TGludXg=" role="tab" tabindex="0">
Linux
</button>
<button aria-controls="panel-5-TWFjIE9TWA==" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-5-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tab" tabindex="-1">
Mac OSX
</button>
<button aria-controls="panel-5-V2luZG93cw==" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-5-V2luZG93cw==" name="V2luZG93cw==" role="tab" tabindex="-1">
Windows
</button>
</div>
<div aria-labelledby="tab-5-TGludXg=" class="sphinx-tabs-panel group-tab" id="panel-5-TGludXg=" name="TGludXg=" role="tabpanel" tabindex="0">
<p>
Linux Line 2
</p>
</div>
<div aria-labelledby="tab-5-TWFjIE9TWA==" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-5-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tabpanel" tabindex="0">
<p>
Mac OSX Line 2
</p>
</div>
<div aria-labelledby="tab-5-V2luZG93cw==" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-5-V2luZG93cw==" name="V2luZG93cw==" role="tabpanel" tabindex="0">
<p>
Windows Line 2
</p>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,152 @@
<document source="index.rst">
<compound classes="toctree-wrapper">
<toctree caption="True" entries="(None,\ 'no_tabs1') (None,\ 'no_tabs2')" glob="False" hidden="False" includefiles="no_tabs1 no_tabs2" includehidden="False" maxdepth="-1" numbered="0" parent="index" rawentries="" titlesonly="False">
<section ids="fruits" names="fruits">
<title>
Fruits
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" classes="sphinx-tabs-tab" ids="tab-0-0-0" name="0-0" role="tab" tabindex="0">
Apples
<button aria-controls="panel-0-0-1" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
Pears
<button aria-controls="panel-0-0-2" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-2" name="0-2" role="tab" tabindex="-1">
Oranges
<div aria-labelledby="tab-0-0-0" classes="sphinx-tabs-panel" ids="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<paragraph>
Apples are green, or sometimes red.
<div aria-labelledby="tab-0-0-1" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<paragraph>
Pears are green.
<div aria-labelledby="tab-0-0-2" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-2" name="0-2" role="tabpanel" tabindex="0">
<paragraph>
Oranges are orange.
<section ids="luminaries" names="luminaries">
<title>
Luminaries
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-1-1-0" aria-selected="true" classes="sphinx-tabs-tab" ids="tab-1-1-0" name="1-0" role="tab" tabindex="0">
Sun
<button aria-controls="panel-1-1-1" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-1-1-1" name="1-1" role="tab" tabindex="-1">
Moon
<div aria-labelledby="tab-1-1-0" classes="sphinx-tabs-panel" ids="panel-1-1-0" name="1-0" role="tabpanel" tabindex="0">
<paragraph>
The sun is a star.
<div aria-labelledby="tab-1-1-1" classes="sphinx-tabs-panel" hidden="true" ids="panel-1-1-1" name="1-1" role="tabpanel" tabindex="0">
<paragraph>
The moon is not a star.
<section ids="code-tabs" names="code\ tabs">
<title>
Code Tabs
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-2-Qw==" aria-selected="true" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-Qw==" name="Qw==" role="tab" tabindex="0">
C
<button aria-controls="panel-2-Qysr" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-Qysr" name="Qysr" role="tab" tabindex="-1">
C++
<button aria-controls="panel-2-UHl0aG9u" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
<button aria-controls="panel-2-SmF2YQ==" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-SmF2YQ==" name="SmF2YQ==" role="tab" tabindex="-1">
Java
<button aria-controls="panel-2-SnVsaWE=" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-SnVsaWE=" name="SnVsaWE=" role="tab" tabindex="-1">
Julia
<button aria-controls="panel-2-Rm9ydHJhbg==" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tab" tabindex="-1">
Fortran
<div aria-labelledby="tab-2-Qw==" classes="sphinx-tabs-panel code-tab group-tab" ids="panel-2-Qw==" name="Qw==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c" xml:space="preserve">
C Main Function
<div aria-labelledby="tab-2-Qysr" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c++" xml:space="preserve">
C++ Main Function
<div aria-labelledby="tab-2-UHl0aG9u" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="py" xml:space="preserve">
Python Main Function
<div aria-labelledby="tab-2-SmF2YQ==" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-SmF2YQ==" name="SmF2YQ==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="java" xml:space="preserve">
Java Main Function
<div aria-labelledby="tab-2-SnVsaWE=" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-SnVsaWE=" name="SnVsaWE=" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="julia" xml:space="preserve">
Julia Main Function
<div aria-labelledby="tab-2-Rm9ydHJhbg==" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="fortran" xml:space="preserve">
Fortran Main Function
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-3-Qw==" aria-selected="true" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-Qw==" name="Qw==" role="tab" tabindex="0">
C
<button aria-controls="panel-3-Qysr" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-Qysr" name="Qysr" role="tab" tabindex="-1">
C++
<button aria-controls="panel-3-UHl0aG9u" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
<button aria-controls="panel-3-SmF2YQ==" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-SmF2YQ==" name="SmF2YQ==" role="tab" tabindex="-1">
Java
<button aria-controls="panel-3-SnVsaWE=" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-SnVsaWE=" name="SnVsaWE=" role="tab" tabindex="-1">
Julia
<button aria-controls="panel-3-Rm9ydHJhbg==" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tab" tabindex="-1">
Fortran
<div aria-labelledby="tab-3-Qw==" classes="sphinx-tabs-panel code-tab group-tab" ids="panel-3-Qw==" name="Qw==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c" xml:space="preserve">
int main(const int argc, const char **argv) {
return 0;
}
<div aria-labelledby="tab-3-Qysr" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c++" xml:space="preserve">
int main(const int argc, const char **argv) {
return 0;
}
<div aria-labelledby="tab-3-UHl0aG9u" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="py" xml:space="preserve">
def main():
return
<div aria-labelledby="tab-3-SmF2YQ==" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-SmF2YQ==" name="SmF2YQ==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="java" xml:space="preserve">
class Main {
public static void main(String[] args) {
}
}
<div aria-labelledby="tab-3-SnVsaWE=" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-SnVsaWE=" name="SnVsaWE=" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="julia" xml:space="preserve">
function main()
end
<div aria-labelledby="tab-3-Rm9ydHJhbg==" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="fortran" xml:space="preserve">
PROGRAM main
END PROGRAM main
<section ids="group-tabs" names="group\ tabs">
<title>
Group Tabs
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-4-TGludXg=" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-4-TGludXg=" name="TGludXg=" role="tab" tabindex="0">
Linux
<button aria-controls="panel-4-TWFjIE9TWA==" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-4-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tab" tabindex="-1">
Mac OSX
<button aria-controls="panel-4-V2luZG93cw==" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-4-V2luZG93cw==" name="V2luZG93cw==" role="tab" tabindex="-1">
Windows
<div aria-labelledby="tab-4-TGludXg=" classes="sphinx-tabs-panel group-tab" ids="panel-4-TGludXg=" name="TGludXg=" role="tabpanel" tabindex="0">
<paragraph>
Linux Line 1
<div aria-labelledby="tab-4-TWFjIE9TWA==" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-4-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tabpanel" tabindex="0">
<paragraph>
Mac OSX Line 1
<div aria-labelledby="tab-4-V2luZG93cw==" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-4-V2luZG93cw==" name="V2luZG93cw==" role="tabpanel" tabindex="0">
<paragraph>
Windows Line 1
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-5-TGludXg=" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-5-TGludXg=" name="TGludXg=" role="tab" tabindex="0">
Linux
<button aria-controls="panel-5-TWFjIE9TWA==" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-5-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tab" tabindex="-1">
Mac OSX
<button aria-controls="panel-5-V2luZG93cw==" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-5-V2luZG93cw==" name="V2luZG93cw==" role="tab" tabindex="-1">
Windows
<div aria-labelledby="tab-5-TGludXg=" classes="sphinx-tabs-panel group-tab" ids="panel-5-TGludXg=" name="TGludXg=" role="tabpanel" tabindex="0">
<paragraph>
Linux Line 2
<div aria-labelledby="tab-5-TWFjIE9TWA==" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-5-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tabpanel" tabindex="0">
<paragraph>
Mac OSX Line 2
<div aria-labelledby="tab-5-V2luZG93cw==" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-5-V2luZG93cw==" name="V2luZG93cw==" role="tabpanel" tabindex="0">
<paragraph>
Windows Line 2

View File

@ -0,0 +1,306 @@
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1">
<a class="reference internal" href="no_tabs1.html">
Another page without tabs
</a>
</li>
<li class="toctree-l1">
<a class="reference internal" href="no_tabs2.html">
And another page without tabs
</a>
</li>
</ul>
</div>
<div class="section" id="fruits">
<h1>
Fruits
<a class="headerlink" href="#fruits" title="Permalink to this headline">
</a>
</h1>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-0-0-0" name="0-0" role="tab" tabindex="0">
Apples
</button>
<button aria-controls="panel-0-0-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
Pears
</button>
<button aria-controls="panel-0-0-2" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-2" name="0-2" role="tab" tabindex="-1">
Oranges
</button>
</div>
<div aria-labelledby="tab-0-0-0" class="sphinx-tabs-panel" id="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<p>
Apples are green, or sometimes red.
</p>
</div>
<div aria-labelledby="tab-0-0-1" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<p>
Pears are green.
</p>
</div>
<div aria-labelledby="tab-0-0-2" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-2" name="0-2" role="tabpanel" tabindex="0">
<p>
Oranges are orange.
</p>
</div>
</div>
</div>
<div class="section" id="luminaries">
<h1>
Luminaries
<a class="headerlink" href="#luminaries" title="Permalink to this headline">
</a>
</h1>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-1-1-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-1-1-0" name="1-0" role="tab" tabindex="0">
Sun
</button>
<button aria-controls="panel-1-1-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-1-1-1" name="1-1" role="tab" tabindex="-1">
Moon
</button>
</div>
<div aria-labelledby="tab-1-1-0" class="sphinx-tabs-panel" id="panel-1-1-0" name="1-0" role="tabpanel" tabindex="0">
<p>
The sun is a star.
</p>
</div>
<div aria-labelledby="tab-1-1-1" class="sphinx-tabs-panel" hidden="true" id="panel-1-1-1" name="1-1" role="tabpanel" tabindex="0">
<p>
The moon is not a star.
</p>
</div>
</div>
</div>
<div class="section" id="code-tabs">
<h1>
Code Tabs
<a class="headerlink" href="#code-tabs" title="Permalink to this headline">
</a>
</h1>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-2-Qw==" aria-selected="true" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-Qw==" name="Qw==" role="tab" tabindex="0">
C
</button>
<button aria-controls="panel-2-Qysr" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-Qysr" name="Qysr" role="tab" tabindex="-1">
C++
</button>
<button aria-controls="panel-2-UHl0aG9u" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
</button>
<button aria-controls="panel-2-SmF2YQ==" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-SmF2YQ==" name="SmF2YQ==" role="tab" tabindex="-1">
Java
</button>
<button aria-controls="panel-2-SnVsaWE=" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-SnVsaWE=" name="SnVsaWE=" role="tab" tabindex="-1">
Julia
</button>
<button aria-controls="panel-2-Rm9ydHJhbg==" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tab" tabindex="-1">
Fortran
</button>
</div>
<div aria-labelledby="tab-2-Qw==" class="sphinx-tabs-panel code-tab group-tab" id="panel-2-Qw==" name="Qw==" role="tabpanel" tabindex="0">
<div class="highlight-c notranslate">
<div class="highlight">
<pre><span></span><span class="n">C</span> <span class="n">Main</span> <span class="n">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-Qysr" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<div class="highlight-c++ notranslate">
<div class="highlight">
<pre><span></span><span class="n">C</span><span class="o">++</span> <span class="n">Main</span> <span class="n">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-UHl0aG9u" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<div class="highlight-py notranslate">
<div class="highlight">
<pre><span></span><span class="n">Python</span> <span class="n">Main</span> <span class="n">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-SmF2YQ==" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-SmF2YQ==" name="SmF2YQ==" role="tabpanel" tabindex="0">
<div class="highlight-java notranslate">
<div class="highlight">
<pre><span></span><span class="n">Java</span> <span class="n">Main</span> <span class="n">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-SnVsaWE=" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-SnVsaWE=" name="SnVsaWE=" role="tabpanel" tabindex="0">
<div class="highlight-julia notranslate">
<div class="highlight">
<pre><span></span><span class="n">Julia</span> <span class="n">Main</span> <span class="kt">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-Rm9ydHJhbg==" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tabpanel" tabindex="0">
<div class="highlight-fortran notranslate">
<div class="highlight">
<pre><span></span><span class="n">Fortran</span> <span class="n">Main</span> <span class="k">Function</span>
</pre>
</div>
</div>
</div>
</div>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-3-Qw==" aria-selected="true" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-Qw==" name="Qw==" role="tab" tabindex="0">
C
</button>
<button aria-controls="panel-3-Qysr" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-Qysr" name="Qysr" role="tab" tabindex="-1">
C++
</button>
<button aria-controls="panel-3-UHl0aG9u" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
</button>
<button aria-controls="panel-3-SmF2YQ==" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-SmF2YQ==" name="SmF2YQ==" role="tab" tabindex="-1">
Java
</button>
<button aria-controls="panel-3-SnVsaWE=" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-SnVsaWE=" name="SnVsaWE=" role="tab" tabindex="-1">
Julia
</button>
<button aria-controls="panel-3-Rm9ydHJhbg==" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tab" tabindex="-1">
Fortran
</button>
</div>
<div aria-labelledby="tab-3-Qw==" class="sphinx-tabs-panel code-tab group-tab" id="panel-3-Qw==" name="Qw==" role="tabpanel" tabindex="0">
<div class="highlight-c notranslate">
<div class="highlight">
<pre><span></span><span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-Qysr" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<div class="highlight-c++ notranslate">
<div class="highlight">
<pre><span></span><span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-UHl0aG9u" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<div class="highlight-py notranslate">
<div class="highlight">
<pre><span></span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="k">return</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-SmF2YQ==" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-SmF2YQ==" name="SmF2YQ==" role="tabpanel" tabindex="0">
<div class="highlight-java notranslate">
<div class="highlight">
<pre><span></span><span class="kd">class</span> <span class="nc">Main</span> <span class="p">{</span>
<span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="p">)</span> <span class="p">{</span>
<span class="p">}</span>
<span class="p">}</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-SnVsaWE=" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-SnVsaWE=" name="SnVsaWE=" role="tabpanel" tabindex="0">
<div class="highlight-julia notranslate">
<div class="highlight">
<pre><span></span><span class="k">function</span> <span class="n">main</span><span class="p">()</span>
<span class="k">end</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-Rm9ydHJhbg==" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tabpanel" tabindex="0">
<div class="highlight-fortran notranslate">
<div class="highlight">
<pre><span></span><span class="k">PROGRAM </span><span class="n">main</span>
<span class="k">END PROGRAM </span><span class="n">main</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="section" id="group-tabs">
<h1>
Group Tabs
<a class="headerlink" href="#group-tabs" title="Permalink to this headline">
</a>
</h1>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-4-TGludXg=" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-4-TGludXg=" name="TGludXg=" role="tab" tabindex="0">
Linux
</button>
<button aria-controls="panel-4-TWFjIE9TWA==" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-4-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tab" tabindex="-1">
Mac OSX
</button>
<button aria-controls="panel-4-V2luZG93cw==" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-4-V2luZG93cw==" name="V2luZG93cw==" role="tab" tabindex="-1">
Windows
</button>
</div>
<div aria-labelledby="tab-4-TGludXg=" class="sphinx-tabs-panel group-tab" id="panel-4-TGludXg=" name="TGludXg=" role="tabpanel" tabindex="0">
<p>
Linux Line 1
</p>
</div>
<div aria-labelledby="tab-4-TWFjIE9TWA==" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-4-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tabpanel" tabindex="0">
<p>
Mac OSX Line 1
</p>
</div>
<div aria-labelledby="tab-4-V2luZG93cw==" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-4-V2luZG93cw==" name="V2luZG93cw==" role="tabpanel" tabindex="0">
<p>
Windows Line 1
</p>
</div>
</div>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-5-TGludXg=" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-5-TGludXg=" name="TGludXg=" role="tab" tabindex="0">
Linux
</button>
<button aria-controls="panel-5-TWFjIE9TWA==" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-5-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tab" tabindex="-1">
Mac OSX
</button>
<button aria-controls="panel-5-V2luZG93cw==" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-5-V2luZG93cw==" name="V2luZG93cw==" role="tab" tabindex="-1">
Windows
</button>
</div>
<div aria-labelledby="tab-5-TGludXg=" class="sphinx-tabs-panel group-tab" id="panel-5-TGludXg=" name="TGludXg=" role="tabpanel" tabindex="0">
<p>
Linux Line 2
</p>
</div>
<div aria-labelledby="tab-5-TWFjIE9TWA==" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-5-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tabpanel" tabindex="0">
<p>
Mac OSX Line 2
</p>
</div>
<div aria-labelledby="tab-5-V2luZG93cw==" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-5-V2luZG93cw==" name="V2luZG93cw==" role="tabpanel" tabindex="0">
<p>
Windows Line 2
</p>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,152 @@
<document source="index.rst">
<compound classes="toctree-wrapper">
<toctree caption="True" entries="(None,\ 'no_tabs1') (None,\ 'no_tabs2')" glob="False" hidden="False" includefiles="no_tabs1 no_tabs2" includehidden="False" maxdepth="-1" numbered="0" parent="index" rawentries="" titlesonly="False">
<section ids="fruits" names="fruits">
<title>
Fruits
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" classes="sphinx-tabs-tab" ids="tab-0-0-0" name="0-0" role="tab" tabindex="0">
Apples
<button aria-controls="panel-0-0-1" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
Pears
<button aria-controls="panel-0-0-2" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-2" name="0-2" role="tab" tabindex="-1">
Oranges
<div aria-labelledby="tab-0-0-0" classes="sphinx-tabs-panel" ids="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<paragraph>
Apples are green, or sometimes red.
<div aria-labelledby="tab-0-0-1" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<paragraph>
Pears are green.
<div aria-labelledby="tab-0-0-2" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-2" name="0-2" role="tabpanel" tabindex="0">
<paragraph>
Oranges are orange.
<section ids="luminaries" names="luminaries">
<title>
Luminaries
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-1-1-0" aria-selected="true" classes="sphinx-tabs-tab" ids="tab-1-1-0" name="1-0" role="tab" tabindex="0">
Sun
<button aria-controls="panel-1-1-1" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-1-1-1" name="1-1" role="tab" tabindex="-1">
Moon
<div aria-labelledby="tab-1-1-0" classes="sphinx-tabs-panel" ids="panel-1-1-0" name="1-0" role="tabpanel" tabindex="0">
<paragraph>
The sun is a star.
<div aria-labelledby="tab-1-1-1" classes="sphinx-tabs-panel" hidden="true" ids="panel-1-1-1" name="1-1" role="tabpanel" tabindex="0">
<paragraph>
The moon is not a star.
<section ids="code-tabs" names="code\ tabs">
<title>
Code Tabs
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-2-Qw==" aria-selected="true" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-Qw==" name="Qw==" role="tab" tabindex="0">
C
<button aria-controls="panel-2-Qysr" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-Qysr" name="Qysr" role="tab" tabindex="-1">
C++
<button aria-controls="panel-2-UHl0aG9u" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
<button aria-controls="panel-2-SmF2YQ==" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-SmF2YQ==" name="SmF2YQ==" role="tab" tabindex="-1">
Java
<button aria-controls="panel-2-SnVsaWE=" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-SnVsaWE=" name="SnVsaWE=" role="tab" tabindex="-1">
Julia
<button aria-controls="panel-2-Rm9ydHJhbg==" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tab" tabindex="-1">
Fortran
<div aria-labelledby="tab-2-Qw==" classes="sphinx-tabs-panel code-tab group-tab" ids="panel-2-Qw==" name="Qw==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c" xml:space="preserve">
C Main Function
<div aria-labelledby="tab-2-Qysr" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c++" xml:space="preserve">
C++ Main Function
<div aria-labelledby="tab-2-UHl0aG9u" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="py" xml:space="preserve">
Python Main Function
<div aria-labelledby="tab-2-SmF2YQ==" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-SmF2YQ==" name="SmF2YQ==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="java" xml:space="preserve">
Java Main Function
<div aria-labelledby="tab-2-SnVsaWE=" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-SnVsaWE=" name="SnVsaWE=" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="julia" xml:space="preserve">
Julia Main Function
<div aria-labelledby="tab-2-Rm9ydHJhbg==" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="fortran" xml:space="preserve">
Fortran Main Function
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-3-Qw==" aria-selected="true" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-Qw==" name="Qw==" role="tab" tabindex="0">
C
<button aria-controls="panel-3-Qysr" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-Qysr" name="Qysr" role="tab" tabindex="-1">
C++
<button aria-controls="panel-3-UHl0aG9u" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
<button aria-controls="panel-3-SmF2YQ==" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-SmF2YQ==" name="SmF2YQ==" role="tab" tabindex="-1">
Java
<button aria-controls="panel-3-SnVsaWE=" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-SnVsaWE=" name="SnVsaWE=" role="tab" tabindex="-1">
Julia
<button aria-controls="panel-3-Rm9ydHJhbg==" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tab" tabindex="-1">
Fortran
<div aria-labelledby="tab-3-Qw==" classes="sphinx-tabs-panel code-tab group-tab" ids="panel-3-Qw==" name="Qw==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c" xml:space="preserve">
int main(const int argc, const char **argv) {
return 0;
}
<div aria-labelledby="tab-3-Qysr" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c++" xml:space="preserve">
int main(const int argc, const char **argv) {
return 0;
}
<div aria-labelledby="tab-3-UHl0aG9u" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="py" xml:space="preserve">
def main():
return
<div aria-labelledby="tab-3-SmF2YQ==" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-SmF2YQ==" name="SmF2YQ==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="java" xml:space="preserve">
class Main {
public static void main(String[] args) {
}
}
<div aria-labelledby="tab-3-SnVsaWE=" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-SnVsaWE=" name="SnVsaWE=" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="julia" xml:space="preserve">
function main()
end
<div aria-labelledby="tab-3-Rm9ydHJhbg==" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="fortran" xml:space="preserve">
PROGRAM main
END PROGRAM main
<section ids="group-tabs" names="group\ tabs">
<title>
Group Tabs
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-4-TGludXg=" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-4-TGludXg=" name="TGludXg=" role="tab" tabindex="0">
Linux
<button aria-controls="panel-4-TWFjIE9TWA==" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-4-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tab" tabindex="-1">
Mac OSX
<button aria-controls="panel-4-V2luZG93cw==" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-4-V2luZG93cw==" name="V2luZG93cw==" role="tab" tabindex="-1">
Windows
<div aria-labelledby="tab-4-TGludXg=" classes="sphinx-tabs-panel group-tab" ids="panel-4-TGludXg=" name="TGludXg=" role="tabpanel" tabindex="0">
<paragraph>
Linux Line 1
<div aria-labelledby="tab-4-TWFjIE9TWA==" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-4-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tabpanel" tabindex="0">
<paragraph>
Mac OSX Line 1
<div aria-labelledby="tab-4-V2luZG93cw==" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-4-V2luZG93cw==" name="V2luZG93cw==" role="tabpanel" tabindex="0">
<paragraph>
Windows Line 1
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-5-TGludXg=" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-5-TGludXg=" name="TGludXg=" role="tab" tabindex="0">
Linux
<button aria-controls="panel-5-TWFjIE9TWA==" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-5-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tab" tabindex="-1">
Mac OSX
<button aria-controls="panel-5-V2luZG93cw==" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-5-V2luZG93cw==" name="V2luZG93cw==" role="tab" tabindex="-1">
Windows
<div aria-labelledby="tab-5-TGludXg=" classes="sphinx-tabs-panel group-tab" ids="panel-5-TGludXg=" name="TGludXg=" role="tabpanel" tabindex="0">
<paragraph>
Linux Line 2
<div aria-labelledby="tab-5-TWFjIE9TWA==" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-5-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tabpanel" tabindex="0">
<paragraph>
Mac OSX Line 2
<div aria-labelledby="tab-5-V2luZG93cw==" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-5-V2luZG93cw==" name="V2luZG93cw==" role="tabpanel" tabindex="0">
<paragraph>
Windows Line 2

View File

@ -0,0 +1,306 @@
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1">
<a class="reference internal" href="no_tabs1.html">
Another page without tabs
</a>
</li>
<li class="toctree-l1">
<a class="reference internal" href="no_tabs2.html">
And another page without tabs
</a>
</li>
</ul>
</div>
<div class="section" id="fruits">
<h1>
Fruits
<a class="headerlink" href="#fruits" title="Permalink to this headline">
</a>
</h1>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-0-0-0" name="0-0" role="tab" tabindex="0">
Apples
</button>
<button aria-controls="panel-0-0-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
Pears
</button>
<button aria-controls="panel-0-0-2" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-2" name="0-2" role="tab" tabindex="-1">
Oranges
</button>
</div>
<div aria-labelledby="tab-0-0-0" class="sphinx-tabs-panel" id="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<p>
Apples are green, or sometimes red.
</p>
</div>
<div aria-labelledby="tab-0-0-1" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<p>
Pears are green.
</p>
</div>
<div aria-labelledby="tab-0-0-2" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-2" name="0-2" role="tabpanel" tabindex="0">
<p>
Oranges are orange.
</p>
</div>
</div>
</div>
<div class="section" id="luminaries">
<h1>
Luminaries
<a class="headerlink" href="#luminaries" title="Permalink to this headline">
</a>
</h1>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-1-1-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-1-1-0" name="1-0" role="tab" tabindex="0">
Sun
</button>
<button aria-controls="panel-1-1-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-1-1-1" name="1-1" role="tab" tabindex="-1">
Moon
</button>
</div>
<div aria-labelledby="tab-1-1-0" class="sphinx-tabs-panel" id="panel-1-1-0" name="1-0" role="tabpanel" tabindex="0">
<p>
The sun is a star.
</p>
</div>
<div aria-labelledby="tab-1-1-1" class="sphinx-tabs-panel" hidden="true" id="panel-1-1-1" name="1-1" role="tabpanel" tabindex="0">
<p>
The moon is not a star.
</p>
</div>
</div>
</div>
<div class="section" id="code-tabs">
<h1>
Code Tabs
<a class="headerlink" href="#code-tabs" title="Permalink to this headline">
</a>
</h1>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-2-Qw==" aria-selected="true" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-Qw==" name="Qw==" role="tab" tabindex="0">
C
</button>
<button aria-controls="panel-2-Qysr" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-Qysr" name="Qysr" role="tab" tabindex="-1">
C++
</button>
<button aria-controls="panel-2-UHl0aG9u" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
</button>
<button aria-controls="panel-2-SmF2YQ==" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-SmF2YQ==" name="SmF2YQ==" role="tab" tabindex="-1">
Java
</button>
<button aria-controls="panel-2-SnVsaWE=" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-SnVsaWE=" name="SnVsaWE=" role="tab" tabindex="-1">
Julia
</button>
<button aria-controls="panel-2-Rm9ydHJhbg==" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-2-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tab" tabindex="-1">
Fortran
</button>
</div>
<div aria-labelledby="tab-2-Qw==" class="sphinx-tabs-panel code-tab group-tab" id="panel-2-Qw==" name="Qw==" role="tabpanel" tabindex="0">
<div class="highlight-c notranslate">
<div class="highlight">
<pre><span></span><span class="n">C</span> <span class="n">Main</span> <span class="n">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-Qysr" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<div class="highlight-c++ notranslate">
<div class="highlight">
<pre><span></span><span class="n">C</span><span class="o">++</span> <span class="n">Main</span> <span class="n">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-UHl0aG9u" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<div class="highlight-py notranslate">
<div class="highlight">
<pre><span></span><span class="n">Python</span> <span class="n">Main</span> <span class="n">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-SmF2YQ==" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-SmF2YQ==" name="SmF2YQ==" role="tabpanel" tabindex="0">
<div class="highlight-java notranslate">
<div class="highlight">
<pre><span></span><span class="n">Java</span> <span class="n">Main</span> <span class="n">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-SnVsaWE=" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-SnVsaWE=" name="SnVsaWE=" role="tabpanel" tabindex="0">
<div class="highlight-julia notranslate">
<div class="highlight">
<pre><span></span><span class="n">Julia</span> <span class="n">Main</span> <span class="kt">Function</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-2-Rm9ydHJhbg==" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-2-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tabpanel" tabindex="0">
<div class="highlight-fortran notranslate">
<div class="highlight">
<pre><span></span><span class="n">Fortran</span> <span class="n">Main</span> <span class="k">Function</span>
</pre>
</div>
</div>
</div>
</div>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-3-Qw==" aria-selected="true" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-Qw==" name="Qw==" role="tab" tabindex="0">
C
</button>
<button aria-controls="panel-3-Qysr" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-Qysr" name="Qysr" role="tab" tabindex="-1">
C++
</button>
<button aria-controls="panel-3-UHl0aG9u" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
</button>
<button aria-controls="panel-3-SmF2YQ==" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-SmF2YQ==" name="SmF2YQ==" role="tab" tabindex="-1">
Java
</button>
<button aria-controls="panel-3-SnVsaWE=" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-SnVsaWE=" name="SnVsaWE=" role="tab" tabindex="-1">
Julia
</button>
<button aria-controls="panel-3-Rm9ydHJhbg==" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-3-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tab" tabindex="-1">
Fortran
</button>
</div>
<div aria-labelledby="tab-3-Qw==" class="sphinx-tabs-panel code-tab group-tab" id="panel-3-Qw==" name="Qw==" role="tabpanel" tabindex="0">
<div class="highlight-c notranslate">
<div class="highlight">
<pre><span></span><span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-Qysr" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<div class="highlight-c++ notranslate">
<div class="highlight">
<pre><span></span><span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-UHl0aG9u" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<div class="highlight-py notranslate">
<div class="highlight">
<pre><span></span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="k">return</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-SmF2YQ==" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-SmF2YQ==" name="SmF2YQ==" role="tabpanel" tabindex="0">
<div class="highlight-java notranslate">
<div class="highlight">
<pre><span></span><span class="kd">class</span> <span class="nc">Main</span> <span class="p">{</span>
<span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="p">)</span> <span class="p">{</span>
<span class="p">}</span>
<span class="p">}</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-SnVsaWE=" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-SnVsaWE=" name="SnVsaWE=" role="tabpanel" tabindex="0">
<div class="highlight-julia notranslate">
<div class="highlight">
<pre><span></span><span class="k">function</span> <span class="n">main</span><span class="p">()</span>
<span class="k">end</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-3-Rm9ydHJhbg==" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-3-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tabpanel" tabindex="0">
<div class="highlight-fortran notranslate">
<div class="highlight">
<pre><span></span><span class="k">PROGRAM </span><span class="n">main</span>
<span class="k">END PROGRAM </span><span class="n">main</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="section" id="group-tabs">
<h1>
Group Tabs
<a class="headerlink" href="#group-tabs" title="Permalink to this headline">
</a>
</h1>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-4-TGludXg=" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-4-TGludXg=" name="TGludXg=" role="tab" tabindex="0">
Linux
</button>
<button aria-controls="panel-4-TWFjIE9TWA==" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-4-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tab" tabindex="-1">
Mac OSX
</button>
<button aria-controls="panel-4-V2luZG93cw==" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-4-V2luZG93cw==" name="V2luZG93cw==" role="tab" tabindex="-1">
Windows
</button>
</div>
<div aria-labelledby="tab-4-TGludXg=" class="sphinx-tabs-panel group-tab" id="panel-4-TGludXg=" name="TGludXg=" role="tabpanel" tabindex="0">
<p>
Linux Line 1
</p>
</div>
<div aria-labelledby="tab-4-TWFjIE9TWA==" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-4-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tabpanel" tabindex="0">
<p>
Mac OSX Line 1
</p>
</div>
<div aria-labelledby="tab-4-V2luZG93cw==" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-4-V2luZG93cw==" name="V2luZG93cw==" role="tabpanel" tabindex="0">
<p>
Windows Line 1
</p>
</div>
</div>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-5-TGludXg=" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-5-TGludXg=" name="TGludXg=" role="tab" tabindex="0">
Linux
</button>
<button aria-controls="panel-5-TWFjIE9TWA==" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-5-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tab" tabindex="-1">
Mac OSX
</button>
<button aria-controls="panel-5-V2luZG93cw==" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-5-V2luZG93cw==" name="V2luZG93cw==" role="tab" tabindex="-1">
Windows
</button>
</div>
<div aria-labelledby="tab-5-TGludXg=" class="sphinx-tabs-panel group-tab" id="panel-5-TGludXg=" name="TGludXg=" role="tabpanel" tabindex="0">
<p>
Linux Line 2
</p>
</div>
<div aria-labelledby="tab-5-TWFjIE9TWA==" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-5-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tabpanel" tabindex="0">
<p>
Mac OSX Line 2
</p>
</div>
<div aria-labelledby="tab-5-V2luZG93cw==" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-5-V2luZG93cw==" name="V2luZG93cw==" role="tabpanel" tabindex="0">
<p>
Windows Line 2
</p>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,152 @@
<document source="index.rst">
<compound classes="toctree-wrapper">
<toctree caption="True" entries="(None,\ 'no_tabs1') (None,\ 'no_tabs2')" glob="False" hidden="False" includefiles="no_tabs1 no_tabs2" includehidden="False" maxdepth="-1" numbered="0" parent="index" rawentries="" titlesonly="False">
<section ids="fruits" names="fruits">
<title>
Fruits
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" classes="sphinx-tabs-tab" ids="tab-0-0-0" name="0-0" role="tab" tabindex="0">
Apples
<button aria-controls="panel-0-0-1" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
Pears
<button aria-controls="panel-0-0-2" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-2" name="0-2" role="tab" tabindex="-1">
Oranges
<div aria-labelledby="tab-0-0-0" classes="sphinx-tabs-panel" ids="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<paragraph>
Apples are green, or sometimes red.
<div aria-labelledby="tab-0-0-1" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<paragraph>
Pears are green.
<div aria-labelledby="tab-0-0-2" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-2" name="0-2" role="tabpanel" tabindex="0">
<paragraph>
Oranges are orange.
<section ids="luminaries" names="luminaries">
<title>
Luminaries
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-1-1-0" aria-selected="true" classes="sphinx-tabs-tab" ids="tab-1-1-0" name="1-0" role="tab" tabindex="0">
Sun
<button aria-controls="panel-1-1-1" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-1-1-1" name="1-1" role="tab" tabindex="-1">
Moon
<div aria-labelledby="tab-1-1-0" classes="sphinx-tabs-panel" ids="panel-1-1-0" name="1-0" role="tabpanel" tabindex="0">
<paragraph>
The sun is a star.
<div aria-labelledby="tab-1-1-1" classes="sphinx-tabs-panel" hidden="true" ids="panel-1-1-1" name="1-1" role="tabpanel" tabindex="0">
<paragraph>
The moon is not a star.
<section ids="code-tabs" names="code\ tabs">
<title>
Code Tabs
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-2-Qw==" aria-selected="true" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-Qw==" name="Qw==" role="tab" tabindex="0">
C
<button aria-controls="panel-2-Qysr" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-Qysr" name="Qysr" role="tab" tabindex="-1">
C++
<button aria-controls="panel-2-UHl0aG9u" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
<button aria-controls="panel-2-SmF2YQ==" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-SmF2YQ==" name="SmF2YQ==" role="tab" tabindex="-1">
Java
<button aria-controls="panel-2-SnVsaWE=" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-SnVsaWE=" name="SnVsaWE=" role="tab" tabindex="-1">
Julia
<button aria-controls="panel-2-Rm9ydHJhbg==" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-2-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tab" tabindex="-1">
Fortran
<div aria-labelledby="tab-2-Qw==" classes="sphinx-tabs-panel code-tab group-tab" ids="panel-2-Qw==" name="Qw==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c" xml:space="preserve">
C Main Function
<div aria-labelledby="tab-2-Qysr" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c++" xml:space="preserve">
C++ Main Function
<div aria-labelledby="tab-2-UHl0aG9u" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="py" xml:space="preserve">
Python Main Function
<div aria-labelledby="tab-2-SmF2YQ==" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-SmF2YQ==" name="SmF2YQ==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="java" xml:space="preserve">
Java Main Function
<div aria-labelledby="tab-2-SnVsaWE=" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-SnVsaWE=" name="SnVsaWE=" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="julia" xml:space="preserve">
Julia Main Function
<div aria-labelledby="tab-2-Rm9ydHJhbg==" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-2-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="fortran" xml:space="preserve">
Fortran Main Function
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-3-Qw==" aria-selected="true" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-Qw==" name="Qw==" role="tab" tabindex="0">
C
<button aria-controls="panel-3-Qysr" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-Qysr" name="Qysr" role="tab" tabindex="-1">
C++
<button aria-controls="panel-3-UHl0aG9u" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
<button aria-controls="panel-3-SmF2YQ==" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-SmF2YQ==" name="SmF2YQ==" role="tab" tabindex="-1">
Java
<button aria-controls="panel-3-SnVsaWE=" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-SnVsaWE=" name="SnVsaWE=" role="tab" tabindex="-1">
Julia
<button aria-controls="panel-3-Rm9ydHJhbg==" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-3-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tab" tabindex="-1">
Fortran
<div aria-labelledby="tab-3-Qw==" classes="sphinx-tabs-panel code-tab group-tab" ids="panel-3-Qw==" name="Qw==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c" xml:space="preserve">
int main(const int argc, const char **argv) {
return 0;
}
<div aria-labelledby="tab-3-Qysr" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c++" xml:space="preserve">
int main(const int argc, const char **argv) {
return 0;
}
<div aria-labelledby="tab-3-UHl0aG9u" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="py" xml:space="preserve">
def main():
return
<div aria-labelledby="tab-3-SmF2YQ==" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-SmF2YQ==" name="SmF2YQ==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="java" xml:space="preserve">
class Main {
public static void main(String[] args) {
}
}
<div aria-labelledby="tab-3-SnVsaWE=" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-SnVsaWE=" name="SnVsaWE=" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="julia" xml:space="preserve">
function main()
end
<div aria-labelledby="tab-3-Rm9ydHJhbg==" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-3-Rm9ydHJhbg==" name="Rm9ydHJhbg==" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="fortran" xml:space="preserve">
PROGRAM main
END PROGRAM main
<section ids="group-tabs" names="group\ tabs">
<title>
Group Tabs
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-4-TGludXg=" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-4-TGludXg=" name="TGludXg=" role="tab" tabindex="0">
Linux
<button aria-controls="panel-4-TWFjIE9TWA==" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-4-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tab" tabindex="-1">
Mac OSX
<button aria-controls="panel-4-V2luZG93cw==" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-4-V2luZG93cw==" name="V2luZG93cw==" role="tab" tabindex="-1">
Windows
<div aria-labelledby="tab-4-TGludXg=" classes="sphinx-tabs-panel group-tab" ids="panel-4-TGludXg=" name="TGludXg=" role="tabpanel" tabindex="0">
<paragraph>
Linux Line 1
<div aria-labelledby="tab-4-TWFjIE9TWA==" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-4-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tabpanel" tabindex="0">
<paragraph>
Mac OSX Line 1
<div aria-labelledby="tab-4-V2luZG93cw==" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-4-V2luZG93cw==" name="V2luZG93cw==" role="tabpanel" tabindex="0">
<paragraph>
Windows Line 1
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-5-TGludXg=" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-5-TGludXg=" name="TGludXg=" role="tab" tabindex="0">
Linux
<button aria-controls="panel-5-TWFjIE9TWA==" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-5-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tab" tabindex="-1">
Mac OSX
<button aria-controls="panel-5-V2luZG93cw==" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-5-V2luZG93cw==" name="V2luZG93cw==" role="tab" tabindex="-1">
Windows
<div aria-labelledby="tab-5-TGludXg=" classes="sphinx-tabs-panel group-tab" ids="panel-5-TGludXg=" name="TGludXg=" role="tabpanel" tabindex="0">
<paragraph>
Linux Line 2
<div aria-labelledby="tab-5-TWFjIE9TWA==" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-5-TWFjIE9TWA==" name="TWFjIE9TWA==" role="tabpanel" tabindex="0">
<paragraph>
Mac OSX Line 2
<div aria-labelledby="tab-5-V2luZG93cw==" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-5-V2luZG93cw==" name="V2luZG93cw==" role="tabpanel" tabindex="0">
<paragraph>
Windows Line 2

View File

@ -0,0 +1,33 @@
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-0-QllP" aria-selected="true" class="sphinx-tabs-tab code-tab group-tab" id="tab-0-QllP" name="QllP" role="tab" tabindex="0">
BYO
</button>
<button aria-controls="panel-0-QllP-1" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-0-QllP-1" name="QllP-1" role="tab" tabindex="-1">
BYO
</button>
</div>
<div aria-labelledby="tab-0-QllP" class="sphinx-tabs-panel code-tab group-tab" id="panel-0-QllP" name="QllP" role="tabpanel" tabindex="0">
<div class="highlight-byo notranslate">
<div class="highlight">
<pre><span></span><span class="k">Test</span>
This is just a test.
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-0-QllP-1" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-0-QllP-1" name="QllP-1" role="tabpanel" tabindex="0">
<div class="highlight-byo notranslate">
<div class="highlight">
<pre><span></span>Some other text.
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,14 @@
<document source="index.rst">
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-0-QllP" aria-selected="true" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-0-QllP" name="QllP" role="tab" tabindex="0">
BYO
<button aria-controls="panel-0-QllP-1" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-0-QllP-1" name="QllP-1" role="tab" tabindex="-1">
BYO
<div aria-labelledby="tab-0-QllP" classes="sphinx-tabs-panel code-tab group-tab" ids="panel-0-QllP" name="QllP" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="byo" xml:space="preserve">
Test
This is just a test.
<div aria-labelledby="tab-0-QllP-1" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-0-QllP-1" name="QllP-1" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="byo" xml:space="preserve">
Some other text.

View File

@ -0,0 +1,42 @@
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-0-0-0" name="0-0" role="tab" tabindex="0">
Apples
</button>
<button aria-controls="panel-0-0-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
Pears
</button>
<button aria-controls="panel-0-0-2" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-2" name="0-2" role="tab" tabindex="-1">
Oranges
</button>
<button aria-controls="panel-0-0-3" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-3" name="0-3" role="tab" tabindex="-1">
404
</button>
</div>
<div aria-labelledby="tab-0-0-0" class="sphinx-tabs-panel" id="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<p>
Apples are green, or sometimes red.
</p>
</div>
<div aria-labelledby="tab-0-0-1" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<p>
Pears are green.
</p>
</div>
<div aria-labelledby="tab-0-0-2" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-2" name="0-2" role="tabpanel" tabindex="0">
<p>
Oranges are orange.
</p>
</div>
<div aria-labelledby="tab-0-0-3" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-3" name="0-3" role="tabpanel" tabindex="0">
<p>
A number in the name.
</p>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,23 @@
<document source="index.rst">
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" classes="sphinx-tabs-tab" ids="tab-0-0-0" name="0-0" role="tab" tabindex="0">
Apples
<button aria-controls="panel-0-0-1" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
Pears
<button aria-controls="panel-0-0-2" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-2" name="0-2" role="tab" tabindex="-1">
Oranges
<button aria-controls="panel-0-0-3" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-3" name="0-3" role="tab" tabindex="-1">
404
<div aria-labelledby="tab-0-0-0" classes="sphinx-tabs-panel" ids="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<paragraph>
Apples are green, or sometimes red.
<div aria-labelledby="tab-0-0-1" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<paragraph>
Pears are green.
<div aria-labelledby="tab-0-0-2" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-2" name="0-2" role="tabpanel" tabindex="0">
<paragraph>
Oranges are orange.
<div aria-labelledby="tab-0-0-3" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-3" name="0-3" role="tabpanel" tabindex="0">
<paragraph>
A number in the name.

View File

@ -0,0 +1,42 @@
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-0-0-0" name="0-0" role="tab" tabindex="0">
Apples
</button>
<button aria-controls="panel-0-0-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
Pears
</button>
<button aria-controls="panel-0-0-2" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-2" name="0-2" role="tab" tabindex="-1">
Oranges
</button>
<button aria-controls="panel-0-0-3" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-3" name="0-3" role="tab" tabindex="-1">
404
</button>
</div>
<div aria-labelledby="tab-0-0-0" class="sphinx-tabs-panel" id="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<p>
Apples are green, or sometimes red.
</p>
</div>
<div aria-labelledby="tab-0-0-1" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<p>
Pears are green.
</p>
</div>
<div aria-labelledby="tab-0-0-2" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-2" name="0-2" role="tabpanel" tabindex="0">
<p>
Oranges are orange.
</p>
</div>
<div aria-labelledby="tab-0-0-3" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-3" name="0-3" role="tabpanel" tabindex="0">
<p>
A number in the name.
</p>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,23 @@
<document source="index.rst">
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" classes="sphinx-tabs-tab" ids="tab-0-0-0" name="0-0" role="tab" tabindex="0">
Apples
<button aria-controls="panel-0-0-1" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
Pears
<button aria-controls="panel-0-0-2" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-2" name="0-2" role="tab" tabindex="-1">
Oranges
<button aria-controls="panel-0-0-3" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-3" name="0-3" role="tab" tabindex="-1">
404
<div aria-labelledby="tab-0-0-0" classes="sphinx-tabs-panel" ids="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<paragraph>
Apples are green, or sometimes red.
<div aria-labelledby="tab-0-0-1" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<paragraph>
Pears are green.
<div aria-labelledby="tab-0-0-2" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-2" name="0-2" role="tabpanel" tabindex="0">
<paragraph>
Oranges are orange.
<div aria-labelledby="tab-0-0-3" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-3" name="0-3" role="tabpanel" tabindex="0">
<paragraph>
A number in the name.

View File

@ -0,0 +1,212 @@
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="markup-in-tab-titles">
<h1>
Markup in Tab Titles
<a class="headerlink" href="#markup-in-tab-titles" title="Permalink to this headline">
</a>
</h1>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-0-0-0" name="0-0" role="tab" tabindex="0">
<strong>
bold
</strong>
tab
</button>
<button aria-controls="panel-0-0-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
<em>
italic
</em>
tab
</button>
</div>
<div aria-labelledby="tab-0-0-0" class="sphinx-tabs-panel" id="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<p>
<strong>
bold
</strong>
text
</p>
</div>
<div aria-labelledby="tab-0-0-1" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<p>
<em>
italic
</em>
text
</p>
</div>
</div>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-1-Kipib2xkKiogZ3JvdXAgdGFi" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-1-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tab" tabindex="0">
<strong>
bold
</strong>
group tab
</button>
<button aria-controls="panel-1-Kml0YWxpYyogZ3JvdXAgdGFi" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-1-Kml0YWxpYyogZ3JvdXAgdGFi" name="Kml0YWxpYyogZ3JvdXAgdGFi" role="tab" tabindex="-1">
<em>
italic
</em>
group tab
</button>
</div>
<div aria-labelledby="tab-1-Kipib2xkKiogZ3JvdXAgdGFi" class="sphinx-tabs-panel group-tab" id="panel-1-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tabpanel" tabindex="0">
<p>
<strong>
bold
</strong>
text
</p>
</div>
<div aria-labelledby="tab-1-Kml0YWxpYyogZ3JvdXAgdGFi" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-1-Kml0YWxpYyogZ3JvdXAgdGFi" name="Kml0YWxpYyogZ3JvdXAgdGFi" role="tabpanel" tabindex="0">
<p>
<em>
italic
</em>
text
</p>
</div>
</div>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-2-Kipib2xkKiogZ3JvdXAgdGFi" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-2-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tab" tabindex="0">
<strong>
bold
</strong>
group tab
</button>
<button aria-controls="panel-2-Kml0YWxpYyogZ3JvdXAgdGFi" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-2-Kml0YWxpYyogZ3JvdXAgdGFi" name="Kml0YWxpYyogZ3JvdXAgdGFi" role="tab" tabindex="-1">
<em>
italic
</em>
group tab
</button>
</div>
<div aria-labelledby="tab-2-Kipib2xkKiogZ3JvdXAgdGFi" class="sphinx-tabs-panel group-tab" id="panel-2-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tabpanel" tabindex="0">
<p>
<strong>
bold
</strong>
text
</p>
</div>
<div aria-labelledby="tab-2-Kml0YWxpYyogZ3JvdXAgdGFi" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-2-Kml0YWxpYyogZ3JvdXAgdGFi" name="Kml0YWxpYyogZ3JvdXAgdGFi" role="tabpanel" tabindex="0">
<p>
<em>
italic
</em>
text
</p>
</div>
</div>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-3-3-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-3-3-0" name="3-0" role="tab" tabindex="0">
<span class="math notranslate nohighlight">
\(x = y\)
</span>
tab
</button>
<button aria-controls="panel-3-3-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-3-3-1" name="3-1" role="tab" tabindex="-1">
<span class="math notranslate nohighlight">
\(x \neq y\)
</span>
tab
</button>
</div>
<div aria-labelledby="tab-3-3-0" class="sphinx-tabs-panel" id="panel-3-3-0" name="3-0" role="tabpanel" tabindex="0">
<p>
Variables are equal
<span class="math notranslate nohighlight">
\(x = y\)
</span>
.
</p>
</div>
<div aria-labelledby="tab-3-3-1" class="sphinx-tabs-panel" hidden="true" id="panel-3-3-1" name="3-1" role="tabpanel" tabindex="0">
<p>
Variables are not equal
<span class="math notranslate nohighlight">
\(x \neq y\)
</span>
.
</p>
</div>
</div>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tab" tabindex="0">
<span class="math notranslate nohighlight">
\(x = y\)
</span>
group tab
</button>
<button aria-controls="panel-4-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-4-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" role="tab" tabindex="-1">
<span class="math notranslate nohighlight">
\(x \neq y\)
</span>
group tab
</button>
</div>
<div aria-labelledby="tab-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" class="sphinx-tabs-panel group-tab" id="panel-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tabpanel" tabindex="0">
<p>
Variables are equal
<span class="math notranslate nohighlight">
\(x = y\)
</span>
.
</p>
</div>
<div aria-labelledby="tab-4-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-4-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" role="tabpanel" tabindex="0">
<p>
Variables are not equal
<span class="math notranslate nohighlight">
\(x \neq y\)
</span>
.
</p>
</div>
</div>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" aria-selected="true" class="sphinx-tabs-tab group-tab" id="tab-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tab" tabindex="0">
<span class="math notranslate nohighlight">
\(x = y\)
</span>
group tab
</button>
<button aria-controls="panel-5-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" aria-selected="false" class="sphinx-tabs-tab group-tab" id="tab-5-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" role="tab" tabindex="-1">
<span class="math notranslate nohighlight">
\(x \neq y\)
</span>
group tab
</button>
</div>
<div aria-labelledby="tab-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" class="sphinx-tabs-panel group-tab" id="panel-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tabpanel" tabindex="0">
<p>
Variables are equal
<span class="math notranslate nohighlight">
\(x = y\)
</span>
.
</p>
</div>
<div aria-labelledby="tab-5-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" class="sphinx-tabs-panel group-tab" hidden="true" id="panel-5-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" role="tabpanel" tabindex="0">
<p>
Variables are not equal
<span class="math notranslate nohighlight">
\(x \neq y\)
</span>
.
</p>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,130 @@
<document source="index.rst">
<section ids="markup-in-tab-titles" names="markup\ in\ tab\ titles">
<title>
Markup in Tab Titles
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-0-0-0" aria-selected="true" classes="sphinx-tabs-tab" ids="tab-0-0-0" name="0-0" role="tab" tabindex="0">
<strong>
bold
tab
<button aria-controls="panel-0-0-1" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-0-0-1" name="0-1" role="tab" tabindex="-1">
<emphasis>
italic
tab
<div aria-labelledby="tab-0-0-0" classes="sphinx-tabs-panel" ids="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0">
<paragraph>
<strong>
bold
text
<div aria-labelledby="tab-0-0-1" classes="sphinx-tabs-panel" hidden="true" ids="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<paragraph>
<emphasis>
italic
text
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-1-Kipib2xkKiogZ3JvdXAgdGFi" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-1-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tab" tabindex="0">
<strong>
bold
group tab
<button aria-controls="panel-1-Kml0YWxpYyogZ3JvdXAgdGFi" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-1-Kml0YWxpYyogZ3JvdXAgdGFi" name="Kml0YWxpYyogZ3JvdXAgdGFi" role="tab" tabindex="-1">
<emphasis>
italic
group tab
<div aria-labelledby="tab-1-Kipib2xkKiogZ3JvdXAgdGFi" classes="sphinx-tabs-panel group-tab" ids="panel-1-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tabpanel" tabindex="0">
<paragraph>
<strong>
bold
text
<div aria-labelledby="tab-1-Kml0YWxpYyogZ3JvdXAgdGFi" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-1-Kml0YWxpYyogZ3JvdXAgdGFi" name="Kml0YWxpYyogZ3JvdXAgdGFi" role="tabpanel" tabindex="0">
<paragraph>
<emphasis>
italic
text
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-2-Kipib2xkKiogZ3JvdXAgdGFi" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-2-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tab" tabindex="0">
<strong>
bold
group tab
<button aria-controls="panel-2-Kml0YWxpYyogZ3JvdXAgdGFi" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-2-Kml0YWxpYyogZ3JvdXAgdGFi" name="Kml0YWxpYyogZ3JvdXAgdGFi" role="tab" tabindex="-1">
<emphasis>
italic
group tab
<div aria-labelledby="tab-2-Kipib2xkKiogZ3JvdXAgdGFi" classes="sphinx-tabs-panel group-tab" ids="panel-2-Kipib2xkKiogZ3JvdXAgdGFi" name="Kipib2xkKiogZ3JvdXAgdGFi" role="tabpanel" tabindex="0">
<paragraph>
<strong>
bold
text
<div aria-labelledby="tab-2-Kml0YWxpYyogZ3JvdXAgdGFi" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-2-Kml0YWxpYyogZ3JvdXAgdGFi" name="Kml0YWxpYyogZ3JvdXAgdGFi" role="tabpanel" tabindex="0">
<paragraph>
<emphasis>
italic
text
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-3-3-0" aria-selected="true" classes="sphinx-tabs-tab" ids="tab-3-3-0" name="3-0" role="tab" tabindex="0">
<math>
x = y
tab
<button aria-controls="panel-3-3-1" aria-selected="false" classes="sphinx-tabs-tab" ids="tab-3-3-1" name="3-1" role="tab" tabindex="-1">
<math>
x \neq y
tab
<div aria-labelledby="tab-3-3-0" classes="sphinx-tabs-panel" ids="panel-3-3-0" name="3-0" role="tabpanel" tabindex="0">
<paragraph>
Variables are equal
<math>
x = y
.
<div aria-labelledby="tab-3-3-1" classes="sphinx-tabs-panel" hidden="true" ids="panel-3-3-1" name="3-1" role="tabpanel" tabindex="0">
<paragraph>
Variables are not equal
<math>
x \neq y
.
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tab" tabindex="0">
<math>
x = y
group tab
<button aria-controls="panel-4-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-4-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" role="tab" tabindex="-1">
<math>
x \neq y
group tab
<div aria-labelledby="tab-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" classes="sphinx-tabs-panel group-tab" ids="panel-4-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tabpanel" tabindex="0">
<paragraph>
Variables are equal
<math>
x = y
.
<div aria-labelledby="tab-4-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-4-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" role="tabpanel" tabindex="0">
<paragraph>
Variables are not equal
<math>
x \neq y
.
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" aria-selected="true" classes="sphinx-tabs-tab group-tab" ids="tab-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tab" tabindex="0">
<math>
x = y
group tab
<button aria-controls="panel-5-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" aria-selected="false" classes="sphinx-tabs-tab group-tab" ids="tab-5-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" role="tab" tabindex="-1">
<math>
x \neq y
group tab
<div aria-labelledby="tab-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" classes="sphinx-tabs-panel group-tab" ids="panel-5-Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggPSB5YCBncm91cCB0YWI=" role="tabpanel" tabindex="0">
<paragraph>
Variables are equal
<math>
x = y
.
<div aria-labelledby="tab-5-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" classes="sphinx-tabs-panel group-tab" hidden="true" ids="panel-5-Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" name="Om1hdGg6YHggXG5lcSB5YCBncm91cCB0YWI=" role="tabpanel" tabindex="0">
<paragraph>
Variables are not equal
<math>
x \neq y
.

View File

@ -0,0 +1,9 @@
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<p>
There are no tabs here
</p>
</div>
</div>
</div>

View File

@ -0,0 +1,3 @@
<document source="index.rst">
<paragraph>
There are no tabs here

View File

@ -0,0 +1,43 @@
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-0-Qysr" aria-selected="true" class="sphinx-tabs-tab code-tab group-tab" id="tab-0-Qysr" name="Qysr" role="tab" tabindex="0">
C++
</button>
<button aria-controls="panel-0-UHl0aG9u" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-0-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
</button>
</div>
<div aria-labelledby="tab-0-Qysr" class="sphinx-tabs-panel code-tab group-tab" id="panel-0-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<div class="highlight-c++ notranslate">
<table class="highlighttable">
<tr>
<td class="linenos">
<div class="linenodiv">
<pre><span class="normal">1</span></pre>
</div>
</td>
<td class="code">
<div class="highlight">
<pre><span></span><span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">"hello world"</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
</pre>
</div>
</td>
</tr>
</table>
</div>
</div>
<div aria-labelledby="tab-0-UHl0aG9u" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-0-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<div class="highlight-python notranslate">
<div class="highlight">
<pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s1">'hello world'</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,13 @@
<document source="index.rst">
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-0-Qysr" aria-selected="true" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-0-Qysr" name="Qysr" role="tab" tabindex="0">
C++
<button aria-controls="panel-0-UHl0aG9u" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-0-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
<div aria-labelledby="tab-0-Qysr" classes="sphinx-tabs-panel code-tab group-tab" ids="panel-0-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c++" linenos="True" xml:space="preserve">
std::cout << "hello world" << std::endl;
<div aria-labelledby="tab-0-UHl0aG9u" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-0-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="python" xml:space="preserve">
print('hello world')

View File

@ -0,0 +1,32 @@
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist">
<button aria-controls="panel-0-Qysr" aria-selected="true" class="sphinx-tabs-tab code-tab group-tab" id="tab-0-Qysr" name="Qysr" role="tab" tabindex="0">
C++
</button>
<button aria-controls="panel-0-UHl0aG9u" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-0-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
</button>
</div>
<div aria-labelledby="tab-0-Qysr" class="sphinx-tabs-panel code-tab group-tab" id="panel-0-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<div class="highlight-c++ notranslate">
<div class="highlight">
<pre><span></span><span class="linenos">1</span><span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">"hello world"</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
</pre>
</div>
</div>
</div>
<div aria-labelledby="tab-0-UHl0aG9u" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-0-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<div class="highlight-python notranslate">
<div class="highlight">
<pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s1">'hello world'</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,13 @@
<document source="index.rst">
<container classes="sphinx-tabs" type="tab-element">
<div aria-label="Tabbed content" classes="closeable" role="tablist">
<button aria-controls="panel-0-Qysr" aria-selected="true" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-0-Qysr" name="Qysr" role="tab" tabindex="0">
C++
<button aria-controls="panel-0-UHl0aG9u" aria-selected="false" classes="sphinx-tabs-tab code-tab group-tab" ids="tab-0-UHl0aG9u" name="UHl0aG9u" role="tab" tabindex="-1">
Python
<div aria-labelledby="tab-0-Qysr" classes="sphinx-tabs-panel code-tab group-tab" ids="panel-0-Qysr" name="Qysr" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="c++" linenos="True" xml:space="preserve">
std::cout << "hello world" << std::endl;
<div aria-labelledby="tab-0-UHl0aG9u" classes="sphinx-tabs-panel code-tab group-tab" hidden="true" ids="panel-0-UHl0aG9u" name="UHl0aG9u" role="tabpanel" tabindex="0">
<literal_block force="False" highlight_args="{}" language="python" xml:space="preserve">
print('hello world')

View File

@ -0,0 +1,6 @@
<document source="index.rst">
<section ids="testing-pdf" names="testing\ pdf">
<title>
TESTING PDF
<compound classes="toctree-wrapper">
<toctree caption="Contents:" entries="(None,\ 'tabs')" glob="False" hidden="False" includefiles="tabs" includehidden="False" maxdepth="2" numbered="0" parent="index" rawcaption="Contents:" rawentries="" titlesonly="False">

23
tox.ini Normal file
View File

@ -0,0 +1,23 @@
# To use tox, see https://tox.readthedocs.io
# Simply pip or conda install tox
# If you use conda, you may also want to install tox-conda
# then run `tox` or `tox -- {pytest args}`
# run in parallel using `tox -p`
[tox]
envlist = py{36,37,38}-sphinx{2,3,4},docs
[testenv:py{36,37,38}-sphinx{2,3,4}]
extras = testing
deps =
sphinx2: sphinx>=2,<3
sphinx3: sphinx>=3,<4
sphinx4: sphinx>=4,<5
recreate = false
commands = pytest {posargs}
[testenv:docs]
whitelist_externals = rm
recreate = false
commands =
rm -rf docs/_build
sphinx-build -nW --keep-going -b html docs/ docs/_build/html