# Awesome Scientific Writing

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

:bookmark: means ability to seamlessly cite references.

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

## Contents

- Word Processors
- Bibliography
- Illustrations
- Converters and Filters
- Spell Checking and Linting
- Templates
  - Articles
  - Presentations
  - Books
- Tutorials
- Other Lists

## Word Processors

- Marktext - Markdown text editor.
- R Studio - IDE for R.
  - bookdown - R package to facilitate writing books and long-form articles, reports with R Markdown :bookmark: :link:.
  - R Markdown - R package to write R next to Markdown :bookmark: :link:.
- Vim - Command line text editor.
  - fzf-bibtex - BibTeX source with Vim integration which uses fzf (a fuzzy finder implemented in Go).
  - vim-pandoc - Pandoc integration and utilities for Vim.
  - vim-pandoc-syntax - Pandoc syntax highlighting for Vim.
- Visual Studio Code - Popular IDE with Markdown support.
  - Markdown All in One - Extension for enhanced Markdown support in VSCode, such as preview and auto completion to name a few.
  - Markdown Preview Enhanced - Pandoc integration and utilities.
- Zettlr - Markdown editor which integrates CSL, BibLaTeX, Pandoc and many other tools :bookmark: :link:.

## Bibliography

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

- Citation Style Language (CSL) styles - Crowdsourced repository with over 9000 free CSL citation styles and an online editor to create new ones.
- JabRef - Open source bibliography reference manager.
- Zotero - FOSS tool to collect, organize, cite, and share research.
  - Better BibTeX for Zotero - Enhanced BibTeX / BibLaTeX integration for Zotero.
  - ZotFile for Zotero - Enhanced PDF file management for Zotero.
- ZoteroBib - Online bibliography reference manager.

## Illustrations

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

- app.diagrams.net - Open source, online, desktop and container deployable diagramming software named draw.io.
- 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 :link:.
- docutils - Python package which can convert reStructuredText into various formats and provides command-line tools to do it :link:.
- 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 :bookmark: :link:.
  - Academic Markdown - Python wrapper over Pandoc with specialized extensions to parse certain elements, making it a superset of Pandoc Markdown flavour :bookmark: :link:.
  - 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.
- Quarto - Compile R Markdown, and Jupyter Notebooks to PDFs, Slides and Websites. Supports R, Python, and Julia :bookmark: :link:.

## Spell Checking and Linting

- GNU Aspell - Command line spell checker.
- Hunspell - Command line spell checker.
- LanguageTool - Open source grammar, style and spell Checker.
- LanguageCheck - Analyses scientific LaTeX papers, suggesting improvements from a list of common mistakes/ambiguities, tense consistency, a vs. an, spell check, and paragraph topic sentences.
- Markdown lint tool - Markdown linter.
- proselint - Linter for prose.
- remarklint - Markdown linter.
- restructuredtext-lint - reStructuredText linter.
- textlint - Pluggable linting tool for text and Markdown.
- textidote - Spelling, grammar and style checking on LaTeX documents.
- Vale - Free, open-source linter for prose built with speed and extensibility in mind.
- write-good - Naive linter for English prose.

## Templates

Reusable minimalist examples.

### Articles

- 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.

### Presentations

- 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.

### Books

- bookdown-demo - Minimal example of a book based on R Markdown and bookdown.
- Eisvogel - Clean academic pandoc LaTeX template.
- Template for writing a PhD thesis in Markdown - Clean organization of files to provide a framework for writing a PhD thesis in mostly Markdown with a little bit of LaTeX, and compiled with Pandoc.

## Tutorials

How to generate articles and presentations for scientific purposes.

- 3 frameworks into one — Write your next paper with R Studio! - Article provides an overview to a workflow that combines R Markdown (bookdown), Zotero (literature management), and Notion (note taking on research papers) to write academic papers.
- Book on Riemann solvers - This example uses a custom `nbconvert` template and shows how to store your notebooks with no output (for version control) while automatically executing them before running `bookbook`, so that PDF and HTML versions include the output.
- Dennis Tenen and Grant Wythoff - Sustainable Authorship in Plain Text using Pandoc and Markdown.
- Heads up! Quarto is here to stay. Immediately combine R & Python in your next document - Summary of the capabilities of Quarto, why to use it, and how it compares to R Markdown. Also contains tips for M1 Mac users on how to fix a common problem with reticulate.
- Katrin Leinweber’s Ph.D. thesis - Automated work flow involving several tools, but primarily Pandoc, `latexmk` and Academic Markdown.
- Scott Selisker - Plain Text Workflow for Academic Writing with Atom.
- Teaching and learning with Jupyter - Book written in R Markdown, bookdown and also rendered as HTML, PDF and EPUB.
- Write your dissertation in RMarkdown - Step-by-step guide on creating a complex pdf document, including text, figures, references, images, formatting, and more.
- Writing scientific papers for ACPD using Emacs Org-mode - Detailed tutorial on authoring a paper by seamlessly integrating with LaTeX commands within Org-mode.

## Other Lists

- Awesome Jupyter
- Awesome LaTeX
- Awesome Markdown
- Delightful Open Science

### Contribute

Contributions welcome! Read the contribution guidelines first.

scientificwriting.md Github