Nextjournal Editor Basics

In Nextjournal, everything is about notebooks and the Nextjournal editor is the main tool for creating and editing them.

A Nextjournal notebook is composed of nodes of different kinds — each of them providing different functionality. The following video shows how we can combine these nodes to make a notebook that is plotting some uploaded data:

Content Creation and Editing

Nextjournal’s user interface should be fairly familiar if you already used to other notebook interfaces like Mathematica or Jupyter but there might be some gotchas that work differently here.

Adding nodes

The + button located at the bottom of each node brings up a menu with a list of all node kinds that you can insert. Here we see how it’s used to insert a new section:

Pressing Enter inside an empty paragraph will also bring up the same menu, allowing you to turn any empty paragraph into another node kind. This is especially handy if you prefer using the keyboard over the mouse.

Editing existing nodes

Similarily to the + button, the ••• button at the top of each node brings up a list of actions that you can perform on the node. The most basic of them is "Delete" but there are many different actions depending on the node’s kind, like for replacing a file:

Formatting text

In Nextjournal, most text, apart from code, is rich text. This means, whenever you select text (in a paragraph, list, section heading, etc.) a selection toolbox will pop up allowing you to add text styles (bold, italic, etc.) or to add inline nodes (like LaTeX formulas):

There is also a list of handy keyboard shortcuts and text expansions that you can use to perform most of the above actions.

Structured Editing

Nextjournal automatically keeps document structured into sections and subsections. This means whenever you insert a new section, the editor will nest all subsequent content inside this section.

This might be the biggest difference in feel compared to other text-writing apps like Word or Google Docs. We do this because as your notebook’s content gets longer and longer it allows you to easily manipulate its hierarchy or show automatic section numbering.

Section nesting

You can add sections for the same level by clicking the + button and picking "Section" or by typing # followed by a space. Similarily, picking "Subsection" or typing ## followed by a space will add a subsection. You can also quickly change the section nesting by choosing "Promote heading" or "Demote heading" when clicking a section’s ••• button:

Rearranging content

When opening the editor’s command palette (click the ••• button in the upper-right corner of the notebook) you’ll find a command called "Outline". Outline gives you a hierarchical overview of all sections and contents. You can drag vertically to reorder nodes or sections or horizontally to change the nesting of sections:

The Appendix

There is a special automatically generated section called the appendix. It’s main purpose is to provide supplemental material to your notebook. Everything that you move into the appendix will not be visible right away when reading the notebook. Your readers will have to expand the appendix to see its content. You can use the "Outline" command to move nodes in and out of the appendix.

Notebook Settings

Opening the ••• command palette in the upper-right corner of your notebook and selecting "Settings" will allow you to change ownership of your notebook or add additional fields (like, authors or subtitle). Here is an example that shows how to enable the authors and subtitle fields and automatic section numbering:

Available nodes

For writing

  • Paragraphs
  • Sections & Subsections
  • Bulleted Lists, Numbered Lists & Todo Lists

For Coding

  • Code Cells: for executing Python, Julia, Bash, R and Clojure code
  • Code Listings: for static code samples, supporting many syntaxes
  • Files: for providing data sets to work with
  • GitHub repositories: for accessing GitHub repos from your code
  • Bucket Access: for accessing S3 and Google Cloud buckets
  • Docker Environments: for importing existing Docker images as runtime environment

Media

  • Images
  • Video and Twitter embeds
  • LaTeX formulas & inline formulas (to be used inside paragraphs, lists, etc.)

Having trouble using the editor? Get in touch and we’ll help you out.