Formatting Your Text

The editor itself is a plain text editor that uses formatting codes for setting meta data values and allowing for some text formatting. The syntax is based on Markdown, but novelWriter is not a Markdown editor. It supports basic formatting like emphasis (italic), strong importance (bold) and strikethrough text, as well as four levels of headings.

In addition to formatting codes, novelWriter allows for comments, a synopsis tag, and a set of keyword and value sets used for tags and references. There are also some codes that apply two whole paragraphs. See Text Paragraphs below for more details.

Headings

Four levels of headings are allowed. For project notes they are free to be used as you see fit. That is, novelWriter doesn’t assign the different headings any importance. However, for novel documents they indicate the structural level of the novel and must be used correctly to produce the intended result. See Importance of Headings for more details.

# Title Text
Heading level one. For novel documents, the header level indicates the start of a new partition.
## Title Text
Heading level two. For novel documents, the header level indicates the start of a new chapter. Chapter numbers can be inserted automatically when exporting the manuscript.
### Title Text
Heading level three. For novel documents, the header level indicates the start of a new scene. Scene numbers or scene separators can be inserted automatically when exporting the manuscript, so you can use the title field as a working title for your scenes if you wish.
#### Title Text
Heading level four. For novel documents, the header level indicates the start of a new section. Section titles can be replaced by separators or removed completely when exporting the manuscript.

For headers level one and two, adding a ! modifies the behaviour of the heading:

#! Title Text
This tells the build tool that the level one heading is intended to be used for the novel’s main title, like for instance on the front page. When exporting, this will use a different styling and will exclude the title from for instance a Table of Contents in Libre Office.
##! Title Text
This tells the build tool to not assign a chapter number to this chapter title if automatic chapter numbers are being used. Such titles are useful for a prologue for instance. See Unnumbered Chapter Headings for more details.

Note

The space after the # or ! character is mandatory. The syntax highlighter will change colour and font size when the heading is correctly formatted.

Text Paragraphs

A text paragraph is indicated by a blank line. That is, you need two line breaks to separate two fragments of text into two paragraphs. Single line breaks are treated as line breaks within a paragraph.

In addition, the editor supports a few additional types of whitespaces:

  • A non-breaking space can be inserted with CtrlK, Space.
  • Thin spaces are also supported, and can be inserted with CtrlK, ShiftSpace.
  • Non-breaking thin space can be inserted with CtrlK, CtrlSpace.

These are all insert features, and the Insert menu has more. They are also listed in Insert Shortcuts.

Non-breaking spaces are highlighted by the syntax highlighter with an alternate coloured background, depending on the selected theme.

Tip

Non-breaking spaces are the correct type of space to separate a number from its unit. Generally, it prevents the line wrapping algorithms from adding line breaks where it shouldn’t.

Text Emphasis

A minimal set of text emphasis styles are supported.

_text_
The text is rendered as emphasised text (italicised).
**text**
The text is rendered as strongly important text (bold).
~~text~~
Strikethrough text.

In markdown guides it is often recommended to differentiate between strong importance and emphasis by using ** for strong and _ for emphasis, although markdown generally also supports __ for strong and * for emphasis. However, since the differentiation makes the highlighting and conversion significantly simpler and faster, in novelWriter this is a rule, not just a recommendation.

In addition, the following rules apply:

  1. The emphasis and strikethrough formatting tags do not allow spaces between the words and the tag itself. That is, **text** is valid, **text ** is not.
  2. More generally, the delimiters must be on the outer edge of words. That is, some **text in bold** here is valid, some** text in bold** here is not.
  3. If using both ** and _ to wrap the same text, the underscore must be the inner wrapper. This is due to the underscore also being a valid word character, so if they are on the outside, they violate rule 2.
  4. Text emphasis does not span past line breaks. If you need to add emphasis to multiple lines or paragraphs, you must apply it to each of them in turn.

Comments and Synopsis

In addition to these standard markdown features, novelWriter also allows for comments in documents. The text of a comment is ignored by the word counter. The text can also be filtered out when exporting or viewing the document.

If the first word of a comment is Synopsis: (with the colon included), the comment is treated specially and will show up in the Project Outline View in a dedicated column. The word synopsis is not case sensitive. If it is correctly formatted, the syntax highlighter will indicate this by altering the colour of the word.

% text...
This is a comment. The text is not exported by default (this can be overridden), seen in the document viewer, or counted towards word counts.
% Synopsis: text...
This is a synopsis comment. It is generally treated in the same way as a regular comment, except that it is also captured by the indexing algorithm and displayed in the Project Outline View. It can also be filtered separately when exporting the project to for instance generate an outline document of the whole project.

Note

Only one comment can be flagged as a synopsis comment for each heading. If multiple comments are flagged as synopsis comments, the last one will be used and the rest ignored.

Tags and References

The document editor supports a minimal set of keywords used for setting tags, and making references between documents. The tags and references can be set once per section defined by a heading. Using them multiple times under the same heading will just override the previous setting.

@keyword: value
A keyword argument followed by a value, or a comma separated list of values.

The available tag and reference keywords are listed in the Tag References section. They can also be inserted at the cursor position in the editor via the Insert menu.

Paragraph Alignment and Indentation

All documents have the text by default aligned to the left or justified, depending on your Preferences.

You can override the default text alignment on individual paragraphs by specifying alignment tags. These tags are double angle brackets. Either >> or <<. You put them either before or after the paragraph, and they will “push” the text towards the edge the brackets point towards. This should be fairly intuitive.

Indentation uses a similar syntax. But here you use a single > or < to push the text away from the edge.

Examples:

Text Alignment and Indentation
Syntax Description
>> Right aligned text The text paragraph is right-aligned.
Left aligned text << The text paragraph is left-aligned.
>> Centred text << The text paragraph is centred.
> Indented text The text has an increased left margin.
Indented text < The text has an increased right margin.
> Indented text < The text has an both margins increased.

Note

The text editor will not show the alignment and indentation live. But the viewer will show them when you open the document there. It will of course also be reflected in the document generated from the build tool as long as the format supports paragraph alignment.

Vertical Space and Page Breaks

Adding more than one line break between paragraphs will not increase the space between those paragraphs when exporting the project. To add additional space between paragraphs, add the text [VSPACE] on a line of its own, and the build tool will insert a blank paragraph in its place.

If you need multiple blank paragraphs just add a colon and a number to the above code. For instance, writing [VSPACE:3] will insert three blank paragraphs.

Normally, the build tool will insert a page break before all headers of level one and for all headers of level two for novel documents, i.e. chapters, but not for project notes.

If you need to add a page break somewhere else, put the text [NEW PAGE] on a line by itself before the text you wish to start on a new page.

Page breaks are automatically added to partition, chapter and unnumbered chapter headers of novel documents. If you want such breaks for scenes and sections, you must add them manually.

Note

The page break code is applied to the text that follows. It adds a “page break before” mark to the text when exporting to HTML or Open Document. This means that a [NEW PAGE] which has no text following it will not result in a page break.