Add new docs theme, and restructure (#978)

* Change documentation theme to 'furo'
* Update docs source for new theme
* Update index and split introduction
* Add a Getting Started section to the docs
* Rename getting started docs file
* Reorganise setup instructions
* Update usage sections for consistency
* Update docs references in main README
* Show release in sidebar
This commit is contained in:
Veronica Berglyd Olsen
2022-02-05 23:59:05 +01:00
committed by GitHub
parent 07c92b4bc3
commit 5ee857f6f4
23 changed files with 5224 additions and 709 deletions
+5 -7
View File
@@ -42,8 +42,8 @@ met. It is regularly tested on Debian and Ubuntu Linux, Windows, and macOS.
The Releases page has a `.deb` package that should install on Mint, Ubuntu and Debian.
You can also use the novelWriter [PPA](https://launchpad.net/~vkbo/+archive/ubuntu/novelwriter).
For more details, check the [Linux](https://novelwriter.readthedocs.io/en/latest/setup_linux.html)
setup chapter in the documentation.
For more details, check the [Getting STarted](https://novelwriter.readthedocs.io/en/latest/int_started.html)
section in the documentation.
### Windows 10+
@@ -55,11 +55,9 @@ versions. The installer includes Python 3.10 and the library dependencies.
You can also download and install one of the minimal zip files from the
[Releases](https://github.com/vkbo/novelWriter/releases) page or the
[novelwriter.io](https://novelwriter.io/) website.
The [documentation](https://novelwriter.readthedocs.io/) has detailed install instructions for
[Linux](https://novelwriter.readthedocs.io/en/latest/setup_linux.html),
[Windows](https://novelwriter.readthedocs.io/en/latest/setup_windows.html), and
[macOS](https://novelwriter.readthedocs.io/en/latest/setup_mac.html).
They are pretty straightforward.
The [Getting STarted](https://novelwriter.readthedocs.io/en/latest/int_started.html) section of the
documentation has detailed install instructions for these packages, and for installation via the
Python Package Index.
## Project Contributions
-27
View File
@@ -1,27 +0,0 @@
/*
* Custom CSS Rules for Sphinx RTD Theme
*/
.kbd {
background-color: #eeeeee;
border: 1px solid #b4b4b4;
border-radius: 3px;
color: #333333;
display: inline-block;
font-size: 0.85em;
font-weight: 400;
line-height: 1;
padding: 2px 4px;
margin-left: 1px;
margin-right: 1px;
white-space: nowrap;
}
.tight-table td {
white-space: normal !important;
vertical-align: text-top;
}
pre span.go {
color: #333333 !important;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

+24 -26
View File
@@ -10,54 +10,52 @@
import os
import time
import sphinx_rtd_theme # noqa: F401
import datetime
# -- Project Information -----------------------------------------------------
project = "novelWriter"
copyright = "20182021, Veronica Berglyd Olsen"
copyright = f"{datetime.date.today().year}, Veronica Berglyd Olsen"
author = "Veronica Berglyd Olsen"
# The short X.Y version
version = "1.6"
# The full version, including alpha/beta/rc tags
release = "1.6-beta1"
initFile = os.path.join(
os.path.dirname(__file__), os.pardir, os.pardir,
"novelwriter", "__init__.py"
)
with open(initFile) as inFile:
for aLine in inFile:
if aLine.startswith("__version__"):
release = aLine.split('"')[1].strip()
break
else:
release = "unknown"
version = release.split("-")[0]
# -- General Configuration ---------------------------------------------------
os.environ["TZ"] = "Europe/Oslo"
time.tzset()
# needs_sphinx = "1.0"
extensions = [
"sphinx_rtd_theme",
]
needs_sphinx = "4.0"
templates_path = ["_templates"]
source_suffix = ".rst"
master_doc = "index"
today_fmt = "%A, %d %B %Y at %H:%M"
language = None
exclude_patterns = []
pygments_style = None
pygments_style = "sphinx"
pygments_dark_style = "monokai"
# -- Options for HTML Output -------------------------------------------------
html_theme = "sphinx_rtd_theme"
html_logo = "images/novelwriter.png"
html_theme_options = {
# Toc options
"collapse_navigation": True,
"sticky_navigation": True,
"navigation_depth": 3,
"includehidden": True,
"titles_only": False,
"logo_only": True,
}
html_theme = "furo"
html_static_path = ["_static"]
html_css_files = [
"css/custom.css",
]
html_theme_options = {
"light_logo": "novelwriter-light.png",
"dark_logo": "novelwriter-dark.png",
}
html_title = f"<div style='text-align: center'>Documentation<br>Version {release}</div>"
# -- Options for HTMLHelp Output ---------------------------------------------
Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 KiB

+33 -57
View File
@@ -1,53 +1,37 @@
#####################
novelWriter |release|
#####################
#############################
Documentation for novelWriter
#############################
.. only:: html
.. image:: images/novelwriter_logo.png
:align: right
:width: 48
.. image:: https://github.com/vkbo/novelWriter/actions/workflows/test_linux.yml/badge.svg?branch=main
:target: https://github.com/vkbo/novelWriter/actions
:alt: Python Tests
| **For Release:** |release|
| **Last Updated:** |today|
|
.. image:: https://codecov.io/gh/vkbo/novelWriter/branch/main/graph/badge.svg
:target: https://codecov.io/gh/vkbo/novelWriter
:alt: Code Coverage
novelWriter is an open source plain text editor designed for writing novels assembled from many
smaller text documents. It uses a minimal formatting syntax inspired by Markdown, and adds a meta
data syntax for comments, synopsis, and cross-referencing. It is designed to be a simple text
editor that allows for easy organisation of text and notes, using human readable text files as
storage for robustness.
.. image:: https://img.shields.io/github/v/release/vkbo/novelwriter
:target: https://github.com/vkbo/novelWriter/releases
:alt: GitHub Release
.. image:: https://img.shields.io/pypi/v/novelwriter
:target: https://pypi.org/project/novelWriter/
:alt: PyPI
.. image:: https://img.shields.io/pypi/pyversions/novelwriter
:target: https://pypi.org/project/novelWriter/
:alt: Python Version
**Last Updated:** |today|
novelWriter is a plain text editor designed for writing novels assembled from many smaller text
documents. It uses a minimal formatting syntax inspired by Markdown, and adds a meta data syntax
for comments, synopsis, and cross-referencing. It is designed to be a simple text editor that
allows for easy organisation of text and notes, using human readable text files as storage for
robustness.
.. figure:: images/screenshot_multi.png
:align: center
:width: 500
The project storage is suitable for version control software, and also well suited for file
synchronisation tools. All text is saved as plain text files with a meta data header. The core
project structure is stored in a single project XML file. Other meta data is primarily saved as
JSON files. See the :ref:`a_intro_storage` section for more details.
JSON files. See the :ref:`a_breakdown_storage` section for more details.
Any operating system that can run Python 3 and has the Qt 5 libraries should be able to run
novelWriter. It runs fine on Linux, Windows and macOS, and users have tested it on other platforms
too. novelWriter can be run directly from the Python source, installed from the pip tool.
You can also download a minimal archive package of novelWriter tailored for your operating system.
This package can be extracted anywhere on your computer, and a setup script can be run to create
the necessary icons and file associations. See the setup instructions for your operating system for
further details.
too. novelWriter can be run directly from the Python source, installed from the pip tool. See
:ref:`a_started` for more details.
.. note::
Version 1.5 introduces a few changes that will require you to make a few minor modifications to
Version 1.5 introduced a few changes that will require you to make a few minor modifications to
some of the headings in your project. It should be fairly quick and straightforward. Please see
the :ref:`a_prjfmt_1_3` section for more details.
@@ -61,50 +45,42 @@ further details.
* Feature Discussions: https://github.com/vkbo/novelWriter/discussions
* PyPi Project: https://pypi.org/project/novelWriter
.. toctree::
:maxdepth: 2
:maxdepth: 1
:caption: Introduction
:hidden:
int_introduction
setup_linux
setup_mac
setup_windows
setup_other
int_overview
int_started
int_source
.. toctree::
:maxdepth: 2
:maxdepth: 1
:caption: Using novelWriter
:hidden:
usage_breakdown
usage_interface
usage_format
usage_shortcuts
usage_typography
usage_projectformat
.. toctree::
:maxdepth: 2
:maxdepth: 1
:caption: Organising Your Project
:hidden:
project_overview
project_structure
project_notes
project_export
.. toctree::
:maxdepth: 2
:maxdepth: 1
:caption: Under the Hood
:hidden:
tech_storage
tech_tests
Indices and Tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
+38 -159
View File
@@ -1,174 +1,53 @@
.. _a_intro:
************
Introduction
Key Features
************
novelWriter is a simple, multi-document plain text editor using a markup syntax inspired by
markdown to apply simple formatting to the text. It is designed for writing novels, so the
formatting features are limited.
novelWriter is a multi-document plain text editor using a markup syntax inspired by markdown to
apply simple formatting to the text. It is designed for writing novels, so the formatting features
are limited. Your novel project is organised as a collection of separate plain text documents
instead of a single, large document.
The idea is to let the user focus on writing instead of spending time on the formatting of headers
and text. Therefore you cannot change the look of the text in the editor window. Instead, you
provide formatting tags where they're needed, like for instance which text is a header, where you
want text bolded or italicised, and what alignment you want for paragraphs. The actual formatting
is then added to the text when you run the :guilabel:`Build Novel Project` tool.
Below are some key features of novelWriter.
A document viewer to the right of the editor can also show a renderred version of any document if
you want to inspect the result, or just want to keep a second document open for reference when
you're writing.
**Focus on writing**
The aim of the user interface is to let the user focus on writing instead of spending time
formatting text. Formatting is therefore limited to a small set of formatting tags for simple
things like text emphasis and paragraph alignment. When you really want to focus on just
writing, you can switch the editor into :guilabel:`Focus Mode` where only the text editor window
itself is vissible.
You can split your novel project up into as many individual files as you want to. The files are
glued together when you build the project, in the top-to-bottom order in which they appear in the
project tree. Splitting the project up into chapter and scene files means you can easily reorder
them using the drag and drop feature. More details about how projects are structured is covered in
:ref:`a_struct`.
**Keep an eye on your notes**
The main window can optionally show a document viewer to the right of the editor. This view
panel is intended for displaying another scene document, you character notes, plot notes, or any
other document you may need to reference while writing.
In addition to novel text documents, the project can contain notes on the various plot elements,
characters, locations, etc, that make up the story. These notes are organised in a set of
category-specific top-level folders referred to as *Root Folders*. Each note can be assigned one or
more tags (one tag is allowed for each heading in the note), and these tags can be referenced from
within the novel documents and other notes.
**Organise your documents how you like**
You can split your novel project up into as many individual documents as you want to. They are
all glued together when you build the project in the top-to-bottom order in which they appear in
the project tree. Splitting the project up into chapters and scenes means you can easily reorder
them using the drag and drop feature.
These tags make it possible to inter-link documents, and you can also generate an overview of the
entire novel project and how the various documents and plot elements are interconnected. The tag
and reference syntax is covered in :ref:`a_proj` and :ref:`a_notes`.
**Keep track of your plot elements**
All notes in your project can be assigned a *tag* you can *reference* from any other document or
note. In fact, you can add a new tag under each heading of a note if you need to be able to
reference a specific section. Note tags are organised into categories with specific keywords you
can use to reference them.
These features are available through special meta keywords described in :ref:`a_struct_tags`.
Syntax highlighting is provided to make it easier to verify that the markdown tags are used
correctly.
**Get an overview of your plot elements**
In the :guilabel:`Outline` tab on the main window you can see an outline of all the chapter and
scene sections of your project. If they have any references in them, these are listed in
columns. You can also add a synopsis to each document, which can be listed here. You have the
option to add or remove columns of information from the outline. A subset of the outline
information is also available in the :guilabel:`Novel` tab under the main project tree.
An overview of the supported formatting syntax is covered in :ref:`a_ui`.
.. _a_intro_storage:
Project Storage
===============
The files of a novelWriter project are stored in a dedicated project folder. The project structure
is kept in a file at the root of this folder called ``nwProject.nwx``. All the document files and
associated meta data is stored in the other folders below the project folder. For more technical
details about what all the files mean and how they're organised, see the :ref:`a_storage` section.
This way of storing data was chosen for several reasons. Firstly, all the text you add to your
project is saved directly to your project folder in separate files. Only the project structure and
the text you are currently editing is stored in memory at any given time. Secondly, having multiple
small files means it is very easy to sync them between computers with standard file synchronisation
tools. Thirdly, if you use version control software to track the changes to your project, the file
formats used for the files are well suited for this.
.. note::
Since novelWriter has to keep track of a bunch of files and folders when a project is open, it
may not run well on some virtual file systems. A file or folder must be accessible with exactly
the path it was saved or created with. An example where this is not the case is the way Google
Drive is mapped on Linux Gnome desktops using gvfs/gio.
.. warning::
You should not add additional files to the project folder yourself. Nor should you manually edit
files within it as a general rule. If you really must manually edit the text files, e.g. with
some automated task you want to perform, you need to rebuild the index when you open the project
again.
Editing text files in the ``content`` folder is less risky as they are just plain text. Editing
the main project XML file, however, may make the project file unreadable and you may crash
novelWriter and lose project structure information and project settings.
.. _a_intro_design:
Design Philosophy
=================
The user interface of novelWriter is intended to be as minimalistic as practically possible, while
at the same time provide a complete set of features needed for writing a novel.
.. note::
novelWriter is not intended to be a full office type word processor. It doesn't support images,
links, tables, and other complex structures and objects often needed for such documents.
Formatting is limited to headers, emphasis, text alignment, and a few other simple features.
.. tip::
If you do need to align information in rows and columns in your notes, you can achieve this with
tabs and line breaks. The tab stop width can be specified in :guilabel:`Preferences`.
The main window does not have a toolbar like many other applications do. This reduces clutter, and
since the documents are formatted with style tags, is more or less redundant. However, most
formatting features supported are available through convenient keyboard shortcuts. They are also
available in the main menu so you don't have to look up formatting codes every time you need them.
A full list of shortcuts can be found in the :ref:`a_kb` section.
In addition, novelWriter has a :guilabel:`Focus Mode` where all the user interface elements other
than the document editor itself are hidden away.
The colour scheme of the user interface defaults to that of the host operating system. Some other
light and dark colour themes are provided, and can be enabled in :guilabel:`Preferences` from the
:guilabel:`Tools` menu. A number of syntax highlighting themes are also available in
:guilabel:`Preferences`. A set of icon themes in colour and greyscale are also offered. The icons
are based on the Typicons_ icon set designed by Stephen Hutchings.
The main window is split in two, or optionally three, panels. The left-most panel contains the
project tree and all the documents in your project. The second panel is the document editor. An
optional third panel is a document viewer which can view any document in your project independently
of what is open in the document editor. It is not intended as a preview window, although you can
use it for this. The main purpose of the viewer is for viewing your notes next to your editor
while you're writing.
A second tab is also available on the main window. This is the :guilabel:`Outline` tab where the
entire novel structure can be displayed, with all the tags and references listed. Depending on how
you structure your novel documents, this outline can be quite different from your project tree.
Your project tree lists individual documents, your Outline tree lists the structure of the novel
itself in terms of partitions, chapters and scenes as it appears in the text of those documents.
.. _Typicons: https://github.com/stephenhutchings/typicons.font
.. _a_intro_project:
Project Layout
==============
You are free to organise your project documents as you wish into subfolders, and split the text
between documents in whatever way suits you. All that matters to novelWriter is the linear order
the documents appear at in the project tree (top to bottom). The chapters, scenes and sections of
the novel are determined by the headings within those documents.
The four heading levels (**H1** to **H4**) are treated as follows:
* **H1** is used for the book title, and for partitions.
* **H2** is used for chapter tiles.
* **H3** is used for scene titles optionally replaced by separators.
* **H4** is for section titles within scenes, if such granularity is needed.
This header level structure is only taken into account for novel documents. For the project notes,
the header levels have no structural meaning, and the user is free to do whatever they want. See
:ref:`a_struct` and :ref:`a_notes` for more details.
.. _a_intro_export:
Project Export
==============
The project can at any time be exported to a range of different formats through the
:guilabel:`Build Novel Project` tool. Natively, novelWriter supports export to Open Document,
HTML5, and various flavours of Markdown.
The HTML5 export format is suitable for conversion by a number of other tools like Pandoc, or for
importing into word processors if the Open Document format isn't suitable. In addition, printing
and printing to PDF is also possible.
You can also export the content of the project to a JSON file. This is useful if you want to write
your own processing script in for instance Python as the entire novel can be read into a Python
dictionary with a couple of lines of code. The JSON file can be populated either with HTML
formatted text, or with the raw text as typed into the novel documents. See :ref:`a_export_options`
for more details.
A number of filter options can be applied to the Build tool, allowing you to export a draft
manuscript, a reference document of notes, an outline based on chapter and scene titles with a
synopsis each, and so on. See :ref:`a_export` for more details on export features and formats.
**Building your manuscript**
Whether you want to compile a manuscript, or export all your notes, or generate an outline of
your chapters and scenes with a synopsis, you can use the :guilabel:`Build Novel Project` tool.
The tool lets you select what information you want to include in the generated document, and how
it is formatted. You can send the result to a printer, a PDF, or to an Open Document file that
can be opened by most office type word processors.
.. _a_intro_screenshots:
+85
View File
@@ -0,0 +1,85 @@
.. _a_overview:
********
Overview
********
.. image:: images/python_powered.svg
:align: right
:width: 220
novelWriter is built on `Python 3 <https://www.python.org/>`_, a cross platform programming
language that doesn't require a compiler to build and run. That means that the code can run on your
computer right out of the box, or zip file as it were.
While it is developed for Linux primarily, it runs just fine on Windows as well. It also works just
fine on macOS, but the author is not a mac user so less attention is paid to that platform.
In order to run novelWriter, you also need a few additional packages. The user interface is built
with `Qt 5 <https://www.qt.io/>`_, a cross platform library for building graphical user interface
applications.
For install instructions, see :ref:`a_started`.
Using novelWriter
=================
In order to use novelWriter effectively, you need to know the basics of how it works. The following
sections will explain the main principles. It starts of with the basics, and gets more detailed as
you read on.
:ref:`a_breakdown` Essential Information
This section explains the basics of how the application works and what it can and cannot do.
:ref:`a_ui` Recommended Reading
This section will give you a more detailed explanation of what the various elements on the user
interface do and how you can use them more effectively.
:ref:`a_fmt` Essential Information
This section covers how you should format your text. The editor is plain text, so text
formatting requires some basic markup. The structure of your novel is also inferred by how you
use the title headings. Tags and references are implemented by simple codes.
:ref:`a_kb` Optional / Lookup
This section lists all the keyboard shortcuts in novelWriter and what they do. Most of the
shortcuts are also listed next to the menu items inside the app, so this section is purely for
reference.
:ref:`a_typ` Optional
This section gives you an overview of the special typographical symbols available in
novelWriter. The auto-replace feature can handle the insertion of standard quote symbols for
your language, and other special characters. If you use any symbols aside from these. their
intended use is explained here.
:ref:`a_prjfmt` Optional
This section is more technical and has an overview of changes made to the way your project data
is stored. The format has changed a bit from time to time, and sometimes the changes require
that you make small modifications to your project. Everything you need to know is listed in this
section.
Organising Your Projects
========================
In addition to manage a collection of plain text files, novelWriter can interpret and map the
structure of your novel and show you additional information about its flow and content. In order
to take advantage of these features, you must structure your text in a specific way and add some
meta data for it to extract.
:ref:`a_proj` Essential Information
This section explains how you organise the content of your project, how to customise them, and
how to handle archived content and set up automated backups of your work.
:ref:`a_struct` Essential Information
This section covers the way your novel's structure is encoded into the text documents. It
explains how the different levels of headings are used, and how you can include information
about characters, plot elements, and other meta data in your text.
:ref:`a_notes` - Recommended Reading
This section briefly describes what novelWriter does with the note files you add to your
project. Generally, the application doesn't do much with them at all aside from looking through
the for tags you've set so that it knows which file to open when you click on a reference.
:ref:`a_export` - Recommended Reading
This section explains in more detail how the export tool works. In particular how you can
control the way chapter titles are formatted, and how scene and section breaks are handled.
@@ -1,7 +1,7 @@
.. _a_other:
.. _a_source:
*******************
Other Setup Methods
Running from Source
*******************
.. _main website: https://novelwriter.io
@@ -9,8 +9,8 @@ Other Setup Methods
.. _PyPi: https://pypi.org/project/novelWriter/
.. _Sphinx Docs: https://www.sphinx-doc.org/
This section describes various other setup methods, and instructions for building needed files
when running novelWriter from the source code directly.
This section describes various ways of running novelWriter directly from the source code, and how
to build the various components like the translation files and documentation.
.. note::
The text below assumes the command ``python`` corresponds to a Python 3 executable. Python 2 is
@@ -19,7 +19,7 @@ when running novelWriter from the source code directly.
without the ``python`` command. Likewise, ``pip`` may need to be replaced with ``pip3``.
.. _a_other_depend:
.. _a_source_depend:
Dependencies
============
@@ -45,48 +45,15 @@ must be at least 3.0 to work with Windows. On Linux, 2.0 also works fine.
If you install from PyPi, these dependencies should be installed automatically. If you install from
source, dependencies can still be installed from PyPi with:
.. code-block:: console
.. code-block:: bash
pip install -r requirements.txt
.. _a_other_pip:
.. _a_source_install:
Installing from PyPi
====================
novelWriter is available on the Python Package Index, or PyPi_.
To install from PyPi you must first have the ``python`` and ``pip`` commands available on your
system. If you don't, see specific instructions for your operating system in this documentation on
how to get the Python environment set up.
To install novelWriter from PyPi, use the following command:
.. code-block:: console
pip install novelwriter
To upgrade an existing installation, use:
.. code-block:: console
pip install --upgrade novelwriter
When installing via pip, novelWriter can be launched from command line with:
.. code-block:: console
novelWriter
Make sure the install location for pip is in your PATH variable. This is not always the case by
default.
.. _a_other_source:
Installing from Source
======================
Install from Source
===================
You can download the latest version of novelWriter from the source repository on GitHub_ and run
the setup manually. It is equivalent to what the ``pip install`` command does, and it installs
@@ -96,19 +63,19 @@ This step requires that you have ``setuptools`` installed on your system. If you
installed, it can usually be installed from your distro's repository. For Debian and Ubuntu this is
achieved with:
.. code-block:: console
.. code-block:: bash
sudo apt install python3-setuptools
The package is also available from PyPi:
.. code-block:: console
.. code-block:: bash
pip install --user setuptools
With ``setuptools`` in place, novelWriter can be installed to the user space with:
.. code-block:: console
.. code-block:: bash
python setup.py install --user
@@ -118,7 +85,7 @@ With ``setuptools`` in place, novelWriter can be installed to the user space wit
running ``python setup.py --help``.
.. _a_other_i18n:
.. _a_source_i18n:
Building the Translation Files
==============================
@@ -130,7 +97,7 @@ have the ``.qm`` file extension.
You can build the ``.qm`` files with:
.. code-block:: console
.. code-block:: bash
python setup.py qtlrelease
@@ -143,35 +110,30 @@ needed package is called `qttools5-dev-tools`.
the ``i18n`` folder of the source code.
.. _a_other_docs:
.. _a_source_docs:
Building the Documentation
==========================
A local copy of this documentation can be generated as HTML. This requires the following Python
packages on Debian and Ubuntu.
packages from PyPi:
* ``python3-sphinx``
* ``python3-sphinx-rtd-theme``
.. code-block:: bash
Or from PyPi:
pip install furo sphinx
.. code-block:: console
The documentation can then be built from the root folder in the source code by running:
pip install sphinx sphinx-rtd-theme
.. code-block:: bash
The documentation can then be built from the ``docs`` folder in the source code by running:
.. code-block:: console
make html
make -C docs html
If successful, the documentation should be available in the ``docs/build/html`` folder and you can
open the ``index.html`` file in your browser.
You can also build a PDF manual from the documentation using the setup script:
.. code-block:: console
.. code-block:: bash
python setup.py manual
+235
View File
@@ -0,0 +1,235 @@
.. _a_started:
***************
Getting Started
***************
.. _GitHub: https://github.com/vkbo/novelWriter
.. _Releases: https://github.com/vkbo/novelWriter/releases
.. _RPM: https://github.com/vkbo/novelWriter/issues/907
.. _macOS: https://github.com/vkbo/novelWriter/issues/867
.. _main website: https://novelwriter.io
.. _PPA: https://launchpad.net/~vkbo/+archive/ubuntu/novelwriter
.. _Pre-Release PPA: https://launchpad.net/~vkbo/+archive/ubuntu/novelwriter-pre
.. _python.org: https://www.python.org/downloads/windows
.. _brew docs: https://docs.brew.sh/Homebrew-and-Python
.. _PyPi: https://pypi.org/project/novelWriter/
If you are using Windows or a Debian-based Linux distribtuion, you can install novelWriter from
package installers. If you are on macOS, you have the option to run novelWriter from a standalone
folder. See :ref:`a_started_minimal`. This option is also available for Windows and Linux. The
third option is to install novelWriter from the Python Package Index. See :ref:`a_started_pip`.
.. admonition:: Help Wanted
:class: seealso
If you would like to help making more installers, the project is currently loooking for people
who can help make releases for Reed Hat-based Linux distros (RPM) and for macOS. See the issues
posted for RPM_ and macOS_ on GitHub_.
.. _a_started_windows:
Install on Windows
==================
You can install novelWriter with both Python and library dependencies embedded using the Windows
Installer (setup.exe) file from the `main website`_, or from the Releases_ page on GitHub.
Installing it should be straightforward.
If you have any issues, try uninstalling the previous version and making a fresh install.
.. _a_started_debian:
Install on Debian/Ubuntu/Mint
=============================
A Debian package can be downloaded from the `main website`_, or from the Releases_ page on GitHub.
This package should work on both Debian, Ubuntu and Linux Mint.
If you prefer, you can also add the novelWriter repository on Launchpad to your package manager.
Ubuntu and Mint
---------------
You can add the Ubuntu PPA_ and install novelWriter with the following commands.
.. code-block:: bash
sudo add-apt-repository ppa:vkbo/novelwriter
sudo apt update
sudo apt install novelwriter
If you want pre-releases, add the ``ppa:vkbo/novelwriter-pre`` repository instead.
Debian
------
Since this is a pure Python package, the Launchpad PPA can in principle also be used on Debian.
However, the above command will fail to add the signing key.
Instead, run the following commands to add the repository and key:
.. code-block:: bash
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/novelwriter-ppa-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F19F1FCE50043114
echo "deb [signed-by=/usr/share/keyrings/novelwriter-ppa-keyring.gpg] http://ppa.launchpad.net/vkbo/novelwriter/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/novelwriter.list
Then run the update and install commands as for Ubuntu:
.. code-block:: bash
sudo apt update
sudo apt install novelwriter
.. note::
Please use the Ubuntu 20.04 packages for Debian. The newer Ubuntu packages use a different
compression that Debian doesn't currently support.
.. _a_started_minimal:
Minimal Package Install
=======================
On the `main website`_ and on the Releases_ page on GitHub you will also find "Minimal Package"
install files for Windows, Linux and macOS. These are zip files of just the files you need to run
novelWriter on that specific platform.
These zip files don't include any dependencies, so you must install them separately.
.. _a_started_minimal_windows:
Windows
-------
First, make sure you have Python installed on your system. If you don't, you can download it from
`python.org`_. Python 3.6 or higher is required, but it is recommended that you install the latest
version.
Make sure you select the "Add Python to PATH" option during installation, otherwise the ``python``
command will not work in the command line window.
.. figure:: images/python_win_install.png
:align: center
:width: 500
When Python is installed, extract the novelWriter zip file and move the extracted folder to a
suitable location. You should probably not keep it on your desktop or in your downloads folder
where it may be accidentally deleted. Instead, move and rename it to for instance
``C:\novelWriter``.
After you've got the folder where you want it, open it and double-click the file named
``windows_install.bat``. This will open a command line window and run the setup script to install
dependencies, and add desktop and start menu icons.
Running ``windows_uninstall.bat`` will reverse the process if you wish to uninstall. After that,
you can just delete the novelWriter folder.
.. _a_started_minimal_linux:
Linux
-----
On Linux you need to install the following packages on Debian-based distros, including Ubuntu and
Linux Mint:
.. code-block:: bash
sudo apt install python3-pyqt5 python3-lxml python3-enchant
On Fedora, you need the following packages:
.. code-block:: bash
sudo dnf install python3-qt5 python3-lxml python3-enchant
A standard desktop launcher can be installed via the main setup script. It will create the needed
desktop file and add it to the Applications menu. The necessary icons will also be installed, and a
file association with ``.nwx`` files added.
To set this up, run the following from inside the extracted novelWriter folder:
.. code-block:: bash
python3 setup.py xdg-install
This installs icons for the current user. Run with ``sudo`` to install system-wide.
To uninstall the icons, run:
.. code-block:: bash
python3 setup.py xdg-uninstall
.. _a_started_minimal_mac:
macOS
-----
These instructions assume you're using brew, and have Python and pip set up. If not, see the
`brew docs`_ for help. The main requirements for novelWriter are installed via the requirements
file. You also need to install the ``pyobjc`` package, so you should run:
.. code-block:: bash
pip3 install --user -r requirements.txt
pip3 install --user pyobjc
For spell checking you may also need to install the enchant package. It comes with a lot of default
dictionaries.
.. code-block:: bash
brew install enchant
With the dependencies in place, you can launch the ``novelWriter.py`` script directly to run
novelWriter.
.. note::
Right now there isn't a better integration with macOS available. Contributions from someone more
familiar with macOS would be very much appreciated. See the macOS_ issue on GitHub.
.. _a_started_pip:
Install from PyPi
=================
novelWriter is also available on the Python Package Index, or PyPi_. This install method works on
all supported operating systems.
To install from PyPi you must first have the ``python`` and ``pip`` commands available on your
system. If you don't, see specific instructions for your operating system in this documentation on
how to get the Python environment set up.
To install novelWriter from PyPi, use the following command:
.. code-block:: bash
pip install novelwriter
To upgrade an existing installation, use:
.. code-block:: bash
pip install --upgrade novelwriter
When installing via pip, novelWriter can be launched from command line with:
.. code-block:: bash
novelwriter
Make sure the install location for pip is in your PATH variable. This is not always the case by
default.
.. note::
On systems with both Python 2 and 3, you may have to replace the ``pip`` command with ``pip3``.
+3 -1
View File
@@ -1,2 +1,4 @@
sphinx_rtd_theme
furo
sphinx~=4.0
pygments~=2.7
docutils==0.17.1
-137
View File
@@ -1,137 +0,0 @@
.. _a_setup_linux:
**************
Setup on Linux
**************
.. _GitHub: https://github.com/vkbo/novelWriter/releases
.. _main website: https://novelwriter.io
.. _PPA: https://launchpad.net/~vkbo/+archive/ubuntu/novelwriter
.. _Pre-Release PPA: https://launchpad.net/~vkbo/+archive/ubuntu/novelwriter-pre
This is a brief guide to how you can get novelWriter running on a Linux computer.
There are currently install packages available for Ubuntu and Debian. For other distros it is
recommended that you download either the full source or the minimal package and extract it to a
practical location on your system and run the ``setup.py`` script.
Debian-Based Distros
====================
A general Debian package can be downloaded from the `main website`_. This package should work on
both Debian, Ubuntu and Linux Mint.
If you prefer, you can also add the novelWriter repository on Launchpad to your package manager.
Ubuntu and Mint
---------------
You can add the Ubuntu PPA_ and install novelWriter with the following commands.
.. code-block:: console
sudo add-apt-repository ppa:vkbo/novelwriter
sudo apt update
sudo apt install novelwriter
Debian
------
Since this is a pure Python package, the Launchpad PPA can in principle also be used on Debian.
However, the above command will fail to add the signing key.
Instead, run the following commands to add the repository and key:
.. code-block:: console
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/novelwriter-ppa-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F19F1FCE50043114
echo "deb [signed-by=/usr/share/keyrings/novelwriter-ppa-keyring.gpg] http://ppa.launchpad.net/vkbo/novelwriter/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/novelwriter.list
Then run the update and install commands as for Ubuntu:
.. code-block:: console
sudo apt update
sudo apt install novelwriter
.. note::
Please use the Ubuntu 20.04 packages for Debian. The newer Ubuntu packages use a different
compression that Debian doesn't currently support.
Pre-Releases
------------
There is also a `Pre-Release PPA`_ available with beta releases and release candidates of
novelWriter. For Ubuntu, run the following commands:
.. code-block:: console
sudo add-apt-repository ppa:vkbo/novelwriter-pre
sudo apt update
sudo apt install novelwriter
Minimal Zip File
================
A minimal zip file is provided for Linux. You can download the latest zip file from the release
page on GitHub_, or from the `main website`_. This zip file contains only the files actually needed
to run novelWriter, and none of the additional source files for tests and documentation. You can
extract the file to wherever you want, and run the steps below.
Step 1: Installing Dependencies
-------------------------------
The dependencies of novelWriter are generally available from Linux distro repositories. For Debian
and Ubuntu, they can be installed with:
.. code-block:: console
sudo apt install python3-pyqt5 python3-lxml python3-enchant
If you prefer to install dependencies via PyPi, or the repository dependencies are out of date, you
can install them with:
.. code-block:: console
pip3 install --user -r requirements.txt
Step 2: Create Launcher Icons
-----------------------------
A standard desktop launcher can be installed via the main setup script. It will create the needed
desktop file and add it to the Applications menu. The necessary icons will also be installed, and a
file association with ``.nwx`` files added.
To set this up, run the following from inside the novelWriter folder at the final location:
.. code-block:: console
python3 setup.py xdg-install
This will only install the launcher and icons for the current user. To set up novelWriter for all
users, run:
.. code-block:: console
sudo python3 setup.py xdg-install
Uninstalling Icons
------------------
The steps taken by the ``xdg-install`` step can be reversed by running:
.. code-block:: console
python3 setup.py xdg-uninstall
This will remove the desktop launcher and icons from the system. As above, whether this is done on
the current user, or system wide, depends on whether this command is called with ``sudo`` or not.
-74
View File
@@ -1,74 +0,0 @@
.. _a_setup_mac:
**************
Setup on macOS
**************
.. _GitHub: https://github.com/vkbo/novelWriter/releases
.. _main website: https://novelwriter.io
.. _brew docs: https://docs.brew.sh/Homebrew-and-Python
This is a brief guide to how you can get novelWriter running on macOS. There are currently no
install package of novelWriter for macOS, so it is recommended that you download either the full
source or minimal package and extract it to a practical location on your system and
run it.
Running from Source
===================
To run novelWriter from source, download the latest source package from the release page on
GitHub_ or the `main website`_, or if you have git running on your computer, you can also clone the
repository.
Step 1: Installing Dependencies
-------------------------------
These instructions assume you're using brew, and have Python and pip set up. If not, see the
`brew docs`_ for help. Main requirements are installed via the requirements file. You also need to
install the ``pyobjc`` package, so you should run:
.. code-block:: console
pip3 install --user -r requirements.txt
pip3 install --user pyobjc
For spell checking you may also need to install the enchant package. It comes with a lot of default
dictionaries.
.. code-block:: console
brew install enchant
With the dependencies in place, you can launch the ``novelWriter.py`` script directly to run
novelWriter.
Step 2: Install Package (Optional)
----------------------------------
You can install novelWriter to the correct location for Python packages with:
.. code-block:: console
./setup.py install --user
This requires that the package ``setuptools`` is installed on your system. If not, it can be
installed with:
.. code-block:: console
pip3 install --user setuptools
This is method of install is equivalent to what the ``pip`` installer does. It puts novelWriter in
the location on your system where Python packages are usually kept. This is not really the best
suited location for a GUI application like novelWriter, so you may instead copy the entire source
to a suiteable location yourself.
After this, you should be able to launch novelWriter by running ``novelWriter`` in a command line
window.
.. note::
Right now there isn't a better integration with macOS available. Contributions from someone more
familiar with macOS would be very much appreciated.
-129
View File
@@ -1,129 +0,0 @@
.. _a_setup_win:
****************
Setup on Windows
****************
This is a brief guide to how you can get novelWriter running on a Windows computer.
.. _a_setup_win_install:
Standard Installer
==================
You can install novelWriter with dependencies embedded using the Windows Installer (setup.exe) file
from the `main website`_, or from the GitHub_ releases page. Installing it should be
straightforward.
If you have any issues, try uninstalling the previous version and making a fresh install.
.. _a_setup_win_minimal:
Minimal Package
===============
Alternatively, you can run novelWriter from the "Minimal Package" option from the `main website`_,
or from the GitHub_ releases page (it's the same download file).
This is a zip file containing only the files you need to run novelWriter on Windows. In order to
make it run on your system, you must first have Python installed (Step 1). Thereafter, a script
will do the rest of the job (Step 2).
.. _GitHub: https://github.com/vkbo/novelWriter/releases
.. _main website: https://novelwriter.io
Step 1: Installing Python
-------------------------
If you already have Python installed, you can skip this step. If you don't have it installed, you
can download it from the `python.org`_ website. novelWriter should work with Python 3.6 or higher,
but it is recommended that you install the latest version of Python.
Make sure you select the "Add Python to PATH" option during installation, otherwise the ``python``
command will not work in the command line window.
.. image:: images/python_win_install.png
:width: 600
.. _python.org: https://www.python.org/downloads/windows
Step 2: Installing novelWriter
------------------------------
Extract the novelWriter zip file, and move the extracted folder to a suitable location. You should
probably not keep it on your desktop or in your downloads folder where it may be accidentally
deleted. Instead, move and rename it to for instance ``C:\novelWriter``.
After you've got the folder where you want it, open it and double-click the file named
``windows_install.bat``. This will open a command line window and run the setup script to install
dependencies, and add desktop and start menu icons.
.. _a_setup_win_update:
Update novelWriter
==================
To update novelWriter, simply replace the folder containing the old version with the extracted
folder of the new version you've downloaded. After this, you may need to run the
``windows_install.bat`` script again to update icons.
.. tip::
As long as your system has all the dependencies installed, you can also run novelWriter directly
from the extracted folder by double-clicking the ``novelWriter.pyw`` file.
.. _a_setup_win_uninstall:
Uninstall novelWriter
=====================
If you installed novelWriter with the method described above, you can uninstall it again by
double-clicking the file named ``windows_uninstall.bat``. This should open a command line window
and run the setup script to remove the main dependency packages and remove desktop and start menu
icons.
After that, you can simply delete the novelWriter folder.
If you want to remove Python, it has its own uninstall tool. Just keep in mind that the Python
package manager may leave some files on your system.
.. _a_setup_win_manual:
Manual Approach
===============
If you want more control of what's happening during the install process, or want to do the steps
yourself, you can run the install steps below from a command line window from inside the folder
containing either the minimal package, or the extracted full source package.
.. code-block:: console
pip install --user -r requirements.txt
pip install --user pywin32
python setup.py win-install
The first command will install the three main dependencies of novelWriter using the
`Python Package Index`_ install tool. The packages are ``PyQt5`` for the GUI, ``lxml`` for handling
XML data files, and ``PyEnchant`` for spell checking.
The second command installs a Python tool for Windows that assists the setup script in installing
icons and setting a few registry keys.
The third command runs the setup script that creates the icons for your desktop and start menu, and
adds the necessary registry keys so you can also launch a project by double-clicking a novelWriter
project file from your file explorer.
The above steps can be reverted by running:
.. code-block:: console
python setup.py win-uninstall
pip uninstall pywin32
pip uninstall -r requirements.txt
.. _Python Package Index: https://pypi.org/
+7 -7
View File
@@ -13,7 +13,7 @@ Dependencies
The dependencies for running the tests can be installed with:
.. code-block:: console
.. code-block:: bash
pip install -r requirements-dev.txt
@@ -26,7 +26,7 @@ Simple Test Run
To run the tests, you simply need to execute the following from the root of the source folder:
.. code-block:: console
.. code-block:: bash
pytest
@@ -37,7 +37,7 @@ interfere with the execution of some tests.
You can disable the renderring of the GUI by setting the flag ``export QT_QPA_PLATFORM=offscreen``,
or alternatively run the tests with the ``xvfb`` package, like so:
.. code-block:: console
.. code-block:: bash
xvfb-run pytest
@@ -49,7 +49,7 @@ Adding the flag ``-v`` to the ``pytest`` command will increase verbosity of the
You can also add coverage report generation. For instance to HTML:
.. code-block:: console
.. code-block:: bash
xvfb-run pytest -v --cov=novelwriter --cov-report=html
@@ -58,7 +58,7 @@ Other useful report formats are ``xml``, and ``term`` for terminal output.
You can also run tests per subpackage of novelWriter with the ``-m`` command. The available
subpackage groups are ``base``, ``core``, and ``gui``. Consider for instance:
.. code-block:: console
.. code-block:: bash
xvfb-run pytest -v --cov=novelwriter --cov-report=html -m core
@@ -69,7 +69,7 @@ components, and the "base" tests cover the bits in-between.
You can also filter the tests with the ``-k`` switch. The following will do the same as
``-m core``:
.. code-block:: console
.. code-block:: bash
xvfb-run pytest -v --cov=novelwriter --cov-report=html -k testCore
@@ -78,7 +78,7 @@ They all start with the word "test". Then comes the group: "Core", "Base", "Dlg"
Finally comes the name of the class or module, which generally corresponds to a single source code
file. For instance, running the following will run all tests for the document editor:
.. code-block:: console
.. code-block:: bash
xvfb-run pytest -v --cov=novelwriter --cov-report=html -k testGuiEditor
+154
View File
@@ -0,0 +1,154 @@
.. _a_breakdown:
************
How it Works
************
.. _Typicons: https://github.com/stephenhutchings/typicons.font
The main features of novelWriter are listed in the :ref:`a_intro` section. Here, we go into some
more details on how they are implemented. Later on in this documentation, these features will be
covered in more detail.
.. _a_breakdown_design:
GUI Layout and Design
=====================
The user interface of novelWriter is intended to be as minimalistic as practically possible, while
at the same time provide a complete set of features needed for writing a novel.
The main window does not have a toolbar like many other applications do. This reduces clutter, and
since the documents are formatted with style tags, is more or less redundant. However, most
formatting features supported are available through convenient keyboard shortcuts. They are also
available in the main menu so you don't have to look up formatting codes every time you need them.
However, a list of all shortcuts can be found in the :ref:`a_kb` section.
.. note::
novelWriter is not intended to be a full office type word processor. It doesn't support images,
links, tables, and other complex structures and objects often needed for such documents.
Formatting is limited to headers, emphasis, text alignment, and a few other simple features.
Window Tabs and Areas
---------------------
The main window is split in two, or optionally three, panels. The left-most panel contains the
project tree and all the documents in your project. The second panel is the document editor. An
optional third panel is a document viewer which can view any document in your project independently
of what is open in the document editor. It is not intended as a preview window, although you can
use it for this as well as it will apply the formatting tags you have specified. The main purpose
of the viewer is for viewing your notes next to your editor while you're writing.
The editor also has a :guilabel:`Focus Mode` you can toggle either from the menu, or from the icon
in the editor header. When :guilabel:`Focus Mode` is enabled, all the user interface elements other
than the document editor itself are hidden away.
A second tab is also available on the main window. This is the :guilabel:`Outline` tab where the
entire novel structure can be displayed, with all the tags and references listed. Depending on how
you structure your novel documents, this outline can be quite different from your project tree.
Your project tree lists individual documents, your Outline tree lists the structure of the novel
itself in terms of partitions, chapters and scenes as it appears in the text of those documents.
Colour Themes
-------------
The colour theme of the user interface defaults to that of the host operating system. Some other
light and dark colour themes are provided, and can be enabled in :guilabel:`Preferences` from the
:guilabel:`Tools` menu. A number of syntax highlighting themes are also available in
:guilabel:`Preferences`. Icon themes for light and dark GUIs are also available. The icons are
based on the Typicons_ icon set designed by Stephen Hutchings.
.. note::
The GUI colour theme and the syntax highlighting theme are separate settings in
:guilabel:`Preferences`. If you switch to dark mode on the GUI, you should also switch the icon
theme and syntax highlighting theme.
.. _a_breakdown_project:
Project Layout
==============
This is a brief introduction to how you structure your writing projects. All of this will be
covered in more detail later.
The main point is that you are free to organise your project documents as you wish into subfolders,
and split the text between documents in whatever way suits you. All that matters to novelWriter is
the linear order the documents appear at in the project tree (top to bottom). The chapters, scenes
and sections of the novel are determined by the headings within those documents.
The four heading levels (**H1** to **H4**) are treated as follows:
* **H1** is used for the book title, and for partitions.
* **H2** is used for chapter tiles.
* **H3** is used for scene titles optionally replaced by separators.
* **H4** is for section titles within scenes, if such granularity is needed.
This header level structure is only taken into account for novel documents. For the project notes,
the header levels have no structural meaning, and the user is free to do whatever they want. See
:ref:`a_struct` and :ref:`a_notes` for more details.
.. _a_breakdown_export:
Project Export
==============
The project can at any time be exported to a range of different formats through the
:guilabel:`Build Novel Project` tool. Natively, novelWriter supports export to Open Document,
HTML5, and various flavours of Markdown.
The HTML5 export format is suitable for conversion by a number of other tools like Pandoc, or for
importing into word processors if the Open Document format isn't suitable. In addition, printing
and printing to PDF is also possible.
You can also export the content of the project to a JSON file. This is useful if you want to write
your own processing script in for instance Python as the entire novel can be read into a Python
dictionary with a couple of lines of code. The JSON file can be populated either with HTML
formatted text, or with the raw text as typed into the novel documents. See :ref:`a_export_options`
for more details.
A number of filter options can be applied to the :guilabel:`Build Novel Project` tool, allowing you
to export a draft manuscript, a reference document of notes, an outline based on chapter and scene
titles with a synopsis each, and so on. See :ref:`a_export` for more details on export features and
formats.
.. _a_breakdown_storage:
Project Storage
===============
The files of a novelWriter project are stored in a dedicated project folder. The project structure
is kept in a file at the root of this folder called ``nwProject.nwx``. All the document files and
associated meta data is stored in the other folders below the project folder. For more technical
details about what all the files mean and how they're organised, see the :ref:`a_storage` section.
This way of storing data was chosen for several reasons. Firstly, all the text you add to your
project is saved directly to your project folder in separate files. Only the project structure and
the text you are currently editing is stored in memory at any given time. Secondly, having multiple
small files means it is very easy to sync them between computers with standard file synchronisation
tools. Thirdly, if you use version control software to track the changes to your project, the file
formats used for the files are well suited. Also the JSON documents have line breaks and indents.
.. note::
Since novelWriter has to keep track of a bunch of files and folders when a project is open, it
may not run well on some virtual file systems. A file or folder must be accessible with exactly
the path it was saved or created with. An example where this is not the case is the way Google
Drive is mapped on Linux Gnome desktops using gvfs/gio.
.. caution::
You should not add additional files to the project folder yourself. Nor should you manually edit
files within it as a general rule. If you really must manually edit the text files, e.g. with
some automated task you want to perform, you need to rebuild the index when you open the project
again.
Editing text files in the ``content`` folder is less risky as they are just plain text. Editing
the main project XML file, however, may make the project file unreadable and you may crash
novelWriter and lose project structure information and project settings.
+26 -7
View File
@@ -4,23 +4,41 @@
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.
The novelWriter text editor 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* strictly 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 :ref:`a_fmt_text` below for more details.
.. _a_fmt_hlight:
Syntax Highlighting
===================
The editor has a syntax highlighter feature that is meant to help you know when you've used the
formtatting tags or other features correctly. It will change the colour and font size of your
headings, change the text colour of emphasised text, and it can also show you where you have
dialogue in your text.
When you use the commands to set tags and references, these also change colour. Correct commands
have a dedicated colour, and the references themselves will get a colour if they are valid. Invalid
references will get a squiggly error line underneath.
There are a number of syntax highlighter colour themes available, both for light and dark GUIs. You
can select them for :guilabel:`Preferences`.
.. _a_fmt_head:
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
That is, novelWriter doesn't assign the different headings any meaning. However, for novel
documents they indicate the structural level of the novel and must be used correctly to produce the
intended result. See :ref:`a_struct_heads` for more details.
@@ -81,8 +99,9 @@ Non-breaking spaces are highlighted by the syntax highlighter with an alternate
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.
Non-breaking spaces are for instance the correct type of space to separate a number from its
unit. Generally, non-breaking spaces are used to prevent line wrapping algorithms from adding
line breaks where they shouldn't.
.. _a_fmt_emph:
+19 -16
View File
@@ -1,11 +1,13 @@
.. _a_ui:
***********************
User Interface Overview
***********************
******************
The 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.
.. _Compose Key: https://en.wikipedia.org/wiki/Compose_key
This sections covers in more detail what all the information on the user interface is for, and how
you can organise your project, and how you use the editor, viewer and outline panel.
.. _a_ui_tree:
@@ -14,7 +16,7 @@ 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:
the project, and has four columns:
**Column 1**
The first column shows the icon and label of each folder, document, or note in your project. The
@@ -30,7 +32,7 @@ the project. It has four columns:
**Column 3**
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.
but want to keep in the project tree for reference.
**Column 4**
The fourth column shows the user-defined status or importance labels you've assigned to each
@@ -60,7 +62,7 @@ story itself rather than the document files.
.. note::
You cannot reorganise the entries in the novel tree, or add any new ones, as that would imply
restructuring the content of the document files.
restructuring the content of the document files. Any editing must be done in the project tree.
.. _a_ui_tree_status:
@@ -117,9 +119,9 @@ 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
markdown-like syntax for some features, and a novelWriter-specific syntax for others. The syntax
format is described in the :ref:`a_fmt` section below. The editor has a maximise button (toggles
the :guilabel:`Focus Mode`) and a close button in the topright corner. On the topleft side you
will find an edit button that opens the :guilabel:`Item Settings` dialog for the currently open
format is described in the :ref:`a_fmt` section. The editor has a maximise button (toggles the
:guilabel:`Focus Mode`) and a close button in the topright corner. On the topleft side you will
find an edit button that opens the :guilabel:`Item Settings` dialog for the currently open
document, and a search button to open the search dialog.
Any document in the project tree can also be viewed in parallel in a right hand side document
@@ -132,8 +134,11 @@ 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`. 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.
set in :guilabel:`Preferences`.
.. tip::
Clicking on the document title bar will select the document in the project tree and reveal its
location, 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,
@@ -172,7 +177,7 @@ Pressing :kbd:`Return` while in the search box will search for the next occurren
the highlighted text and move to the next result.
There are a number of settings for the search tool available as toggle switches above the search
box. They allows you to search for, in order: matched case only, whole word results only, search
box. They allow 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
@@ -196,8 +201,6 @@ you wish.
the :guilabel:`Insert` menu, and via convenient :ref:`a_kb_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
+2 -2
View File
@@ -16,7 +16,7 @@ The main shorcuts are as follows:
.. csv-table:: Keyboard Shortcuts
:header: "Shortcut", "Description"
:widths: 30, 70
:widths: 25, 75
:class: "tight-table"
":kbd:`Alt`:kbd:`1`", "Switch focus to the project tree. On Windows, use :kbd:`Ctrl`:kbd:`Alt`:kbd:`1`."
@@ -110,7 +110,7 @@ a key or key combination for the inserted content.
.. csv-table:: Keyboard Shortcuts
:header: "Shortcut", "Description"
:widths: 40, 60
:widths: 25, 75
:class: "tight-table"
":kbd:`Ctrl`:kbd:`K`, :kbd:``", "Insert a short dash (en dash)."