Repository files navigation

📔 SPM Documentation 👋

SPM: docsLicense: CC-BY-SA-4.0TestsTestsTestsTests

This repository contains the documentation of the SPM software. It is built using Material for MkDocs, a theme for the static site generator MkDocs.

All the features of Material for MkDocs are described in its reference documentation. We are sponsoring the project and therefore have access to all of the Insiders features.

⚠️ This repository contains all the files used to generate the SPM documentation. This is therefore the place to make some edits and modifications to the documentation. If you only want to read the documentation, please have a look here.

⛷️ Getting started

📑 File layout

MkDocs is configured using the mkdocs.yml file at the root of the Git repository.

The mkdocs.yml file defines the top level navigation for the site. The nav configuration setting in this file defines which pages are included in the global site navigation menu as well as the structure of that menu.

See MkDocs documentation for more details.

🆒 Markdown syntax

MkDocs pages are written using the Markdown syntax.

MkDocs natively supports Markdown extensions that enhance the Markdown writing experience. Plugins, built-in or third-party, are extensions to the MkDocs framework which allow users to add custom functionality and features to their MkDocs projects. These plugins can be used to add additional features such as search or analytics.

See MkDocs documentation for more details, and best-of-mkdocs for a curated list of plugins.

To edit Markdown documents, we recommend Visual Studio Code with its preview mode. If you want to make a quick change, navigate on GitHub to the page of the file you wish to modify (or click on the Edit this page icon) and press the . key: it will open a VS Code environment directly in your browser.

💻 Installation

If you want to edit and build the documentation yourself, you first need to clone or download the repository:

git clone git@github.com:spm/spm-docs.git

Then create a virtual environment for Python and install Material for MkDocs and its dependencies:

python3 -m venv venv
source venv/bin/activate
pip install --requirement requirements.txt

On Windows, install Python from the Microsoft Store then type the following in a Command Prompt or PowerShell window:

python3 -m venv venv
.\venv\Scripts\activate
pip install --requirement requirements.txt

Still on Windows, if you have issues with the above commands due to restrictions on your system, please run the following after creating the virtual environment:

Powershell.exe -NoProfile -ExecutionPolicy Bypass -File <the full path of the activate.ps1 file>

You can preview the documentation as you work on it thanks to a built-in web server. When you are in the same directory as the mkdocs.yml configuration file, start the server with the command:

mkdocs serve

You can then browse the documentation in your web browser at http://127.0.0.1:8000/. Each time a change is made, the documentation is rebuilt and the page auto-reloaded.

To deploy the documentation, use the following command:

mkdocs build

The documentation is then built as a static site in a directory called site.

The Insiders-only features will be here ignored but available in the public build on the SPM website.

To deactivate the virtual environment when you finished working, use:

deactivate

MkDocs plugins currently used:

  • mkdocs-bibtex: a plugin for citation management using bibtex
  • MkDocs Video: a plugin to embed videos in the documentation pages

🦁 Style guide

1. Language

Use British English.

2. Code

Format any code included in the documentation as code blocks.

Raw text:

```matlab

code

```

Display text:

code

Format any file names, paths, functions, input variables, etc. as in-line code.

Raw text: `code`

Display text: code

3. Abbreviations

All abbreviations should be defined alphabetically in addons/abbreviations.md in the following format:

*[BOLD]: Blood Oxygen Level Dependent 

To use the abbreviations file on the page you’re creating, add the below at the end of your markdown file:

--8<-- "addons/abbreviations.md"

4. Images

Illustrations should be saved as PNG or SVG files in the docs/assets/figures/ directory. OptiPNG should be applied on PNG files before commit.

To display images with captions, use:

<figuremarkdown>
![Image title](../../../assets/figures/image.png){ width="300" }
<figcaption>Image caption</figcaption></figure>

Videos should be saved as MP4 in the docs/assets/videos/ directory. Videos encoded in other formats can be converted to MP4 with FFmpeg.

5. Information boxes

Additional information can be highlighted using information boxes.

Boxes can be expanded:

!!! tip “Title of your box”
Text of your box

Or collapsible:

??? tip "Title of your box"
Text of your box

Use expanded boxes for crucial succinct information. For anything additional or lengthy, use collapsible boxes.

Various icons and colour-coding are available, please use:

  • tip for top tips on SPM things
  • info for core information not covered in the main text
  • note for additional non-essential information
  • failure for help on troubleshooting

Full list of icons is available here.

6. Symbols

A selection of symbols can be used. Currently used:

  • ++return++ enter/return key
  • :material-arrow-right-bold: right facing arrow
  • :material-play: play icon

Full list of symbols is available here.

🐛 Testing

🛠️ Build

The documentation is built using GitHub Action after each commit in the main branch with the non-Insiders version of Material for MkDocs.

📝 Spelling

codespell

Detect common misspellings with codespell.

To run codespell interactively on the SPM documentation, use:

codespell -w -i 1 docs

PySpelling

To run PySpelling on the SPM documentation, use:

# Run PySpelling using the default spell checker, Aspell
pyspelling
# Run PySpelling using the Hunspell spell checker
pyspelling --spellchecker hunspell

⛓️ Links Check

markdown-link-check

A GitHub Action checks all Markdown files for broken links (using markdown-link-check).

🧊 Linting

markdownlint

To run markdownlint-cli, a command line interface to markdownlint, use:

markdownlint "docs/**/*.md"

Note that only MkDocs build and codespell will potentially fail during continuous integration on GitHub Actions. The other reports are only advisory, for your perusal.

🥂 Contributing

Contributions are most welcome and appreciated! See the First Contributions project for instructions.

  1. GitHub repository: Report issues, make feature requests or open pull requests.
  2. SPM@JiscMail: Open mailing list for discussion and questions about SPM.

🎀 License

The SPM Documentation is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, see LICENSE or visit http://creativecommons.org/licenses/by-sa/4.0/.

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

📔 SPM Documentation 👋

SPM: docsLicense: CC-BY-SA-4.0TestsTestsTestsTests

This repository contains the documentation of the SPM software. It is built using Material for MkDocs, a theme for the static site generator MkDocs.

All the features of Material for MkDocs are described in its reference documentation. We are sponsoring the project and therefore have access to all of the Insiders features.

⚠️ This repository contains all the files used to generate the SPM documentation. This is therefore the place to make some edits and modifications to the documentation. If you only want to read the documentation, please have a look here.

⛷️ Getting started

📑 File layout

MkDocs is configured using the mkdocs.yml file at the root of the Git repository.

The mkdocs.yml file defines the top level navigation for the site. The nav configuration setting in this file defines which pages are included in the global site navigation menu as well as the structure of that menu.

See MkDocs documentation for more details.

🆒 Markdown syntax

MkDocs pages are written using the Markdown syntax.

MkDocs natively supports Markdown extensions that enhance the Markdown writing experience. Plugins, built-in or third-party, are extensions to the MkDocs framework which allow users to add custom functionality and features to their MkDocs projects. These plugins can be used to add additional features such as search or analytics.

See MkDocs documentation for more details, and best-of-mkdocs for a curated list of plugins.

To edit Markdown documents, we recommend Visual Studio Code with its preview mode. If you want to make a quick change, navigate on GitHub to the page of the file you wish to modify (or click on the Edit this page icon) and press the . key: it will open a VS Code environment directly in your browser.

💻 Installation

If you want to edit and build the documentation yourself, you first need to clone or download the repository:

git clone git@github.com:spm/spm-docs.git

Then create a virtual environment for Python and install Material for MkDocs and its dependencies:

python3 -m venv venv
source venv/bin/activate
pip install --requirement requirements.txt

On Windows, install Python from the Microsoft Store then type the following in a Command Prompt or PowerShell window:

python3 -m venv venv
.\venv\Scripts\activate
pip install --requirement requirements.txt

Still on Windows, if you have issues with the above commands due to restrictions on your system, please run the following after creating the virtual environment:

Powershell.exe -NoProfile -ExecutionPolicy Bypass -File <the full path of the activate.ps1 file>

You can preview the documentation as you work on it thanks to a built-in web server. When you are in the same directory as the mkdocs.yml configuration file, start the server with the command:

mkdocs serve

You can then browse the documentation in your web browser at http://127.0.0.1:8000/. Each time a change is made, the documentation is rebuilt and the page auto-reloaded.

To deploy the documentation, use the following command:

mkdocs build

The documentation is then built as a static site in a directory called site.

The Insiders-only features will be here ignored but available in the public build on the SPM website.

To deactivate the virtual environment when you finished working, use:

deactivate

MkDocs plugins currently used:

  • mkdocs-bibtex: a plugin for citation management using bibtex
  • MkDocs Video: a plugin to embed videos in the documentation pages

🦁 Style guide

1. Language

Use British English.

2. Code

Format any code included in the documentation as code blocks.

Raw text:

```matlab

code

```

Display text:

code

Format any file names, paths, functions, input variables, etc. as in-line code.

Raw text: `code`

Display text: code

3. Abbreviations

All abbreviations should be defined alphabetically in addons/abbreviations.md in the following format:

*[BOLD]: Blood Oxygen Level Dependent 

To use the abbreviations file on the page you’re creating, add the below at the end of your markdown file:

--8<-- "addons/abbreviations.md"

4. Images

Illustrations should be saved as PNG or SVG files in the docs/assets/figures/ directory. OptiPNG should be applied on PNG files before commit.

To display images with captions, use:

<figuremarkdown>
![Image title](../../../assets/figures/image.png){ width="300" }
<figcaption>Image caption</figcaption></figure>

Videos should be saved as MP4 in the docs/assets/videos/ directory. Videos encoded in other formats can be converted to MP4 with FFmpeg.

5. Information boxes

Additional information can be highlighted using information boxes.

Boxes can be expanded:

!!! tip “Title of your box”
Text of your box

Or collapsible:

??? tip "Title of your box"
Text of your box

Use expanded boxes for crucial succinct information. For anything additional or lengthy, use collapsible boxes.

Various icons and colour-coding are available, please use:

  • tip for top tips on SPM things
  • info for core information not covered in the main text
  • note for additional non-essential information
  • failure for help on troubleshooting

Full list of icons is available here.

6. Symbols

A selection of symbols can be used. Currently used:

  • ++return++ enter/return key
  • :material-arrow-right-bold: right facing arrow
  • :material-play: play icon

Full list of symbols is available here.

🐛 Testing

🛠️ Build

The documentation is built using GitHub Action after each commit in the main branch with the non-Insiders version of Material for MkDocs.

📝 Spelling

codespell

Detect common misspellings with codespell.

To run codespell interactively on the SPM documentation, use:

codespell -w -i 1 docs

PySpelling

To run PySpelling on the SPM documentation, use:

# Run PySpelling using the default spell checker, Aspell
pyspelling
# Run PySpelling using the Hunspell spell checker
pyspelling --spellchecker hunspell

⛓️ Links Check

markdown-link-check

A GitHub Action checks all Markdown files for broken links (using markdown-link-check).

🧊 Linting

markdownlint

To run markdownlint-cli, a command line interface to markdownlint, use:

markdownlint "docs/**/*.md"

Note that only MkDocs build and codespell will potentially fail during continuous integration on GitHub Actions. The other reports are only advisory, for your perusal.

🥂 Contributing

Contributions are most welcome and appreciated! See the First Contributions project for instructions.

  1. GitHub repository: Report issues, make feature requests or open pull requests.
  2. SPM@JiscMail: Open mailing list for discussion and questions about SPM.

🎀 License

The SPM Documentation is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, see LICENSE or visit http://creativecommons.org/licenses/by-sa/4.0/.

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

📔 SPM Documentation 👋

SPM: docsLicense: CC-BY-SA-4.0TestsTestsTestsTests

This repository contains the documentation of the SPM software. It is built using Material for MkDocs, a theme for the static site generator MkDocs.

All the features of Material for MkDocs are described in its reference documentation. We are sponsoring the project and therefore have access to all of the Insiders features.

⚠️ This repository contains all the files used to generate the SPM documentation. This is therefore the place to make some edits and modifications to the documentation. If you only want to read the documentation, please have a look here.

⛷️ Getting started

📑 File layout

MkDocs is configured using the mkdocs.yml file at the root of the Git repository.

The mkdocs.yml file defines the top level navigation for the site. The nav configuration setting in this file defines which pages are included in the global site navigation menu as well as the structure of that menu.

See MkDocs documentation for more details.

🆒 Markdown syntax

MkDocs pages are written using the Markdown syntax.

MkDocs natively supports Markdown extensions that enhance the Markdown writing experience. Plugins, built-in or third-party, are extensions to the MkDocs framework which allow users to add custom functionality and features to their MkDocs projects. These plugins can be used to add additional features such as search or analytics.

See MkDocs documentation for more details, and best-of-mkdocs for a curated list of plugins.

To edit Markdown documents, we recommend Visual Studio Code with its preview mode. If you want to make a quick change, navigate on GitHub to the page of the file you wish to modify (or click on the Edit this page icon) and press the . key: it will open a VS Code environment directly in your browser.

💻 Installation

If you want to edit and build the documentation yourself, you first need to clone or download the repository:

git clone git@github.com:spm/spm-docs.git

Then create a virtual environment for Python and install Material for MkDocs and its dependencies:

python3 -m venv venv
source venv/bin/activate
pip install --requirement requirements.txt

On Windows, install Python from the Microsoft Store then type the following in a Command Prompt or PowerShell window:

python3 -m venv venv
.\venv\Scripts\activate
pip install --requirement requirements.txt

Still on Windows, if you have issues with the above commands due to restrictions on your system, please run the following after creating the virtual environment:

Powershell.exe -NoProfile -ExecutionPolicy Bypass -File <the full path of the activate.ps1 file>

You can preview the documentation as you work on it thanks to a built-in web server. When you are in the same directory as the mkdocs.yml configuration file, start the server with the command:

mkdocs serve

You can then browse the documentation in your web browser at http://127.0.0.1:8000/. Each time a change is made, the documentation is rebuilt and the page auto-reloaded.

To deploy the documentation, use the following command:

mkdocs build

The documentation is then built as a static site in a directory called site.

The Insiders-only features will be here ignored but available in the public build on the SPM website.

To deactivate the virtual environment when you finished working, use:

deactivate

MkDocs plugins currently used:

  • mkdocs-bibtex: a plugin for citation management using bibtex
  • MkDocs Video: a plugin to embed videos in the documentation pages

🦁 Style guide

1. Language

Use British English.

2. Code

Format any code included in the documentation as code blocks.

Raw text:

```matlab

code

```

Display text:

code

Format any file names, paths, functions, input variables, etc. as in-line code.

Raw text: `code`

Display text: code

3. Abbreviations

All abbreviations should be defined alphabetically in addons/abbreviations.md in the following format:

*[BOLD]: Blood Oxygen Level Dependent 

To use the abbreviations file on the page you’re creating, add the below at the end of your markdown file:

--8<-- "addons/abbreviations.md"

4. Images

Illustrations should be saved as PNG or SVG files in the docs/assets/figures/ directory. OptiPNG should be applied on PNG files before commit.

To display images with captions, use:

<figuremarkdown>
![Image title](../../../assets/figures/image.png){ width="300" }
<figcaption>Image caption</figcaption></figure>

Videos should be saved as MP4 in the docs/assets/videos/ directory. Videos encoded in other formats can be converted to MP4 with FFmpeg.

5. Information boxes

Additional information can be highlighted using information boxes.

Boxes can be expanded:

!!! tip “Title of your box”
Text of your box

Or collapsible:

??? tip "Title of your box"
Text of your box

Use expanded boxes for crucial succinct information. For anything additional or lengthy, use collapsible boxes.

Various icons and colour-coding are available, please use:

  • tip for top tips on SPM things
  • info for core information not covered in the main text
  • note for additional non-essential information
  • failure for help on troubleshooting

Full list of icons is available here.

6. Symbols

A selection of symbols can be used. Currently used:

  • ++return++ enter/return key
  • :material-arrow-right-bold: right facing arrow
  • :material-play: play icon

Full list of symbols is available here.

🐛 Testing

🛠️ Build

The documentation is built using GitHub Action after each commit in the main branch with the non-Insiders version of Material for MkDocs.

📝 Spelling

codespell

Detect common misspellings with codespell.

To run codespell interactively on the SPM documentation, use:

codespell -w -i 1 docs

PySpelling

To run PySpelling on the SPM documentation, use:

# Run PySpelling using the default spell checker, Aspell
pyspelling
# Run PySpelling using the Hunspell spell checker
pyspelling --spellchecker hunspell

⛓️ Links Check

markdown-link-check

A GitHub Action checks all Markdown files for broken links (using markdown-link-check).

🧊 Linting

markdownlint

To run markdownlint-cli, a command line interface to markdownlint, use:

markdownlint "docs/**/*.md"

Note that only MkDocs build and codespell will potentially fail during continuous integration on GitHub Actions. The other reports are only advisory, for your perusal.

🥂 Contributing

Contributions are most welcome and appreciated! See the First Contributions project for instructions.

  1. GitHub repository: Report issues, make feature requests or open pull requests.
  2. SPM@JiscMail: Open mailing list for discussion and questions about SPM.

🎀 License

The SPM Documentation is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, see LICENSE or visit http://creativecommons.org/licenses/by-sa/4.0/.

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

📔 SPM Documentation 👋

SPM: docsLicense: CC-BY-SA-4.0TestsTestsTestsTests

This repository contains the documentation of the SPM software. It is built using Material for MkDocs, a theme for the static site generator MkDocs.

All the features of Material for MkDocs are described in its reference documentation. We are sponsoring the project and therefore have access to all of the Insiders features.

⚠️ This repository contains all the files used to generate the SPM documentation. This is therefore the place to make some edits and modifications to the documentation. If you only want to read the documentation, please have a look here.

⛷️ Getting started

📑 File layout

MkDocs is configured using the mkdocs.yml file at the root of the Git repository.

The mkdocs.yml file defines the top level navigation for the site. The nav configuration setting in this file defines which pages are included in the global site navigation menu as well as the structure of that menu.

See MkDocs documentation for more details.

🆒 Markdown syntax

MkDocs pages are written using the Markdown syntax.

MkDocs natively supports Markdown extensions that enhance the Markdown writing experience. Plugins, built-in or third-party, are extensions to the MkDocs framework which allow users to add custom functionality and features to their MkDocs projects. These plugins can be used to add additional features such as search or analytics.

See MkDocs documentation for more details, and best-of-mkdocs for a curated list of plugins.

To edit Markdown documents, we recommend Visual Studio Code with its preview mode. If you want to make a quick change, navigate on GitHub to the page of the file you wish to modify (or click on the Edit this page icon) and press the . key: it will open a VS Code environment directly in your browser.

💻 Installation

If you want to edit and build the documentation yourself, you first need to clone or download the repository:

git clone git@github.com:spm/spm-docs.git

Then create a virtual environment for Python and install Material for MkDocs and its dependencies:

python3 -m venv venv
source venv/bin/activate
pip install --requirement requirements.txt

On Windows, install Python from the Microsoft Store then type the following in a Command Prompt or PowerShell window:

python3 -m venv venv
.\venv\Scripts\activate
pip install --requirement requirements.txt

Still on Windows, if you have issues with the above commands due to restrictions on your system, please run the following after creating the virtual environment:

Powershell.exe -NoProfile -ExecutionPolicy Bypass -File <the full path of the activate.ps1 file>

You can preview the documentation as you work on it thanks to a built-in web server. When you are in the same directory as the mkdocs.yml configuration file, start the server with the command:

mkdocs serve

You can then browse the documentation in your web browser at http://127.0.0.1:8000/. Each time a change is made, the documentation is rebuilt and the page auto-reloaded.

To deploy the documentation, use the following command:

mkdocs build

The documentation is then built as a static site in a directory called site.

The Insiders-only features will be here ignored but available in the public build on the SPM website.

To deactivate the virtual environment when you finished working, use:

deactivate

MkDocs plugins currently used:

  • mkdocs-bibtex: a plugin for citation management using bibtex
  • MkDocs Video: a plugin to embed videos in the documentation pages

🦁 Style guide

1. Language

Use British English.

2. Code

Format any code included in the documentation as code blocks.

Raw text:

```matlab

code

```

Display text:

code

Format any file names, paths, functions, input variables, etc. as in-line code.

Raw text: `code`

Display text: code

3. Abbreviations

All abbreviations should be defined alphabetically in addons/abbreviations.md in the following format:

*[BOLD]: Blood Oxygen Level Dependent 

To use the abbreviations file on the page you’re creating, add the below at the end of your markdown file:

--8<-- "addons/abbreviations.md"

4. Images

Illustrations should be saved as PNG or SVG files in the docs/assets/figures/ directory. OptiPNG should be applied on PNG files before commit.

To display images with captions, use:

<figuremarkdown>
![Image title](../../../assets/figures/image.png){ width="300" }
<figcaption>Image caption</figcaption></figure>

Videos should be saved as MP4 in the docs/assets/videos/ directory. Videos encoded in other formats can be converted to MP4 with FFmpeg.

5. Information boxes

Additional information can be highlighted using information boxes.

Boxes can be expanded:

!!! tip “Title of your box”
Text of your box

Or collapsible:

??? tip "Title of your box"
Text of your box

Use expanded boxes for crucial succinct information. For anything additional or lengthy, use collapsible boxes.

Various icons and colour-coding are available, please use:

  • tip for top tips on SPM things
  • info for core information not covered in the main text
  • note for additional non-essential information
  • failure for help on troubleshooting

Full list of icons is available here.

6. Symbols

A selection of symbols can be used. Currently used:

  • ++return++ enter/return key
  • :material-arrow-right-bold: right facing arrow
  • :material-play: play icon

Full list of symbols is available here.

🐛 Testing

🛠️ Build

The documentation is built using GitHub Action after each commit in the main branch with the non-Insiders version of Material for MkDocs.

📝 Spelling

codespell

Detect common misspellings with codespell.

To run codespell interactively on the SPM documentation, use:

codespell -w -i 1 docs

PySpelling

To run PySpelling on the SPM documentation, use:

# Run PySpelling using the default spell checker, Aspell
pyspelling
# Run PySpelling using the Hunspell spell checker
pyspelling --spellchecker hunspell

⛓️ Links Check

markdown-link-check

A GitHub Action checks all Markdown files for broken links (using markdown-link-check).

🧊 Linting

markdownlint

To run markdownlint-cli, a command line interface to markdownlint, use:

markdownlint "docs/**/*.md"

Note that only MkDocs build and codespell will potentially fail during continuous integration on GitHub Actions. The other reports are only advisory, for your perusal.

🥂 Contributing

Contributions are most welcome and appreciated! See the First Contributions project for instructions.

  1. GitHub repository: Report issues, make feature requests or open pull requests.
  2. SPM@JiscMail: Open mailing list for discussion and questions about SPM.

🎀 License

The SPM Documentation is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, see LICENSE or visit http://creativecommons.org/licenses/by-sa/4.0/.

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

📔 SPM Documentation 👋

SPM: docsLicense: CC-BY-SA-4.0TestsTestsTestsTests

This repository contains the documentation of the SPM software. It is built using Material for MkDocs, a theme for the static site generator MkDocs.

All the features of Material for MkDocs are described in its reference documentation. We are sponsoring the project and therefore have access to all of the Insiders features.

⚠️ This repository contains all the files used to generate the SPM documentation. This is therefore the place to make some edits and modifications to the documentation. If you only want to read the documentation, please have a look here.

⛷️ Getting started

📑 File layout

MkDocs is configured using the mkdocs.yml file at the root of the Git repository.

The mkdocs.yml file defines the top level navigation for the site. The nav configuration setting in this file defines which pages are included in the global site navigation menu as well as the structure of that menu.

See MkDocs documentation for more details.

🆒 Markdown syntax

MkDocs pages are written using the Markdown syntax.

MkDocs natively supports Markdown extensions that enhance the Markdown writing experience. Plugins, built-in or third-party, are extensions to the MkDocs framework which allow users to add custom functionality and features to their MkDocs projects. These plugins can be used to add additional features such as search or analytics.

See MkDocs documentation for more details, and best-of-mkdocs for a curated list of plugins.

To edit Markdown documents, we recommend Visual Studio Code with its preview mode. If you want to make a quick change, navigate on GitHub to the page of the file you wish to modify (or click on the Edit this page icon) and press the . key: it will open a VS Code environment directly in your browser.

💻 Installation

If you want to edit and build the documentation yourself, you first need to clone or download the repository:

git clone git@github.com:spm/spm-docs.git

Then create a virtual environment for Python and install Material for MkDocs and its dependencies:

python3 -m venv venv
source venv/bin/activate
pip install --requirement requirements.txt

On Windows, install Python from the Microsoft Store then type the following in a Command Prompt or PowerShell window:

python3 -m venv venv
.\venv\Scripts\activate
pip install --requirement requirements.txt

Still on Windows, if you have issues with the above commands due to restrictions on your system, please run the following after creating the virtual environment:

Powershell.exe -NoProfile -ExecutionPolicy Bypass -File <the full path of the activate.ps1 file>

You can preview the documentation as you work on it thanks to a built-in web server. When you are in the same directory as the mkdocs.yml configuration file, start the server with the command:

mkdocs serve

You can then browse the documentation in your web browser at http://127.0.0.1:8000/. Each time a change is made, the documentation is rebuilt and the page auto-reloaded.

To deploy the documentation, use the following command:

mkdocs build

The documentation is then built as a static site in a directory called site.

The Insiders-only features will be here ignored but available in the public build on the SPM website.

To deactivate the virtual environment when you finished working, use:

deactivate

MkDocs plugins currently used:

  • mkdocs-bibtex: a plugin for citation management using bibtex
  • MkDocs Video: a plugin to embed videos in the documentation pages

🦁 Style guide

1. Language

Use British English.

2. Code

Format any code included in the documentation as code blocks.

Raw text:

```matlab

code

```

Display text:

code

Format any file names, paths, functions, input variables, etc. as in-line code.

Raw text: `code`

Display text: code

3. Abbreviations

All abbreviations should be defined alphabetically in addons/abbreviations.md in the following format:

*[BOLD]: Blood Oxygen Level Dependent 

To use the abbreviations file on the page you’re creating, add the below at the end of your markdown file:

--8<-- "addons/abbreviations.md"

4. Images

Illustrations should be saved as PNG or SVG files in the docs/assets/figures/ directory. OptiPNG should be applied on PNG files before commit.

To display images with captions, use:

<figuremarkdown>
![Image title](../../../assets/figures/image.png){ width="300" }
<figcaption>Image caption</figcaption></figure>

Videos should be saved as MP4 in the docs/assets/videos/ directory. Videos encoded in other formats can be converted to MP4 with FFmpeg.

5. Information boxes

Additional information can be highlighted using information boxes.

Boxes can be expanded:

!!! tip “Title of your box”
Text of your box

Or collapsible:

??? tip "Title of your box"
Text of your box

Use expanded boxes for crucial succinct information. For anything additional or lengthy, use collapsible boxes.

Various icons and colour-coding are available, please use:

  • tip for top tips on SPM things
  • info for core information not covered in the main text
  • note for additional non-essential information
  • failure for help on troubleshooting

Full list of icons is available here.

6. Symbols

A selection of symbols can be used. Currently used:

  • ++return++ enter/return key
  • :material-arrow-right-bold: right facing arrow
  • :material-play: play icon

Full list of symbols is available here.

🐛 Testing

🛠️ Build

The documentation is built using GitHub Action after each commit in the main branch with the non-Insiders version of Material for MkDocs.

📝 Spelling

codespell

Detect common misspellings with codespell.

To run codespell interactively on the SPM documentation, use:

codespell -w -i 1 docs

PySpelling

To run PySpelling on the SPM documentation, use:

# Run PySpelling using the default spell checker, Aspell
pyspelling
# Run PySpelling using the Hunspell spell checker
pyspelling --spellchecker hunspell

⛓️ Links Check

markdown-link-check

A GitHub Action checks all Markdown files for broken links (using markdown-link-check).

🧊 Linting

markdownlint

To run markdownlint-cli, a command line interface to markdownlint, use:

markdownlint "docs/**/*.md"

Note that only MkDocs build and codespell will potentially fail during continuous integration on GitHub Actions. The other reports are only advisory, for your perusal.

🥂 Contributing

Contributions are most welcome and appreciated! See the First Contributions project for instructions.

  1. GitHub repository: Report issues, make feature requests or open pull requests.
  2. SPM@JiscMail: Open mailing list for discussion and questions about SPM.

🎀 License

The SPM Documentation is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, see LICENSE or visit http://creativecommons.org/licenses/by-sa/4.0/.

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

📔 SPM Documentation 👋

SPM: docsLicense: CC-BY-SA-4.0TestsTestsTestsTests

This repository contains the documentation of the SPM software. It is built using Material for MkDocs, a theme for the static site generator MkDocs.

All the features of Material for MkDocs are described in its reference documentation. We are sponsoring the project and therefore have access to all of the Insiders features.

⚠️ This repository contains all the files used to generate the SPM documentation. This is therefore the place to make some edits and modifications to the documentation. If you only want to read the documentation, please have a look here.

⛷️ Getting started

📑 File layout

MkDocs is configured using the mkdocs.yml file at the root of the Git repository.

The mkdocs.yml file defines the top level navigation for the site. The nav configuration setting in this file defines which pages are included in the global site navigation menu as well as the structure of that menu.

See MkDocs documentation for more details.

🆒 Markdown syntax

MkDocs pages are written using the Markdown syntax.

MkDocs natively supports Markdown extensions that enhance the Markdown writing experience. Plugins, built-in or third-party, are extensions to the MkDocs framework which allow users to add custom functionality and features to their MkDocs projects. These plugins can be used to add additional features such as search or analytics.

See MkDocs documentation for more details, and best-of-mkdocs for a curated list of plugins.

To edit Markdown documents, we recommend Visual Studio Code with its preview mode. If you want to make a quick change, navigate on GitHub to the page of the file you wish to modify (or click on the Edit this page icon) and press the . key: it will open a VS Code environment directly in your browser.

💻 Installation

If you want to edit and build the documentation yourself, you first need to clone or download the repository:

git clone git@github.com:spm/spm-docs.git

Then create a virtual environment for Python and install Material for MkDocs and its dependencies:

python3 -m venv venv
source venv/bin/activate
pip install --requirement requirements.txt

On Windows, install Python from the Microsoft Store then type the following in a Command Prompt or PowerShell window:

python3 -m venv venv
.\venv\Scripts\activate
pip install --requirement requirements.txt

Still on Windows, if you have issues with the above commands due to restrictions on your system, please run the following after creating the virtual environment:

Powershell.exe -NoProfile -ExecutionPolicy Bypass -File <the full path of the activate.ps1 file>

You can preview the documentation as you work on it thanks to a built-in web server. When you are in the same directory as the mkdocs.yml configuration file, start the server with the command:

mkdocs serve

You can then browse the documentation in your web browser at http://127.0.0.1:8000/. Each time a change is made, the documentation is rebuilt and the page auto-reloaded.

To deploy the documentation, use the following command:

mkdocs build

The documentation is then built as a static site in a directory called site.

The Insiders-only features will be here ignored but available in the public build on the SPM website.

To deactivate the virtual environment when you finished working, use:

deactivate

MkDocs plugins currently used:

  • mkdocs-bibtex: a plugin for citation management using bibtex
  • MkDocs Video: a plugin to embed videos in the documentation pages

🦁 Style guide

1. Language

Use British English.

2. Code

Format any code included in the documentation as code blocks.

Raw text:

```matlab

code

```

Display text:

code

Format any file names, paths, functions, input variables, etc. as in-line code.

Raw text: `code`

Display text: code

3. Abbreviations

All abbreviations should be defined alphabetically in addons/abbreviations.md in the following format:

*[BOLD]: Blood Oxygen Level Dependent 

To use the abbreviations file on the page you’re creating, add the below at the end of your markdown file:

--8<-- "addons/abbreviations.md"

4. Images

Illustrations should be saved as PNG or SVG files in the docs/assets/figures/ directory. OptiPNG should be applied on PNG files before commit.

To display images with captions, use:

<figuremarkdown>
![Image title](../../../assets/figures/image.png){ width="300" }
<figcaption>Image caption</figcaption></figure>

Videos should be saved as MP4 in the docs/assets/videos/ directory. Videos encoded in other formats can be converted to MP4 with FFmpeg.

5. Information boxes

Additional information can be highlighted using information boxes.

Boxes can be expanded:

!!! tip “Title of your box”
Text of your box

Or collapsible:

??? tip "Title of your box"
Text of your box

Use expanded boxes for crucial succinct information. For anything additional or lengthy, use collapsible boxes.

Various icons and colour-coding are available, please use:

  • tip for top tips on SPM things
  • info for core information not covered in the main text
  • note for additional non-essential information
  • failure for help on troubleshooting

Full list of icons is available here.

6. Symbols

A selection of symbols can be used. Currently used:

  • ++return++ enter/return key
  • :material-arrow-right-bold: right facing arrow
  • :material-play: play icon

Full list of symbols is available here.

🐛 Testing

🛠️ Build

The documentation is built using GitHub Action after each commit in the main branch with the non-Insiders version of Material for MkDocs.

📝 Spelling

codespell

Detect common misspellings with codespell.

To run codespell interactively on the SPM documentation, use:

codespell -w -i 1 docs

PySpelling

To run PySpelling on the SPM documentation, use:

# Run PySpelling using the default spell checker, Aspell
pyspelling
# Run PySpelling using the Hunspell spell checker
pyspelling --spellchecker hunspell

⛓️ Links Check

markdown-link-check

A GitHub Action checks all Markdown files for broken links (using markdown-link-check).

🧊 Linting

markdownlint

To run markdownlint-cli, a command line interface to markdownlint, use:

markdownlint "docs/**/*.md"

Note that only MkDocs build and codespell will potentially fail during continuous integration on GitHub Actions. The other reports are only advisory, for your perusal.

🥂 Contributing

Contributions are most welcome and appreciated! See the First Contributions project for instructions.

  1. GitHub repository: Report issues, make feature requests or open pull requests.
  2. SPM@JiscMail: Open mailing list for discussion and questions about SPM.

🎀 License

The SPM Documentation is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, see LICENSE or visit http://creativecommons.org/licenses/by-sa/4.0/.

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

📔 SPM Documentation 👋

SPM: docsLicense: CC-BY-SA-4.0TestsTestsTestsTests

This repository contains the documentation of the SPM software. It is built using Material for MkDocs, a theme for the static site generator MkDocs.

All the features of Material for MkDocs are described in its reference documentation. We are sponsoring the project and therefore have access to all of the Insiders features.

⚠️ This repository contains all the files used to generate the SPM documentation. This is therefore the place to make some edits and modifications to the documentation. If you only want to read the documentation, please have a look here.

⛷️ Getting started

📑 File layout

MkDocs is configured using the mkdocs.yml file at the root of the Git repository.

The mkdocs.yml file defines the top level navigation for the site. The nav configuration setting in this file defines which pages are included in the global site navigation menu as well as the structure of that menu.

See MkDocs documentation for more details.

🆒 Markdown syntax

MkDocs pages are written using the Markdown syntax.

MkDocs natively supports Markdown extensions that enhance the Markdown writing experience. Plugins, built-in or third-party, are extensions to the MkDocs framework which allow users to add custom functionality and features to their MkDocs projects. These plugins can be used to add additional features such as search or analytics.

See MkDocs documentation for more details, and best-of-mkdocs for a curated list of plugins.

To edit Markdown documents, we recommend Visual Studio Code with its preview mode. If you want to make a quick change, navigate on GitHub to the page of the file you wish to modify (or click on the Edit this page icon) and press the . key: it will open a VS Code environment directly in your browser.

💻 Installation

If you want to edit and build the documentation yourself, you first need to clone or download the repository:

git clone git@github.com:spm/spm-docs.git

Then create a virtual environment for Python and install Material for MkDocs and its dependencies:

python3 -m venv venv
source venv/bin/activate
pip install --requirement requirements.txt

On Windows, install Python from the Microsoft Store then type the following in a Command Prompt or PowerShell window:

python3 -m venv venv
.\venv\Scripts\activate
pip install --requirement requirements.txt

Still on Windows, if you have issues with the above commands due to restrictions on your system, please run the following after creating the virtual environment:

Powershell.exe -NoProfile -ExecutionPolicy Bypass -File <the full path of the activate.ps1 file>

You can preview the documentation as you work on it thanks to a built-in web server. When you are in the same directory as the mkdocs.yml configuration file, start the server with the command:

mkdocs serve

You can then browse the documentation in your web browser at http://127.0.0.1:8000/. Each time a change is made, the documentation is rebuilt and the page auto-reloaded.

To deploy the documentation, use the following command:

mkdocs build

The documentation is then built as a static site in a directory called site.

The Insiders-only features will be here ignored but available in the public build on the SPM website.

To deactivate the virtual environment when you finished working, use:

deactivate

MkDocs plugins currently used:

  • mkdocs-bibtex: a plugin for citation management using bibtex
  • MkDocs Video: a plugin to embed videos in the documentation pages

🦁 Style guide

1. Language

Use British English.

2. Code

Format any code included in the documentation as code blocks.

Raw text:

```matlab

code

```

Display text:

code

Format any file names, paths, functions, input variables, etc. as in-line code.

Raw text: `code`

Display text: code

3. Abbreviations

All abbreviations should be defined alphabetically in addons/abbreviations.md in the following format:

*[BOLD]: Blood Oxygen Level Dependent 

To use the abbreviations file on the page you’re creating, add the below at the end of your markdown file:

--8<-- "addons/abbreviations.md"

4. Images

Illustrations should be saved as PNG or SVG files in the docs/assets/figures/ directory. OptiPNG should be applied on PNG files before commit.

To display images with captions, use:

<figuremarkdown>
![Image title](../../../assets/figures/image.png){ width="300" }
<figcaption>Image caption</figcaption></figure>

Videos should be saved as MP4 in the docs/assets/videos/ directory. Videos encoded in other formats can be converted to MP4 with FFmpeg.

5. Information boxes

Additional information can be highlighted using information boxes.

Boxes can be expanded:

!!! tip “Title of your box”
Text of your box

Or collapsible:

??? tip "Title of your box"
Text of your box

Use expanded boxes for crucial succinct information. For anything additional or lengthy, use collapsible boxes.

Various icons and colour-coding are available, please use:

  • tip for top tips on SPM things
  • info for core information not covered in the main text
  • note for additional non-essential information
  • failure for help on troubleshooting

Full list of icons is available here.

6. Symbols

A selection of symbols can be used. Currently used:

  • ++return++ enter/return key
  • :material-arrow-right-bold: right facing arrow
  • :material-play: play icon

Full list of symbols is available here.

🐛 Testing

🛠️ Build

The documentation is built using GitHub Action after each commit in the main branch with the non-Insiders version of Material for MkDocs.

📝 Spelling

codespell

Detect common misspellings with codespell.

To run codespell interactively on the SPM documentation, use:

codespell -w -i 1 docs

PySpelling

To run PySpelling on the SPM documentation, use:

# Run PySpelling using the default spell checker, Aspell
pyspelling
# Run PySpelling using the Hunspell spell checker
pyspelling --spellchecker hunspell

⛓️ Links Check

markdown-link-check

A GitHub Action checks all Markdown files for broken links (using markdown-link-check).

🧊 Linting

markdownlint

To run markdownlint-cli, a command line interface to markdownlint, use:

markdownlint "docs/**/*.md"

Note that only MkDocs build and codespell will potentially fail during continuous integration on GitHub Actions. The other reports are only advisory, for your perusal.

🥂 Contributing

Contributions are most welcome and appreciated! See the First Contributions project for instructions.

  1. GitHub repository: Report issues, make feature requests or open pull requests.
  2. SPM@JiscMail: Open mailing list for discussion and questions about SPM.

🎀 License

The SPM Documentation is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, see LICENSE or visit http://creativecommons.org/licenses/by-sa/4.0/.

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

📔 SPM Documentation 👋

SPM: docsLicense: CC-BY-SA-4.0TestsTestsTestsTests

This repository contains the documentation of the SPM software. It is built using Material for MkDocs, a theme for the static site generator MkDocs.

All the features of Material for MkDocs are described in its reference documentation. We are sponsoring the project and therefore have access to all of the Insiders features.

⚠️ This repository contains all the files used to generate the SPM documentation. This is therefore the place to make some edits and modifications to the documentation. If you only want to read the documentation, please have a look here.

⛷️ Getting started

📑 File layout

MkDocs is configured using the mkdocs.yml file at the root of the Git repository.

The mkdocs.yml file defines the top level navigation for the site. The nav configuration setting in this file defines which pages are included in the global site navigation menu as well as the structure of that menu.

See MkDocs documentation for more details.

🆒 Markdown syntax

MkDocs pages are written using the Markdown syntax.

MkDocs natively supports Markdown extensions that enhance the Markdown writing experience. Plugins, built-in or third-party, are extensions to the MkDocs framework which allow users to add custom functionality and features to their MkDocs projects. These plugins can be used to add additional features such as search or analytics.

See MkDocs documentation for more details, and best-of-mkdocs for a curated list of plugins.

To edit Markdown documents, we recommend Visual Studio Code with its preview mode. If you want to make a quick change, navigate on GitHub to the page of the file you wish to modify (or click on the Edit this page icon) and press the . key: it will open a VS Code environment directly in your browser.

💻 Installation

If you want to edit and build the documentation yourself, you first need to clone or download the repository:

git clone git@github.com:spm/spm-docs.git

Then create a virtual environment for Python and install Material for MkDocs and its dependencies:

python3 -m venv venv
source venv/bin/activate
pip install --requirement requirements.txt

On Windows, install Python from the Microsoft Store then type the following in a Command Prompt or PowerShell window:

python3 -m venv venv
.\venv\Scripts\activate
pip install --requirement requirements.txt

Still on Windows, if you have issues with the above commands due to restrictions on your system, please run the following after creating the virtual environment:

Powershell.exe -NoProfile -ExecutionPolicy Bypass -File <the full path of the activate.ps1 file>

You can preview the documentation as you work on it thanks to a built-in web server. When you are in the same directory as the mkdocs.yml configuration file, start the server with the command:

mkdocs serve

You can then browse the documentation in your web browser at http://127.0.0.1:8000/. Each time a change is made, the documentation is rebuilt and the page auto-reloaded.

To deploy the documentation, use the following command:

mkdocs build

The documentation is then built as a static site in a directory called site.

The Insiders-only features will be here ignored but available in the public build on the SPM website.

To deactivate the virtual environment when you finished working, use:

deactivate

MkDocs plugins currently used:

  • mkdocs-bibtex: a plugin for citation management using bibtex
  • MkDocs Video: a plugin to embed videos in the documentation pages

🦁 Style guide

1. Language

Use British English.

2. Code

Format any code included in the documentation as code blocks.

Raw text:

```matlab

code

```

Display text:

code

Format any file names, paths, functions, input variables, etc. as in-line code.

Raw text: `code`

Display text: code

3. Abbreviations

All abbreviations should be defined alphabetically in addons/abbreviations.md in the following format:

*[BOLD]: Blood Oxygen Level Dependent 

To use the abbreviations file on the page you’re creating, add the below at the end of your markdown file:

--8<-- "addons/abbreviations.md"

4. Images

Illustrations should be saved as PNG or SVG files in the docs/assets/figures/ directory. OptiPNG should be applied on PNG files before commit.

To display images with captions, use:

<figuremarkdown>
![Image title](../../../assets/figures/image.png){ width="300" }
<figcaption>Image caption</figcaption></figure>

Videos should be saved as MP4 in the docs/assets/videos/ directory. Videos encoded in other formats can be converted to MP4 with FFmpeg.

5. Information boxes

Additional information can be highlighted using information boxes.

Boxes can be expanded:

!!! tip “Title of your box”
Text of your box

Or collapsible:

??? tip "Title of your box"
Text of your box

Use expanded boxes for crucial succinct information. For anything additional or lengthy, use collapsible boxes.

Various icons and colour-coding are available, please use:

  • tip for top tips on SPM things
  • info for core information not covered in the main text
  • note for additional non-essential information
  • failure for help on troubleshooting

Full list of icons is available here.

6. Symbols

A selection of symbols can be used. Currently used:

  • ++return++ enter/return key
  • :material-arrow-right-bold: right facing arrow
  • :material-play: play icon

Full list of symbols is available here.

🐛 Testing

🛠️ Build

The documentation is built using GitHub Action after each commit in the main branch with the non-Insiders version of Material for MkDocs.

📝 Spelling

codespell

Detect common misspellings with codespell.

To run codespell interactively on the SPM documentation, use:

codespell -w -i 1 docs

PySpelling

To run PySpelling on the SPM documentation, use:

# Run PySpelling using the default spell checker, Aspell
pyspelling
# Run PySpelling using the Hunspell spell checker
pyspelling --spellchecker hunspell

⛓️ Links Check

markdown-link-check

A GitHub Action checks all Markdown files for broken links (using markdown-link-check).

🧊 Linting

markdownlint

To run markdownlint-cli, a command line interface to markdownlint, use:

markdownlint "docs/**/*.md"

Note that only MkDocs build and codespell will potentially fail during continuous integration on GitHub Actions. The other reports are only advisory, for your perusal.

🥂 Contributing

Contributions are most welcome and appreciated! See the First Contributions project for instructions.

  1. GitHub repository: Report issues, make feature requests or open pull requests.
  2. SPM@JiscMail: Open mailing list for discussion and questions about SPM.

🎀 License

The SPM Documentation is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, see LICENSE or visit http://creativecommons.org/licenses/by-sa/4.0/.

Used by

Contributors