438 lines
20 KiB
ReStructuredText
438 lines
20 KiB
ReStructuredText
.. _a_ui:
|
|
|
|
**************
|
|
User Interface
|
|
**************
|
|
|
|
The user interface is kept as simple as possible to avoid distractions when writing. This page
|
|
lists all the main GUI elements, and explains what they do.
|
|
|
|
|
|
.. _a_ui_tree:
|
|
|
|
The Project Tree
|
|
================
|
|
|
|
The main window contains a project tree in the left-most panel. It shows the entire structure of
|
|
the project. It has four columns:
|
|
|
|
:guilabel:`Label`
|
|
The first column shows the item icon and its label. The labels can be edited from the
|
|
:guilabel:`Project` menu, or by pressing :kbd:`F2` or :kbd:`Ctrl`:kbd:`E`. The label is not the
|
|
same as the title you set inside the document, but it will appear in the header above the
|
|
document text itself.
|
|
|
|
:guilabel:`Words`
|
|
The second column shows the word count of the document, or the sum of words of the child items
|
|
if it is a folder. If the counts seem incorrect, they can be updated by rebuilding the project
|
|
index from the :guilabel:`Tools` menu, or by pressing :kbd:`F9`.
|
|
|
|
:guilabel:`Inc`
|
|
The third column indicates whether the document is included in the final project build or not.
|
|
You may want to filter out documents that you no longer want to keep in the final manuscript,
|
|
but want to keep in the project for reference.
|
|
|
|
:guilabel:`Flags`
|
|
The fourth column shows various meta data flags for the item. The first is an icon indicating
|
|
the importance or status of the document. These are colour coded status levels that you control
|
|
and define yourself. They can be changed in :guilabel:`Project Settings` from the
|
|
:guilabel:`Project` menu. The first character after the icon indicates the class of the item,
|
|
that is ``N`` for **Novel**, ``C`` for **Character**, etc (see :ref:`a_struct_tags`). The
|
|
characters after the dot indicate the document layout type (see :ref:`a_proj_roots`).
|
|
|
|
Right-clicking an item in the project tree will open a context menu under the cursor, displaying
|
|
a selection of actions that can be performed on the selected item.
|
|
|
|
Below the project tree you will find a small details panel showing the full information of the
|
|
currently selected item. This panel also includes the latest paragraph and character counts in
|
|
addition to the word count.
|
|
|
|
|
|
.. _a_ui_tree_novel:
|
|
|
|
The Novel Tree
|
|
--------------
|
|
|
|
An alternative way to view the project structure is the novel tree. You can switch to this view by
|
|
selecting the :guilabel:`Novel` tab under the project tree. This view is a simplified version of
|
|
the view in the :guilabel:`Outline`. It is convenient when you want to browse the structure of the
|
|
story itself rather than the document files.
|
|
|
|
.. note::
|
|
You cannot reorganise the entries in the novel tree as that would imply restructuring the
|
|
content of the document files.
|
|
|
|
|
|
.. _a_ui_tree_status:
|
|
|
|
Document Importance and Status
|
|
------------------------------
|
|
|
|
Each document or folder in your project can have either a "Status" or "Importance" flag set. These
|
|
are flags that you control and define in their respective tabs in :guilabel:`Project Settings`. The
|
|
"Status" flag is intended to tag a Novel document as for instance a draft or as completed, and the
|
|
"Importance" flag is intended to tag character notes, or other notes, as for instance a main, major
|
|
or minor character.
|
|
|
|
Whether a document uses a "Status" or "Importance" flag depends on which root folder it lives in.
|
|
If it's in the :guilabel:`Novel` folder, it uses the "Status" flag, otherwise it uses an
|
|
"Importance" flag. Some folders, like :guilabel:`Trash` and :guilabel:`Outtakes` allow both.
|
|
|
|
|
|
.. _a_ui_tree_dnd:
|
|
|
|
Project Tree Drag & Drop
|
|
------------------------
|
|
|
|
The project tree allows drag & drop to a certain extent. This feature is primarily intended for
|
|
rearranging the order of your documents within each root folder, and has only limited support for
|
|
moving documents elsewhere in the project tree. In general, bulk actions are not allowed. This is
|
|
deliberate to avoid accidentally messing up your project. If you make a mistake, the last move
|
|
action can be undone by pressing :kbd:`Ctrl`:kbd:`Shift`:kbd:`Z`.
|
|
|
|
Documents and their folders can be rearranged freely within their root folders. Novel documents
|
|
cannot be moved out of the :guilabel:`Novel` folder, except to :guilabel:`Trash` and the
|
|
:guilabel:`Outtakes` folders. Notes can be moved freely between all root folders, but keep in mind
|
|
that if you move a note into a :guilabel:`Novel`, its "Importance" setting will be reset to the
|
|
default "Status" setting. See :ref:`a_ui_tree_status`.
|
|
|
|
Folders cannot be moved at all outside their root tree. Neither can a folder containing documents
|
|
be deleted. You must first delete the containing documents.
|
|
|
|
Root folders in the project tree cannot be dragged and dropped at all. If you want to reorder them,
|
|
you can move them up or down with respect to eachother from the :guilabel:`Project` menu, the
|
|
right-click context menu, or by pressing :kbd:`Ctrl`:kbd:`Shift` and the :kbd:`Up` or :kbd:`Down`
|
|
key.
|
|
|
|
|
|
.. _a_ui_edit:
|
|
|
|
Editing and Viewing Documents
|
|
=============================
|
|
|
|
To edit a document, double-click it in the project tree, or press the :kbd:`Return` key while
|
|
having it selected. This will open the document in the document editor. The editor uses a
|
|
simplified markdown format. The format is described in the :ref:`a_ui_md` section below. The editor
|
|
has a maximise button (toggles the :guilabel:`Focus Mode`) and a close button in the top-right
|
|
corner.
|
|
|
|
Any document in the project tree can also be viewed in parallel in a right hand side document
|
|
viewer. To view a document, press :kbd:`Ctrl`:kbd:`R`, or select :guilabel:`View Document` in the
|
|
menu. If you have a middle mouse button, middle-clicking on the document will also open it in the
|
|
viewer. The document viewed does not have to be the same document currently being edited. However,
|
|
If you *are* viewing the same document, pressing :kbd:`Ctrl`:kbd:`R` again will update the document
|
|
with your latest changes. You can also press the reload button in the top-right corner of the view
|
|
panel next to the close button to achieve the same thing.
|
|
|
|
Both the document editor and viewer will show the label of the document in the header at the top of
|
|
the edit or view panel. Optionally, the full project path to the document can be shown. This can be
|
|
set in :guilabel:`Preferences` from the :guilabel:`Tools` menu. Clicking on the document title bar
|
|
will select and reveal its location in the project tree, making it easier to locate in a large
|
|
project.
|
|
|
|
Any tag reference in the editor can be opened in the viewer by moving the cursor to the label and
|
|
pressing :kbd:`Ctrl`:kbd:`Return`. You can also control-click them with your mouse. In the viewer,
|
|
the references become clickable links. Clicking them will replace the content of the viewer with
|
|
the content of the document the reference points to. The document viewer keeps a history of viewed
|
|
documents, which you can navigate with the arrow buttons in the top-left corner of the viewer. If
|
|
your mouse has back and forward navigation buttons, these can be used as well. They work just like
|
|
the backward and forward features in a browser.
|
|
|
|
At the bottom of the view panel there is a :guilabel:`References` panel. (If it is hidden, click
|
|
the icon to reveal it.) This panel will show links to all documents referring back to the one
|
|
you're currently viewing, if any has been defined. The :guilabel:`Sticky` button will freeze the
|
|
content of the panel to the current document, even if you navigate to another document. This is
|
|
convenient if you want to quickly look through all documents in the list in the
|
|
:guilabel:`References` panel without losing the list in the process.
|
|
|
|
.. note::
|
|
The :guilabel:`References` panel relies on an up-to-date index of the project. The index is
|
|
maintained automatically. However, if anything is missing, or seems wrong, the index can always
|
|
be rebuilt by selecting :guilabel:`Rebuild Index` from the :guilabel:`Tools` menu, or by
|
|
pressing :kbd:`F9`.
|
|
|
|
|
|
.. _a_ui_edit_search:
|
|
|
|
Search & Replace
|
|
----------------
|
|
|
|
The document editor has a search and replace bar that can be activated with :kbd:`Ctrl`:kbd:`F` for
|
|
search mode or :kbd:`Ctrl`:kbd:`H` for search/replace mode.
|
|
|
|
Pressing :kbd:`Return` while in the search box will search for the next occurrence of the word, and
|
|
:kbd:`Shift`:kbd:`Return` for the previous. Pressing :kbd:`Return` in the replace box, will replace
|
|
the highlighted text and move to the next word.
|
|
|
|
There are a number of settings for the search bar available as toggle switches above the search
|
|
box. They allows you to search for, in order:,: matched case only, whole word results only, search
|
|
using regular expressions, loop search when reaching the end of the document, and move to the next
|
|
document when reaching the end. There is also a switch that will try to match the case of the word
|
|
when the replacement is made. That is, it will try to keep the word upper, lower, or capitalised to
|
|
match the word being replaced.
|
|
|
|
The regular expression search is somewhat dependant on which version of Qt your system has. If you
|
|
have Qt 5.13 or higher, there is better support for unicode symbols in the search.
|
|
|
|
|
|
.. _a_ui_edit_auto:
|
|
|
|
Auto-Replace as You Type
|
|
========================
|
|
|
|
A few auto-replace features are supported by the editor. You can control every aspect of the
|
|
auto-replace feature from :guilabel:`Preferences`. You can also disable this feature entirely if
|
|
you wish.
|
|
|
|
.. tip::
|
|
If you don't like auto-replacement, all symbols inserted by this feature are also available in
|
|
the :guilabel:`Insert` menu, and via convenient :ref:`a_ui_shortcuts_ins`. You may also be using
|
|
a `Compose Key`_ setup, which means you may not need the auto-replace feature.
|
|
|
|
.. _Compose Key: https://en.wikipedia.org/wiki/Compose_key
|
|
|
|
The editor is able to replace two and three hyphens with short and long dashes, triple points with
|
|
ellipsis, and replace straight single and double quotes with user-defined quote symbols. It will
|
|
also try to determine whether to use the opening or closing symbol, although this feature isn't
|
|
always accurate. Especially distinguishing between closing single quote and apostrophe can be
|
|
tricky for languages that use the same symbol for these.
|
|
|
|
.. tip::
|
|
If the auto-replace feature changes a symbol when you did not want it to change, pressing
|
|
:kbd:`Ctrl`:kbd:`Z` immediately after the auto-replacement will undo it without undoing the
|
|
character you typed.
|
|
|
|
|
|
.. _a_ui_md:
|
|
|
|
The Markdown-Like Format
|
|
========================
|
|
|
|
The editor itself is a plaintext 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.
|
|
|
|
|
|
.. _a_ui_md_head:
|
|
|
|
Headings
|
|
--------
|
|
|
|
Four levels of headings are allowed. For documents of layout ``Note``, they are free to be used as
|
|
you see fit, but for all other layouts used for the novel text itself, they indicate the structural
|
|
level of the novel. See :ref:`a_struct_heads` for more details.
|
|
|
|
``# Title``
|
|
Heading level one. If the document is a novel file, the header level indicates the start of a
|
|
new partition. This heading level can also be used for the title page's novel title.
|
|
|
|
``## Title``
|
|
Heading level two. If the document is a novel file, the header level indicates the start of a
|
|
new chapter. Chapter numbers can be inserted automatically when exporting the manuscript.
|
|
|
|
``### Title``
|
|
Heading level three. If the document is a novel file, 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``
|
|
Heading level four. If the document is a novel file, the header level indicates the start of a
|
|
new section. Section titles can be replaced by separators or removed when exporting the
|
|
manuscript, so you can use the title field as a working title for your sections if you wish.
|
|
|
|
.. note::
|
|
The space after the ``#`` characters is mandatory. The syntax highlighter will change colour and
|
|
font size when the heading is correctly formatted.
|
|
|
|
.. tip::
|
|
If you do use the automatic numbering feature for exports, you can tell the export tool to skip
|
|
assigning a number to a specific chapter by adding a ``*`` as the first character of the title
|
|
itself. See :ref:`a_struct_heads_unnum` for more details.
|
|
|
|
|
|
.. _a_ui_md_text:
|
|
|
|
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 :kbd:`Ctrl`:kbd:`K`, :kbd:`Space`.
|
|
* Thin spaces are also supported, and can be inserted with :kbd:`Ctrl`:kbd:`K`,
|
|
:kbd:`Shift`:kbd:`Space`.
|
|
* Non-breaking thin space can be inserted with :kbd:`Ctrl`:kbd:`K`, :kbd:`Ctrl`:kbd:`Space`.
|
|
|
|
These are all insert features, and the :guilabel:`Insert` menu has more. They are also listed
|
|
in :ref:`a_ui_shortcuts_ins`.
|
|
|
|
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.
|
|
|
|
|
|
.. _a_ui_md_align:
|
|
|
|
Paragraphs Alignment and Indentation
|
|
------------------------------------
|
|
|
|
Aside from Title Page and Partition which by default have its text centred, all document layouts
|
|
have the text by default aligned to the left ot 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:
|
|
|
|
.. csv-table:: Text Alignment and Indentation
|
|
:header: "Syntax", "Description"
|
|
:widths: 40, 60
|
|
:class: "tight-table"
|
|
|
|
"``>> 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 in the viewer. It will of course also be reflected in the document
|
|
generated from the build tool.
|
|
|
|
|
|
.. _a_ui_md_emph:
|
|
|
|
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.
|
|
|
|
|
|
.. _a_ui_md_comm:
|
|
|
|
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 :ref:`a_ui_outline` 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 :ref:`a_ui_outline`. 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.
|
|
|
|
|
|
.. _a_ui_md_tags:
|
|
|
|
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 :ref:`a_struct_tags` section. They can
|
|
also be inserted at the cursor position in the editor via the :guilabel:`Insert` menu.
|
|
|
|
|
|
.. _a_ui_outline:
|
|
|
|
Project Outline View
|
|
====================
|
|
|
|
The project's Outline view is available as the second tab on the right hand side of the main window
|
|
labelled :guilabel:`Outline`. The outline provides an overview of the novel structure, displaying a
|
|
tree hierarchy of the elements of the novel, that is, the level 1 to 4 headings representing
|
|
partitions, chapters, scenes and sections.
|
|
|
|
The document containing the heading can also be displayed as a separate column, as well as the line
|
|
number where it occurs. Double-clicking an entry will open the corresponding document in the
|
|
editor.
|
|
|
|
.. note::
|
|
Since the internal structure of the novel does not depend directly on the folder and document
|
|
structure of the project tree, these will not necessarily look the same, depending on how you
|
|
choose to organise your documents. See the :ref:`a_struct` page for more details.
|
|
|
|
Various meta data and information extracted from tags can be displayed in columns in the outline.
|
|
A default set of such columns is visible, but you can turn on or off more columns by right clicking
|
|
the header and selecting the columns you want to show. The order of the columns can also be
|
|
rearranged by dragging them to a different position.
|
|
|
|
.. note::
|
|
The :guilabel:`Title` column cannot be disabled or moved.
|
|
|
|
The information viewed in the outline is based on the project's main index. While novelWriter does
|
|
its best to keep the index up to date when contents change, you can always rebuild it manually by
|
|
pressing :kbd:`F9` if something isn't right.
|
|
|
|
The outline view itself can be regenerated by pressing :kbd:`F10`. You can also enable automatic
|
|
updating in the :guilabel:`Tools` menu, which will trigger an update whenever the index is updated
|
|
and the :guilabel:`Outline` tab is active. You may want to disable this feature if your project is
|
|
very large,
|
|
|
|
The :guilabel:`Synopsis` column of the outline view takes its information from a specially
|
|
formatted comment. See :ref:`a_ui_md_comm`.
|