Skip to main content

Awesome Scientific Writing

Scientific writing can extend beyond LaTeX, made possible by formats, such as Markdown (and its many flavours), reStructuredText and Jupyter notebooks.

🔖 means ability to seamlessly cite references.

🔗 means ability to cross-reference figures and sections within the document.


Word Processors


Reference managers to generate citations, BibTeX, and BibLaTeX files.


Drawing illustrations themselves has driven many a scientist mad. Fortunately, there are formal languages with which one can create beautiful graphics.

  • - Open source, online, desktop and container deployable diagramming software.
  • graphviz - Visualization software for graphs and networks which uses a domain-specific DOT language.
  • Mermaid Live Editor - Define simple diagrams instead of drawing them.
  • Vega Lite - Define charts and more complex diagrams.
  • PlantUML - Define UML diagrams instead of drawing them.

Converters and Filters

Supplementary files and tools.

  • Cicero - Python package which renders HTML presentations from Markdown source using remark or reveal.js 🔗.
  • docutils - Python package which can convert reStructuredText into various formats and provides command-line tools to do it 🔗.
  • Jupyter Book - A static site generator which converts a collection of CommonMark, MyST markdown and Jupyter notebooks into a HTML website.
  • MyST - Markedly Structured Text, a superset of CommonMark markdown with reStructuredText like features.
  • nbconvert - Convert Jupyter notebooks into reveal.js presentations, PDF, HTML, Markdown, reStructuredText and more.
  • pandoc - Haskell library for converting from one markup format to another, and a command-line tool that uses this library 🔖 🔗.
    • Academic Markdown - Python wrapper over Pandoc with specialized extensions to parse certain elements, making it a superset of Pandoc Markdown flavour 🔖 🔗.
    • Pandoc filters - List of addons to pandoc which implement extra features such as citations and cross-references.
    • Panflute - Pythonic alternative to John MacFarlane's pandocfilters.

Spell Checking and Linting


Reusable minimalist examples.


  • Pandoc Markdown-LaTeX Boilerplate - Demonstrate how to integrate Pandoc with an existing LaTeX template which requires some boilerplate code (i.e. LaTeX preamble), thus avoiding the latexmk dependency.
  • scientific-markdown - Example for use of Markdown for scientific publications using Pandoc and latexmk.
  • Steve's R Markdown Templates - Academic manuscript, memos, Beamer presentation, syllabus and CV.


  • pandoc-starter - Templates for articles, Beamer presentations etc. using Markdown files and Makefiles for getting started with Pandoc.
  • slides - Demo for generating reveal.js presentations using Pandoc.



How to generate articles and presentations for scientific purposes.

Other Lists


Contributions welcome! Read the contribution guidelines first.

Contribute to this list: