Quarto

Miquel Perello Nieto

University of Bristol

Gentle reminder of the publishing workflow

---
Publishing workflow
---
%%{ init : { "theme" : "neutral", "flowchart" : { "curve" : "stepBefore" }}}%%
flowchart LR
  
    E1("(1)\nExternal resources"):::external -.-> A1
    A1{{"(2)\nAuthoring tool"}} --> I1("(3)\nText + Figures +\nCode + Tables + ..."):::input
    I1 --> P1{{"(4)\nFormatting tool"}}
    P1 --> O1["(5)\nFormatted\nOutput"]:::output
    O1 -.-> D1{{"(6)\nDelivery system"}}:::delivery
    classDef external fill:#eee,stroke:#666,stroke-width:2px,stroke-dasharray: 5 5;
    classDef input fill:#ffa;
    classDef output fill:#faa;
    classDef delivery stroke:#666,stroke-width:2px,stroke-dasharray: 5 5;

Publishing paradigms

The creation of research or academic material usually involves the production of slides, documents, posters and other output formats from the same material. There are different paradigms to create publishing material:

Quarto is a formatting tool

%%{ init : { "theme" : "neutral", "flowchart" : { "curve" : "stepBefore" }}}%%

flowchart LR
  
    E1("External resources"):::external -.-> A1
    A1{{"Authoring tool"}} --> I1("Text + Figures +\nCode + Tables + ..."):::input
    subgraph "Quarto, pdflatex, xelatex, pandoc, ..." 
      direction LR
      I1 --> P1{{"Formatting tool"}}
      P1 --> O1["Formatted\nOutput"]:::output
    end
    classDef external fill:#eee;
    classDef input fill:#ffa;
    classDef output fill:#faa;

Quarto as a Single-In-Multi-Out

%%{ init : { "theme" : "neutral", "flowchart" : { "curve" : "stepBefore" }}}%%

flowchart LR
    I1("(3)\nText + Figures + \n Code + ..."):::input --- dummy2{{"(4) Quarto\nFormatting tool"}}
    dummy2 --> O1["(5a) Published \n Paper \n (PDF)"]
    dummy2 --> O2["(5b) Presentation \n Slides \n (PPTX/PDF)"]
    dummy2 --> O3["(5c) Poster \n (PPTX/PDF)"]
    dummy2 --> O4["(5d) Computational \n Notebook \n (Colab)"]
    classDef input fill:#ffa;
    style O1 fill:#fca
    style O2 fill:#bff
    style O3 fill:#f99
    style O4 fill:#bfb

Installation and usage

  • Get started documentation: quarto.org/docs/get-started/
  • Open-source repository in GitHub: Quarto-cli
  • Create a project with quarto create project
    • Type: default, website, blog, manuscript, book, confluence
  • Build project with quarto render
  • Preview with quarto preview (it autobuilds and updates when changes in the source files are detected).

Authoring for Quarto

%%{ init : { "theme" : "neutral", "flowchart" : { "curve" : "stepBefore" }}}%%
flowchart LR
  
    E1("External resources"):::external -.-> A1
    subgraph "Vim, NeoVim, Notepad" 
      direction LR
      A1{{"Authoring tool"}} --> I1("Text + Code +\nTables + ..."):::input
    end
    I1 --> P1{{"Formatting tool"}}
    P1 --> O1["Formatted\nOutput"]:::output
    classDef external fill:#eee;
    classDef input fill:#ffa;
    classDef output fill:#faa;

Authoring with formatting

%%{ init : { "theme" : "neutral", "flowchart" : { "curve" : "stepBefore" }}}%%
flowchart LR
  
    E1("External resources"):::external -.-> A1
    subgraph "IDE + Quarto, HackMD, Notion, Typst, Overleaf..." 
      direction LR
      A1{{"Authoring tool"}} --> I1("Text + Figures +\nCode + Tables + ..."):::input
      I1 --> P1{{"Formatting tool"}}
      P1 --> O1["Formatted\nOutput"]:::output
    end
    classDef external fill:#eee;
    classDef input fill:#ffa;
    classDef output fill:#faa;

Integrated Development Environments

Then, what is Quarto?

  • Quarto:
  • Quarto supports dynamic content with Python, R, Julia and Observable
  • programming languages.
  • Quarto uses pandoc to convert the input artefacts to its output.
  • Quarto supports plain text markdown, Jupyter notebooks and an augmented
  • markdown,
  • Integration with Posit Connect (former RMarkdown), Atlassian Confluence, Visual Studio,
  • Built with quarto render
  • Has a preview mode quarto preview which autobuilds and updates when changes in the source files are detected.