From 44c6c136a2ad6c1e1e91a8b30ae5e1c9ce27e235 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Thu, 24 Nov 2022 15:13:46 +0100 Subject: [PATCH] Update docs, second round --- docs/source/_static/novelwriter-dark.png | Bin 0 -> 33051 bytes docs/source/_static/novelwriter-light.png | Bin 0 -> 23559 bytes docs/source/index.rst | 6 +- docs/source/int_customise.rst | 23 ++++--- docs/source/int_introduction.rst | 32 +++++---- docs/source/int_overview.rst | 16 +++-- docs/source/int_source.rst | 17 +++-- docs/source/int_started.rst | 22 +++---- docs/source/project_export.rst | 7 +- docs/source/project_notes.rst | 24 +++---- docs/source/project_overview.rst | 67 ++++++++++--------- docs/source/project_structure.rst | 32 ++++----- docs/source/tech_locations.rst | 4 +- docs/source/tech_storage.rst | 31 +++++---- docs/source/tech_tests.rst | 2 +- docs/source/usage_breakdown.rst | 76 +++++++++++++--------- docs/source/usage_format.rst | 26 ++++---- docs/source/usage_interface.rst | 37 ++++++----- docs/source/usage_projectformat.rst | 7 +- docs/source/usage_shortcuts.rst | 35 +++++----- docs/source/usage_typography.rst | 15 ++--- 21 files changed, 267 insertions(+), 212 deletions(-) create mode 100644 docs/source/_static/novelwriter-dark.png create mode 100644 docs/source/_static/novelwriter-light.png diff --git a/docs/source/_static/novelwriter-dark.png b/docs/source/_static/novelwriter-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..0ad6329d367d819c0b0b27a8935be083849e2d70 GIT binary patch literal 33051 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 HN!b4a0x3)I literal 0 HcmV?d00001 diff --git a/docs/source/index.rst b/docs/source/index.rst index f35ac64c..55df2c4d 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -27,11 +27,11 @@ 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, or installed from packages or the pip -tool. See :ref:`a_started` for more details. +as well. novelWriter can also be run directly from the Python source, or installed from packages or +the pip tool. See :ref:`a_started` for more details. .. note:: - Version 1.5 introduced 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 some 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. diff --git a/docs/source/int_customise.rst b/docs/source/int_customise.rst index ef71544a..9e42c2ca 100644 --- a/docs/source/int_customise.rst +++ b/docs/source/int_customise.rst @@ -4,6 +4,9 @@ Customisations ************** +.. _Enchant: https://abiword.github.io/enchant +.. _Free Desktop: https://cgit.freedesktop.org/libreoffice/dictionaries/tree/ + There are a few ways you can customise novelWriter youself. Currently, you can add new GUI themes, your own syntax themes, and install additional dictionaries. @@ -13,19 +16,20 @@ your own syntax themes, and install additional dictionaries. Spell Check Dictionaries ======================== -novelWriter uses `Enchant `_ as the spell checking tool. -Depending on you operating system, it may or may not load installed spell check dictionaries. +novelWriter uses Enchant_ as the spell checking tool. Depending on you operating system, it may or +may not load installed spell check dictionaries. Linux On Linux, you generally only have to install hunspell or aspell dictionaries on your system like - you do for other applications. See your distro's documentation for how to do this. + you do for other applications. See your distro's documentation for how to do this. These + dictionaries should then show up as available spell check languages in novelWriter. Windows For Windows, English is included with the installation. For other languages you have to download - and add dictionaries yourself. You can find the various dictionaries on the - `Free Desktop `_ website. You should - find a folder for your language, if it is available at all, and download the files ending with - ``.aff`` and ``.dic``. These files must then be copied to the following location: + and add dictionaries yourself. You can find the various dictionaries on the `Free Desktop`_ + website. You should find a folder for your language, if it is available at all, and download the + files ending with ``.aff`` and ``.dic``. These files must then be copied to the following + location: ``C:\Users\\AppData\Local\enchant\hunspell`` @@ -50,11 +54,12 @@ modify it as you like. `novelwriter/assets/themes `_. Remember to also change the name of your theme by modifying the ``name`` setting at the top of the -file. +file, otherwise you may not be able to distinguish them in :guilabel:`Preferences`. For novelWriter to be able to locate the custom theme files, you must copy them to the :ref:`a_locations_data` location in your home or user area. There should be a folder there named -``syntax`` for syntax themes and just ``themes`` for GUI themes. +``syntax`` for syntax themes and just ``themes`` for GUI themes. These folders are created the +first time you start novelWriter. Once the files are copied there, they should show up in :guilabel:`Preferences` with the label you set as ``name`` inside the file. diff --git a/docs/source/int_introduction.rst b/docs/source/int_introduction.rst index 64763498..5eeffb7b 100644 --- a/docs/source/int_introduction.rst +++ b/docs/source/int_introduction.rst @@ -4,10 +4,19 @@ Key Features ************ -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 to those relevant for this purpose. Your novel project is organised as a collection of -separate plain text documents instead of a single, large document. +.. _Snowflake : https://www.advancedfictionwriting.com/articles/snowflake-method/ + +At the core, novelWriter is a multi-document plain text editor. It uses a markup syntax inspired by +Markdown to apply simple formatting to the text. It is designed for writing fiction, so the +formatting features are limited to those relevant for this purpose. It is not suitable for +technical writing. + +Your novel project is organised as a collection of separate plain text documents instead of a +single, large document. The idea here is to make it easier to reorganise your project structure +without having to cut and paste text. + +You can at any point split documents by their header, or merge multiple documents into single +documents. This makes it easier to use variations of the popular Snowflake_ method for writing. Below are some key features of novelWriter. @@ -33,24 +42,25 @@ Below are some key features of novelWriter. **Keep track of your plot elements** All notes in your project can be assigned a *tag* you can *reference* from any other document or - notes. In fact, you can add a new tag under each heading of a note if you need to be able to + 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 reference keywords. **Get an overview of your plot elements** In the :guilabel:`Outline View` on the main window you can see an outline of all the chapters, scenes, and 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 View` as a replacement for the main - project tree. + additional columns. You can also add a synopsis to each document, which can be listed here as + well. You have the option to add or remove columns of information from this outline. A subset of + the outline information is also available in the :guilabel:`Novel View` as a replacement for the + main project tree. **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. + can be opened by most office type word processors. You can also generate the result as HTML, or + Markdown, both suitable for further conversion to other formats. .. _a_intro_screenshots: @@ -58,7 +68,7 @@ Below are some key features of novelWriter. Screenshots =========== -**novelWriter with default system theme:** +**novelWriter with default theme:** .. image:: images/screenshot_default.png :width: 800 diff --git a/docs/source/int_overview.rst b/docs/source/int_overview.rst index 372bfd57..7cbb146d 100644 --- a/docs/source/int_overview.rst +++ b/docs/source/int_overview.rst @@ -15,11 +15,13 @@ language that doesn't require a compiler to build and run. That means that the c computer right out of the box, or from a zip file. While it is developed for Linux primarily, it runs just fine on Windows as well. It also works fine -on macOS, but the author is not a mac user, so less attention is paid to that platform. +on macOS, but the author is not a mac user, so support for mac is dependant on user feedback and +contributions. In order to run novelWriter, you also need a few additional packages. The user interface is built with `Qt 5 `_, a cross platform library for building graphical user interface -applications. +applications. It also uses a third party XML package. If you want spell checking, you also need the +spell check package Enchant developed for AbiWord For install instructions, see :ref:`a_started`. @@ -43,12 +45,12 @@ read on. :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. + use 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 mostly for - reference. + shortcuts are also listed next to the menu items inside the app, or in tool tips, so this + section is mostly for reference. :ref:`a_typ` – Optional This section gives you an overview of the special typographical symbols available in @@ -72,8 +74,8 @@ to take advantage of these features, you must structure your text in a specific 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 the text, - and how to set up automated backups of your work. + This section explains how you organise the content of your project, and how to 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 diff --git a/docs/source/int_source.rst b/docs/source/int_source.rst index b364cea4..52c246be 100644 --- a/docs/source/int_source.rst +++ b/docs/source/int_source.rst @@ -15,8 +15,7 @@ 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 now deprecated, but many systems still have both Python 2 and 3. For such systems, the command - ``python3`` may be needed instead. On Linux, the scripts can also be made executable and run - without the ``python`` command. Likewise, ``pip`` may need to be replaced with ``pip3``. + ``python3`` may be needed instead. Likewise, ``pip`` may need to be replaced with ``pip3``. .. _a_source_depend: @@ -34,10 +33,10 @@ The following Python packages are needed to run novelWriter: * ``lxml`` – needed for full XML support. * ``PyEnchant`` – needed for spell checking (optional). -PyQt/Qt should be at least 5.10, but ideally 5.13 or higher for nearly all features to work. For -instance, searching using regular expressions with full Unicode support requires 5.13. There is no -known minimum version requirement for package ``lxml``, but the code was originally written with -4.2, which is therefore set as the minimum. It may work on lower versions. You have to test it. +PyQt/Qt should be at least 5.10, but ideally 5.13 or higher for all features to work. For instance, +searching using regular expressions with full Unicode support requires 5.13. There is no known +minimum version requirement for package ``lxml``, but the code was originally written with 4.2, +which is therefore set as the minimum. It may work on lower versions. You have to test it. If you want spell checking, you must install the ``PyEnchant`` package. The spell check library must be at least 3.0 to work with Windows. On Linux, 2.0 also works fine. @@ -102,12 +101,12 @@ You can build the ``.qm`` files with: python setup.py qtlrelease This requires that the Qt Linguist tool is installed on your system. On Ubuntu and Debian, the -needed package is called `qttools5-dev-tools`. +needed package is called ``qttools5-dev-tools``. .. note:: If you want to improve novelWriter with translation files for another language, or update an - existing translation, instructions for how to contribute can be found in the README.md file in - the ``i18n`` folder of the source code. + existing translation, instructions for how to contribute can be found in the ``README.md`` file + in the ``i18n`` folder of the source code. .. _a_source_sample: diff --git a/docs/source/int_started.rst b/docs/source/int_started.rst index 2bd5afb3..42002efc 100644 --- a/docs/source/int_started.rst +++ b/docs/source/int_started.rst @@ -53,7 +53,7 @@ Install on Linux ================ 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. +This package should work on both Debian, Ubuntu and Linux Mint, at least. If you prefer, you can also add the novelWriter repository on Launchpad to your package manager. @@ -98,12 +98,12 @@ Then run the update and install commands as for Ubuntu: different compression algorithm that Debian doesn't currently support. -Other Distros -------------- +AppImage Releases +----------------- For other Linux distros than the ones mentioned above, the primary option is AppImage_. These are completely standalone images for the app that include the necessary environment to run novelWriter. -They can be run on any Linux distro. +They can of course be run on any Linux distro, if you prefer this to native packages. .. _a_started_minimal: @@ -120,8 +120,8 @@ These zip files don't include any dependencies, so you must install them separat .. _a_started_minimal_windows: -Windows -------- +Minimal Package on Windows +-------------------------- First, make sure you have Python installed on your system. If you don't, you can download it from `python.org`_. Python 3.7 or higher is required, but it is recommended that you install the latest @@ -149,8 +149,8 @@ you can just delete the novelWriter folder. .. _a_started_minimal_linux: -Linux ------ +Minimal Package on Linux +------------------------ On Linux you need to install the following packages on Debian-based distros, including Ubuntu and Linux Mint: @@ -167,7 +167,7 @@ On Fedora, you need the following packages: 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. +file association with ``.nwx`` project files added. To set this up, run the following from inside the extracted novelWriter folder: @@ -186,8 +186,8 @@ To uninstall the icons, run: .. _a_started_minimal_mac: -macOS ------ +Minimal Package on 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 diff --git a/docs/source/project_export.rst b/docs/source/project_export.rst index 6055d991..ea29fa15 100644 --- a/docs/source/project_export.rst +++ b/docs/source/project_export.rst @@ -8,13 +8,18 @@ You can at any time build a manuscript, an outline of your notes, or any other t from the text in your project. All of this is handled by the :guilabel:`Build Novel Project` tool. You can activate it from the sidebar, the :guilabel:`Tools` menu, or by pressing :kbd:`F5`. +.. note:: + This tool is scheduled to receive a full update in novelWriter 2.1, adding many new features + requested by users. See the `2.1 Milestone `_ + for an overview. + .. _a_export_headers: Header Formatting ================= -The titles for the five types of titles (the chapter headings come in a numbered and unnumbered +The titles for the five types of headings (the chapter headings come in a numbered and unnumbered version) of story structure can be formatted collectively in the build tool. This is done through a series of keyword–replace steps. They are all on the format ``%keyword%``. diff --git a/docs/source/project_notes.rst b/docs/source/project_notes.rst index 992f812e..2536225e 100644 --- a/docs/source/project_notes.rst +++ b/docs/source/project_notes.rst @@ -13,9 +13,9 @@ The relation between all these additional elements is extracted from the documen project indexer, based on the tags and references you set within them. Using notes is not required, but making at least minimal notes for each plot element, and adding a -tag to them, makes it possible to use the :guilabel:`Outline` feature to see how each element -intersects with each section of the novel itself, and adds clickable cross-references between -documents in the editor and viewer. +tag to them, makes it possible to use the Outline View to see how each element intersects with each +section of the novel itself, and adds clickable cross-references between documents in the editor +and viewer. .. _a_notes_tags: @@ -24,10 +24,10 @@ Tags in Notes ============= Each new heading in a note can have a tag associated with it. The format of a tag is -``@tag: tagname``, where tagname is a unique identifier. Tags can then be referenced in the novel -documents, or cross-referenced in other notes, and will show up in the Outline View and in the -back-reference panel when a document is opened in the viewer. See :ref:`a_struct_tags` for how to -reference notes. +``@tag: tagname``, where tagname is a unique identifier of your choosing. Tags can then be +referenced in the novel documents, or cross-referenced in other notes, and will show up in the +Outline View and in the back-reference panel when a document is opened in the viewer. See +:ref:`a_struct_tags` for how to reference notes. The syntax highlighter will alert the user that the keyword is correctly used and that the tag is allowed, that is, the tag is unique. Duplicate tags should be detected as long as the index is up @@ -39,11 +39,11 @@ is there for the writer to use in whatever way they wish. Of course, the content can be added to the manuscript, or an outline document. If you want to compile a single document of all your notes, you can do this from the :guilabel:`Build Novel Project` tool. -A note can also reference other notes in the same way novel documents do. When the note is opened -in the view panel, the references become clickable links, making it easier to follow connections in -the plot. Notes don't show up in the Outline View though, so referencing between notes is only -meaningful if you want to be able to click-navigate between them, or of course if you just want to -highlight that two notes are related. +One note can also reference another note in the same way novel documents do. When the note is +opened in the view panel, the references become clickable links, making it easier to follow +connections in the plot. Notes don't show up in the Outline View though, so referencing between +notes is only meaningful if you want to be able to click-navigate between them, or of course if you +just want to highlight that two notes are related. .. tip:: If you cross-reference between notes and export your project as an HTML document using the diff --git a/docs/source/project_overview.rst b/docs/source/project_overview.rst index 5f7cc103..b272f3f4 100644 --- a/docs/source/project_overview.rst +++ b/docs/source/project_overview.rst @@ -6,9 +6,10 @@ Novel Projects New projects can be created from the :guilabel:`Project` menu by selecting :guilabel:`New Project`. This will open the :guilabel:`New Project Wizard` that will assist you in creating a barebone -project suited to your needs. A novelWriter project requires a dedicated folder for storing its -files on the local file system. See :ref:`a_storage` for further details on how files are -organised. +project suited to your needs. + +A novelWriter project requires a dedicated folder for storing its files on the local file system. +See :ref:`a_storage` for further details on how files are organised. A list of recently opened projects is maintained, and displayed in the :guilabel:`Open Project` dialog. A project can be removed from this list by selecting it and pressing the :kbd:`Del` key or @@ -33,23 +34,28 @@ other root folders. These other root folder types are intended for your notes on elements of your story. Using them is of course entirely optional. A new project may not have all of the root folders present, but you can add the ones you want from -the project tree. +the project tree tool bar. -Each root folder has one or more reference keyword associated with it that can be used to reference -tags in your notes from other documents and notes. The intended usage of each type of root folder -is listed below. However, aside from the :guilabel:`Novel` folder, no restrictions are applied by -the application. You can use them however you want. +Each root folder has one or more reference keyword associated with it that is used to reference +them from other documents and notes. The intended usage of each type of root folder is listed +below. However, aside from the :guilabel:`Novel` folder, no restrictions are applied by the +application on what you put in them. You can use them however you want. -You can make multiple root folders of each kind. +.. tip:: + You can make multiple root folders of each kind if you wish to split up your notes. + +.. note:: + It is not the notes themselves that are referenced by the listed reference keywords, but tags + set within the notes. See the examples below and in :ref:`a_struct_tags`. :guilabel:`Novel` - This is the root folder of all text that goes into the final novel. This class of documents have - other rules and features than other documents in the project. See :ref:`a_struct` for more + This is the root folder of all text that goes into the final novel or novels. This class of + documents have other rules and features than the project notes. See :ref:`a_struct` for more details. :guilabel:`Plot` This is the root folder where main plots can be outlined. It is optional, but adding at least - brief notes can be useful in order to tag plot elements for the Outline view. Tags in this + brief notes can be useful in order to tag plot elements for the Outline View. Tags in this folder can be references using the ``@plot`` keyword. :guilabel:`Characters` @@ -84,7 +90,7 @@ You can make multiple root folders of each kind. The root folders correspond to the categories of tags that can be used to reference them. For more information about the tags listed, see :ref:`a_struct_tags`. -.. tip:: +.. note:: You can rename root folders to whatever you want. However, this doesn't change the reference keyword. @@ -183,7 +189,7 @@ this warning, and continue opening the project at your own risk. the project are in fact open, you are likely to cause inconsistencies and create diverging project files, potentially resulting in loss of data and orphaned files. You are not likely to lose any actual text unless both instances have the same document open in the editor, and - novelWriter will try to resolve inconsistencies the next time you open the project. + novelWriter will try to resolve project inconsistencies the next time you open the project. .. _a_proj_roots_dirs: @@ -211,15 +217,15 @@ documents. Project Documents ================= -New documents can be created from tool bar in the Project Tree, or by pressing :kbd:`Ctrl`:kbd:`N`. -This will open the create new item menu and let you choose between a number of pre-defined -documents and folders. You will be prompted for a label for the new item. You can always rename an -item by selecting :guilabel:`Rename Item` from the :guilabel:`Project` menu, or by pressing -:kbd:`F2`. +New documents can be created from the tool bar in the Project Tree, or by pressing +:kbd:`Ctrl`:kbd:`N`. This will open the create new item menu and let you choose between a number of +pre-defined documents and folders. You will be prompted for a label for the new item. You can +always rename an item by selecting :guilabel:`Rename Item` from the :guilabel:`Project` menu, or by +pressing :kbd:`F2`. Other settings for project items are available from the context menu that you can activate by -right-clicking on them inb the Project Tree. The :guilabel:`Transform` submenu includes options for -converting, splitting, or merging items. +right-clicking on an item in the Project Tree. The :guilabel:`Transform` submenu includes options +for converting, splitting, or merging items. .. _a_proj_files_counts: @@ -228,7 +234,7 @@ Word Counts ----------- A character, word and paragraph count is maintained for each document, as well as for each section -of a document following a header. The word count, and change of words in the current session, is +of a document following a header. The word count and change of words in the current session is displayed in the footer of any document open in the editor, and all stats are shown in the details panel below the project tree for any document selected in the project or novel tree. @@ -257,9 +263,9 @@ The :guilabel:`Settings` tab holds the project name, title, and author settings. The :guilabel:`Project Name` can be set to a different value than the :guilabel:`Novel Title`. The difference between them is simply that the :guilabel:`Project Name` is used for the GUI (main -window title) and for generating the backup files. The intention is that the :guilabel:`Project -Name` should remain unchanged throughout the project, otherwise the name of exported files and -backup files may change too. +window title) and for generating the backup files. The intention is that the +:guilabel:`Project Name` should remain unchanged throughout the project's lifetime, otherwise the +name of exported files and backup files may change too. The :guilabel:`Novel Title` and :guilabel:`Authors` settings are used when building the manuscript, for some formats. @@ -272,8 +278,8 @@ setting. Status and Importance Tabs -------------------------- -Each document or folder of type :guilabel:`Novel` can be given a _Status_ label accompanied by a -coloured icon, and each document or folder of the remaining types can be given an _Importance_ +Each document or folder of type :guilabel:`Novel` can be given a *Status*_* label accompanied by a +coloured icon, and each document or folder of the remaining types can be given an *Importance* label. These are purely there for the user's convenience, and you are not required to use them for any @@ -297,7 +303,7 @@ will be replaced by the text in the right column when documents are opened in th also be applied to manuscript builds. The auto-replace feature will replace text in angle brackets that are in this list. The syntax -highlighter will add an alternate colour to text marching the syntax, but it doesn't check if the +highlighter will add an alternate colour to text matching the syntax, but it doesn't check if the text is in this list. .. note:: @@ -336,13 +342,14 @@ Writing Statistics ================== When you work on a project, a log file records when you opened it, when you closed it, and the -total word counts of your novel documents and notes at the end of the session provided that the +total word counts of your novel documents and notes at the end of the session, provided that the session lasted either more than 5 minutes, or that the total word count changed. You can view this file in the ``meta`` folder in the directory where you saved your project. The file is named ``sessionStats.log``. A tool to view the content of this file is available in the :guilabel:`Tools` menu under -:guilabel:`Writing Statistics`. You can also launch it by pressing :kbd:`F6`. +:guilabel:`Writing Statistics`. You can also launch it by pressing :kbd:`F6`, or find it on the +Sidebar. The tool will show a list of all your sessions, and a set of filters to apply to the data. You can also export the filtered data to a JSON file or to a CSV file that can be opened by a spreadsheet diff --git a/docs/source/project_structure.rst b/docs/source/project_structure.rst index 445c22c7..35cc861e 100644 --- a/docs/source/project_structure.rst +++ b/docs/source/project_structure.rst @@ -51,7 +51,7 @@ The syntax for the four basic header types, and the two special header types, is This header level signifies a sub-scene level partition, usually called a "section" in the documentation and the user interface. These can be useful if you want to change tag references mid-scene, like if you change the point-of-view character. You are free to use sections as you - wish, and can filter them out of the final manuscript just like with scene titles. + wish, and you can filter them out of the final manuscript just like with scene titles. Page breaks are automatically added before level 1 and 2 headers when you build your project to a format that supports page breaks, or when you print the document directly from the build tool. If @@ -80,7 +80,7 @@ for instance the author's name and details. If you want an additional page of text after the title page, starting on a fresh page, you can add ``[NEW PAGE]`` on a line by itself, and continue the text after it. This will insert a page break -before the text. +before the text. See also :ref:`a_fmt_break`. .. _a_struct_heads_unnum: @@ -124,42 +124,42 @@ below. The format of a reference line is ``@keyword: value1, [value2] ... [value allow multiple values. ``@pov`` - The point-of-view character for the current section. The target must be a note tag in the + The point-of-view character for the current section. The target must be a note tag in a :guilabel:`Character` type root folder. ``@focus`` The character that has the focus for the current section. This can be used in cases where the - focus is not a point-of-view character. The target must be a note tag in the - :guilabel:`Character` type root folder. + focus is not a point-of-view character. The target must be a note tag in a :guilabel:`Character` + type root folder. ``@char`` - Other characters in the current section. The target must be a note tag in the - :guilabel:`Character` type root folder. This should not include the point-of-view character. + Other characters in the current section. The target must be a note tag in a + :guilabel:`Character` type root folder. This should not include the point-of-view or focus + character if those references are used. ``@plot`` - The plot or subplot advanced in the current section. The target must be a note tag in the + The plot or subplot advanced in the current section. The target must be a note tag in a :guilabel:`Plot` type root folder. ``@time`` - The timelines touched by the current section. The target must be a note tag in the + The timelines touched by the current section. The target must be a note tag in a :guilabel:`Timeline` type root folder. ``@location`` - The location the current section takes place in. The target must be a note tag in the + The location the current section takes place in. The target must be a note tag in a :guilabel:`Locations` type root folder. ``@object`` - Objects present in the current section. The target must be a note tag in the :guilabel:`Object` + Objects present in the current section. The target must be a note tag in a :guilabel:`Object` type root folder. ``@entity`` - Entities present in the current section. The target must be a note tag in the + Entities present in the current section. The target must be a note tag in a :guilabel:`Entities` type root folder. ``@custom`` Custom references in the current section. The target must be a note tag in a :guilabel:`Custom` - type root folder. You can add more than one Custom folder, but they all use the same reference - keyword. + type root folder. The custom folder are for any other category of notes you may want to use. The syntax highlighter will alert the user that the tags and references are used correctly, and that the tags referenced exist. @@ -204,5 +204,5 @@ For novel documents, the heading level of the first heading is recorded, and ind .. tip:: You can always start writing with a coarse setup with one or a few documents, and then later use - the split tool to automatically split the documents into separate chapter and scene documents. - You can split a document on any of the four header levels. + the split tool to split the documents into separate chapter and scene documents. You can split a + document on any of the four header levels. diff --git a/docs/source/tech_locations.rst b/docs/source/tech_locations.rst index f3003e37..29edfb3d 100644 --- a/docs/source/tech_locations.rst +++ b/docs/source/tech_locations.rst @@ -39,8 +39,8 @@ Application Data ================ novelWriter also stores a bit of data that is generated by the user's actions. This includes the -list of recent projects form the :guilabel:`Open Project` dialog. Custom themes are also saved -here. The system paths are provided by the Qt QStandardPaths_ class and its AppDataLocation. +list of recent projects form the :guilabel:`Open Project` dialog. Custom themes should also be +saved here. The system paths are provided by the Qt QStandardPaths_ class and its AppDataLocation. The standard paths are: diff --git a/docs/source/tech_storage.rst b/docs/source/tech_storage.rst index c06aff2e..6bb51cfc 100644 --- a/docs/source/tech_storage.rst +++ b/docs/source/tech_storage.rst @@ -13,14 +13,14 @@ Project Structure All novelWriter files are written with utf-8 encoding. Since Python automatically converts Unix line endings to Windows line endings on Windows systems, novelWriter does not make any adaptations to the formatting on Windows systems. This is handled entirely by the Python standard library. -Python also handles this fairly well when working on the same files on both Windows and Unix-based -operating systems. +Python also handles this when working on the same files on both Windows and Unix-based operating +systems. Main Project File ----------------- -The project itself requires a dedicated folder for storing its files where novelWriter will create +The project itself requires a dedicated folder for storing its files, where novelWriter will create its own "file system" where the folder and file hierarchy is described in a project XML file. This is the main project file in the project's root folder with the name ``nwProject.nwx``. This file also contains all the meta data required for the project, and a number of related project settings. @@ -33,7 +33,7 @@ your own backup solution. The novelWriter project folder is structured so that it can easily be added to a version control system like git. If you do so, you may want to add a `.gitignore` file to exclude files with the extensions `.json` as JSON files are used to cache the index and various run-time settings and - are generally large files that change often. You'd also want to exclude the ``cache`` folder. + are generally large files that change often. The project XML file is indent-formatted, and is suitable for diff tools and version control since most of the file will stay static, although a timesetamp is set in the meta section on line 2, and @@ -44,9 +44,8 @@ Project Documents ================= All the project documents are saved in a folder in the main project folder named ``content``. Each -document has a file handle taken from the first 13 characters of a SHA256 hash of the system time -when the document was first created, plus an incremented number. The documents are saved with a -filename assembled from this hash and the file extension ``.nwd``. +document has a file handle based on a 52 bit random number, represented as a hexadecimal string. +The documents are saved with a filename assembled from this handle and the file extension ``.nwd``. If you wish to find the file system location of a document in the project, you can either look it up in the project XML file, select :guilabel:`Show File Details` from the :guilabel:`Document` menu @@ -56,7 +55,8 @@ where they are saved. The reason for this cryptic file naming is to avoid issues with file naming conventions and restrictions on different operating systems, and also to have a file name that does not depend on -what the user names the document within the project, or changes it to. +what the user names the document within the project, or changes it to. This is particularly useful +when using a versioning system. Each document file contains a plain text version of the text from the editor. The file can in principle be edited in any text editor, and is suitable for diffing and version control if so @@ -98,8 +98,8 @@ folder contains semi-important files. That is, they can be lost with only minor project. If you use version control software on your project, you can exclude this folder, although you may -want to track the session log file. The JSON files within this folder can safely be ignored as they -will be automatically regenerated if lost. +want to track the session log file and the custom words list. The JSON files within this folder can +safely be ignored as they will be automatically regenerated if lost. The Project Index @@ -131,6 +131,14 @@ The file is not critical, but if it is lost, all such GUI options will revert ba settings. +Custom Word List +---------------- + +A file named ``meta/wordlist.txt`` contains all the custom words you've added to the project for +spell checking purposes. The content of the file can be edited from the :guilabel:`Tools` menu. If +you lose this file, all your custom spell check words will be lost too. + + Session Stats ------------- @@ -147,4 +155,5 @@ The project ``cache`` folder contains non-critical files. If these files are los impact on the functionality of novelWriter or the history of the project. It contains temporary files, like the preview document in the :guilabel:`Build Novel Project` tool. -It should be excluded from version control tools if such are used. +It should be excluded from version control tools if such are used. The folder will be removed +entirely in novelWriter 2.1. diff --git a/docs/source/tech_tests.rst b/docs/source/tech_tests.rst index 5e8f2d2b..9d252a59 100644 --- a/docs/source/tech_tests.rst +++ b/docs/source/tech_tests.rst @@ -18,7 +18,7 @@ The dependencies for running the tests can be installed with: pip install -r requirements-dev.txt This will install a couple of extra packages for coverage and test management. The minimum -requirement is just ``pytest`` and ``pytest-qt``. +requirement is ``pytest`` and ``pytest-qt``. Simple Test Run diff --git a/docs/source/usage_breakdown.rst b/docs/source/usage_breakdown.rst index 541b2705..6e03316c 100644 --- a/docs/source/usage_breakdown.rst +++ b/docs/source/usage_breakdown.rst @@ -4,11 +4,14 @@ How it Works ************ +.. _Fusion: https://doc.qt.io/qt-6/gallery.html +.. _Pandoc: https://pandoc.org/ .. _Typicons: https://github.com/stephenhutchings/typicons.font +.. _Open Document: https://en.wikipedia.org/wiki/OpenDocument 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 even more detail. +more details on how they are implemented. This is intended as an overview. Later on in this +documentation, these features will be covered in even more detail. .. _a_breakdown_design: @@ -22,8 +25,8 @@ at the same time provide a complete set of features needed for writing a novel. The main window does not have an editor 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 -alsoavailable 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. +also available in the main menu so you don't have to look up formatting codes every time you need +them. For reference, 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, @@ -40,32 +43,43 @@ Project Tree View When in :guilabel:`Project Tree View` mode, the main work area of 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. +your project. The second panel is the document editor. An optional third panel on the right is a +document viewer which can view any document in your project independently of what is open in the +document editor. This panel is not intended as a preview window, although you can use it for this +if you wish 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. +The editor also has a :guilabel:`Focus Mode` you can toggle either from the menu, from the icon in +the editor header, or by pressing :kbd:`F8`. When :guilabel:`Focus Mode` is enabled, all the user +interface elements other than the document editor itself are hidden away. Novel Tree View --------------- When in :guilabel:`Novel Tree View` mode, the project tree is replaces by an overview of your novel -structure. Instead of showing individual documents, the tree shows all headings of your novel text. +structure. Instead of showing individual documents, the tree now shows all headings of your novel +text. This includes multiple headings within the same document. + Each heading is indented according to the heading level. You can open and edit your novel documents from this view as well. All headings contained in the currently open document should be highlighted -in the view. +in the view to indicate which ones belong together. -If you have multiple Novel root folders, you can switch between them from the dropdown menu from -the buttons at the top of the tree view. You can also select to view an extra column of data. To -select its content, see the menu icon button. +If you have multiple Novel root folders, the header of the novel view becomes a droopdown box. You +can then switch between them by clicking the "Outline of ..." text. You can also click the novel +icon button next to it. -If you click the arrow to the right of each item, a tooltip will pop up showing you all the meta -data collected for that heading entry. +Generally, the novel view should update when you make changes to the novel structure, including +edits of the current document in the editor. The information is only updated when the automatic +save of the document is initiated though. You can adjust the aut-save interval in +:guilabel:`Preferences`. You can also regenerate the whole novel view by pressing the refresh +button at the top. + +It is possible to show an optional third column in the novel view, The settings are available from +the menu button ath the top. + +If you click the arrow icon to the right of each item, a tooltip will pop up showing you all the +meta data collected for that heading entry. Novel Outline View @@ -77,22 +91,26 @@ much all collected meta data is available here in different columns. You can select which novel root folder to display from the dropdown box, and you can select which columns to show or hide from the menu button. You can also rearrange the columns by drag and drop. +The app will remember you column order and size between sessions, and for each individual project. Colour Themes ------------- -The default colour theme of the user interface is the default theme from the Qt library. There is a -standard dark theme provided as well, which is similar to the default Qt theme. Some other light -and dark colour themes are also provided. You can select which one you prefer from in -:guilabel:`Preferences` from :guilabel:`Settings` or the :guilabel:`Tools` menu. +The default colour theme of the user interface is the default theme from the Qt library. By +default, novelWriter is loaded with the Fusion_ style setting. (You can override this with the +``--style=`` setting when starting novelWriter.) + +There is a standard dark theme provided as well, which is similar to the default Qt theme. Some +other light and dark colour themes are also provided. You can select which one you prefer from in +:guilabel:`Preferences` . A number of syntax highlighting themes are also available in :guilabel:`Preferences`. These are separate settings because there are a lot more options for syntax highlighting. .. note:: - If you switch to dark mode on the GUI, you should also switch the icon theme and syntax - highlighting theme, otherwise icons may be hard to see. + If you switch to dark mode on the GUI, you should also switch syntax highlighting theme to + match, otherwise icons may be hard to see in the editor and viewer. .. _a_breakdown_project: @@ -124,8 +142,8 @@ the header levels have no structural meaning, and the user is free to do whateve .. note:: You can add documents as child items of other documents if you wish. This is often more useful - than adding folders, since you may want to have the chapter heading in a separate document from - your individual scene documents. + than adding folders, since you anyway may want to have the chapter heading in a separate + document from your individual scene documents. .. _a_breakdown_export: @@ -134,10 +152,10 @@ Building the Manuscript ======================= The project can at any time be assembled into a range of different formats through the -:guilabel:`Build Novel Project` tool. Natively, novelWriter supports Open Document, HTML5, and +:guilabel:`Build Novel Project` tool. Natively, novelWriter supports `Open Document`_, HTML5, and various flavours of Markdown. -The HTML5 format is suitable for conversion by a number of other tools like Pandoc, or for +The HTML5 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. diff --git a/docs/source/usage_format.rst b/docs/source/usage_format.rst index 678401e4..9f3f73b4 100644 --- a/docs/source/usage_format.rst +++ b/docs/source/usage_format.rst @@ -6,8 +6,8 @@ Formatting Your Text 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. +*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 @@ -26,7 +26,7 @@ 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. +references will get a squiggly error line underneath. The same applies to duplicate tags. There are a number of syntax highlighter colour themes available, both for light and dark GUIs. You can select them for :guilabel:`Preferences`. @@ -173,10 +173,10 @@ altering the colour of the word. Tags and References =================== -The document editor supports a minimal set of keywords used for setting tags, and making references -between documents. The tag can be set once per section defined by a heading. Setting it multiple -times under the same heading will just override the previous setting. References can be set -anywhere within a section, and are collected according to their category. +The document editor supports a set of keywords used for setting tags, and making references between +documents. The tag can be set once per section defined by a heading. Setting it multiple times +under the same heading will just override the previous setting. References can be set anywhere +within a section, and are collected according to their category. ``@keyword: value`` A keyword argument followed by a value, or a comma separated list of values. @@ -208,12 +208,12 @@ Examples: :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." + "``>> 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." + "``> Left indented text``", "The text has an increased left margin." + "``Right indented text <``", "The text has an increased right margin." + "``> Left/right 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 diff --git a/docs/source/usage_interface.rst b/docs/source/usage_interface.rst index c1ca2f70..2fd5991f 100644 --- a/docs/source/usage_interface.rst +++ b/docs/source/usage_interface.rst @@ -27,8 +27,8 @@ the project, and has four columns: **Column 2** The second column shows the word count of the document, or the sum of words of the child items - for folders. If the counts seem incorrect, they can be updated by rebuilding the project index - from the :guilabel:`Tools` menu, or by pressing :kbd:`F9`. + for folders and documents with subdocuments. If the counts seem incorrect, they can be updated + by rebuilding the project index from the :guilabel:`Tools` menu, or by pressing :kbd:`F9`. **Column 3** The third column indicates whether the document is considered active or inactive in the project. @@ -47,10 +47,10 @@ a selection of actions that can be performed on the selected item. At the top of the tree, you will find a set of buttons. * The first button is a quick links button that will show you a dropdown menu of all the root - folders in your project. Selecting one will scroll to that position in the tree. You can also + folders in your project. Selecting one will move to that position in the tree. You can also activate this menu by pressing :kbd:`Ctrl`:kbd:`L`. -* The next buttons can be used to move items up and down in the project tree. This is the only way - to move root folders. +* The next two buttons can be used to move items up and down in the project tree. This is the only + way to move root folders. * The next button opens a dropdown menu for adding new items to the tree. This includes root folders. You can also activate this dropdown menu by pressing :kbd:`Ctrl`:kbd:`N`. * The last button is a menu of further actions on the entire project tree. @@ -78,8 +78,8 @@ the story itself rather than the document files. .. note:: You cannot reorganise the entries in the novel tree, or add any new documents, as that would imply restructuring the content of the document files. Any editing must be done in the project - tree. However, you can add new headings to existing documents, which will be updated in this - view. + tree. However, you can add new headings to existing documents, or change references, which will + be updated in this view. .. _a_ui_tree_status: @@ -88,8 +88,8 @@ 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 yourself. To modify the labels, go to their respective tabs -in :guilabel:`Project Settings`. +are flags that you control and define yourself. The app doesn't do anything with them at all. To +modify the labels, go to 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, @@ -105,9 +105,9 @@ If it's in the :guilabel:`Novel` folder, it uses the "Status" flag, otherwise it Project Tree Drag & Drop ------------------------ -The project tree allows drag & drop to a certain extent. This feature is primarily intended for -reordering your documents within each root folder. Moving a document in the project tree will also -put it in a different place when you build the novel project. +The project tree allows drag & drop to a certain extent to allow you to reorder your documents and +folders. Moving a document in the project tree will affect the text's position when you assemble +your manuscript in the build tool. Drag & drop has only limited support for moving documents. In general, bulk actions are not allowed. This is deliberate to avoid accidentally messing up your project. If you make a mistake, @@ -115,9 +115,10 @@ 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. If you move a Novel documents out of a Novel folder, it will be converted to a project note. 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 switched with a "Status" setting. See :ref:`a_ui_tree_status`. The old -value will not be overwritten though, and should be restored if you move it back. +between all root folders, but keep in mind that if you move a note into a :guilabel:`Novel` root +folder, its "Importance" setting will be switched with a "Status" setting. See +:ref:`a_ui_tree_status`. The old value will not be overwritten though, and should be restored if +you move it back at some point. Root folders in the project tree cannot be dragged & dropped at all. If you want to reorder them, you can move them up or down with respect to eachother from the arrow buttons at the top of the @@ -162,8 +163,8 @@ pressing :kbd:`Ctrl`:kbd:`Return`. You can also control-click them with your mou 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 through with the -arrow buttons in the top–left corner of the viewer. If your mouse has back and forward navigation +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 backward and forward navigation buttons, these can be used as well. They work just like the backward and forward features in a browser. @@ -254,7 +255,7 @@ to show a combination of all novel folders. 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 from the menu button in the toolbar. The order of the columns can also be rearranged by dragging them to a -different position. +different position. You column settings are saved between sessions on a per-project basis. .. note:: The :guilabel:`Title` column cannot be disabled or moved. diff --git a/docs/source/usage_projectformat.rst b/docs/source/usage_projectformat.rst index 7ab5f059..68342eff 100644 --- a/docs/source/usage_projectformat.rst +++ b/docs/source/usage_projectformat.rst @@ -43,9 +43,10 @@ Format 1.5 Changes This project format was introduced in novelWriter version 2.0 RC 2. This is a modification of the 1.4 format. It makes the XML more consistent in that meta data have -been moved to the section nodes, and key/value settings now have a consistent format. Logical flags -are saved as yes/no instead of Python True/False, and the main heading of the document is now saved -to the item rather than in the index. +been moved to their respective section nodes as attributes, and key/value settings now have a +consistent format. Logical flags are saved as yes/no instead of Python True/False, and the main +heading of the document is now saved to the item rather than in the index. The conversion is done +automatically the first time a project is loaded. No user action is required. .. _a_prjfmt_1_4: diff --git a/docs/source/usage_shortcuts.rst b/docs/source/usage_shortcuts.rst index 8254dfe0..b132daae 100644 --- a/docs/source/usage_shortcuts.rst +++ b/docs/source/usage_shortcuts.rst @@ -4,7 +4,8 @@ Keyboard Shortcuts ****************** -Most features in novelWriter are available as keyboard shortcuts. +Most features in novelWriter are available as keyboard shortcuts. This is a reference list if these +shortcuts. Most of them are also listed in the application. .. _a_kb_main: @@ -16,9 +17,19 @@ The main shorcuts are as follows: .. csv-table:: Keyboard Shortcuts :header: "Shortcut", "Description" - :widths: 20, 80 + :widths: 22, 78 :class: "tight-table" + ":kbd:`F1`", "Open the online user manual." + ":kbd:`F2`", "If in the project tree, edit an item's label." + ":kbd:`F3`", "Find next occurrence of search word in current document." + ":kbd:`F5`", "Open the :guilabel:`Build Novel Project` dialog." + ":kbd:`F6`", "Open the :guilabel:`Writing Statistics` dialog." + ":kbd:`F7`", "Re-run spell checker." + ":kbd:`F8`", "Toggle :guilabel:`Focus Mode`." + ":kbd:`F9`", "Re-build the project index." + ":kbd:`F11`", "Toggle full screen mode." + ":kbd:`Return`", "If in the project tree, open a document for editing." ":kbd:`Alt`:kbd:`1`", "Switch focus to the project tree. On Windows, use :kbd:`Ctrl`:kbd:`Alt`:kbd:`1`." ":kbd:`Alt`:kbd:`2`", "Switch focus to document editor. On Windows, use :kbd:`Ctrl`:kbd:`Alt`:kbd:`2`." ":kbd:`Alt`:kbd:`3`", "Switch focus to document viewer. On Windows, use :kbd:`Ctrl`:kbd:`Alt`:kbd:`3`." @@ -44,14 +55,14 @@ The main shorcuts are as follows: ":kbd:`Ctrl`:kbd:`D`", "Strikethrough selected text, or word under cursor." ":kbd:`Ctrl`:kbd:`F`", "Open the search bar and search for the selected word, if any is selected." ":kbd:`Ctrl`:kbd:`G`", "Find next occurrence of search word in current document." - ":kbd:`Ctrl`:kbd:`H`", "Open the search and replace bar and search for the selected word, if any is selected. (On Mac, this is :kbd:`Cmd`:kbd:`=`.)" + ":kbd:`Ctrl`:kbd:`H`", "Open the search and replace tool and search for the selected word, if any is selected. (On Mac, this is :kbd:`Cmd`:kbd:`=`.)" ":kbd:`Ctrl`:kbd:`I`", "Format selected text, or word under cursor, with emphasis (italic)." ":kbd:`Ctrl`:kbd:`K`", "Activate the insert commands. The commands are listed in :ref:`a_kb_ins`." ":kbd:`Ctrl`:kbd:`L`", "Open the :guilabel:`Quick Links` menu in the Project Tree." - ":kbd:`Ctrl`:kbd:`N`", "Create new project item." + ":kbd:`Ctrl`:kbd:`N`", "Open the Create New Item menu in the Project Tree." ":kbd:`Ctrl`:kbd:`O`", "Open selected document." ":kbd:`Ctrl`:kbd:`Q`", "Exit novelWriter." - ":kbd:`Ctrl`:kbd:`R`", "If in the project tree, open a document for viewing. If the editor has focus, open current document for viewing." + ":kbd:`Ctrl`:kbd:`R`", "If in the project tree, open a document for viewing. If in the editor, open current document for viewing." ":kbd:`Ctrl`:kbd:`S`", "Save the current document in the document editor." ":kbd:`Ctrl`:kbd:`V`", "Paste text from clipboard to cursor position." ":kbd:`Ctrl`:kbd:`W`", "Close the current document in the document editor." @@ -65,7 +76,7 @@ The main shorcuts are as follows: ":kbd:`Ctrl`:kbd:`Backspace`", "Delete previous word in editor." ":kbd:`Ctrl`:kbd:`'`", "Wrap selected text, or word under cursor, in single quotes." ":kbd:`Ctrl`:kbd:`""`", "Wrap selected text, or word under cursor, in double quotes." - ":kbd:`Ctrl`:kbd:`Retrun`", "Open the tag or reference under the cursor in the Viewer." + ":kbd:`Ctrl`:kbd:`Return`", "Open the tag or reference under the cursor in the Viewer." ":kbd:`Ctrl`:kbd:`Shift`:kbd:`,`", "Open the :guilabel:`Project Settings` dialog." ":kbd:`Ctrl`:kbd:`Shift`:kbd:`/`", "Remove block formatting for block under cursor." ":kbd:`Ctrl`:kbd:`Shift`:kbd:`1`", "Replace occurrence of search word in current document, and search for next occurrence." @@ -77,20 +88,10 @@ The main shorcuts are as follows: ":kbd:`Ctrl`:kbd:`Shift`:kbd:`S`", "Save the current project." ":kbd:`Ctrl`:kbd:`Shift`:kbd:`W`", "Close the current project." ":kbd:`Ctrl`:kbd:`Shift`:kbd:`Z`", "Undo move of project tree item." - ":kbd:`Ctrl`:kbd:`Shift`:kbd:`Del`", "If in the project tree, move a document to trash, or delete a folder." - ":kbd:`F1`", "Open the online user manual." - ":kbd:`F2`", "If in the project tree, edit a document or folder settings." - ":kbd:`F3`", "Find next occurrence of search word in current document." - ":kbd:`F5`", "Open the :guilabel:`Build Novel Project` dialog." - ":kbd:`F6`", "Open the :guilabel:`Writing Statistics` dialog." - ":kbd:`F7`", "Re-run spell checker." - ":kbd:`F8`", "Activate :guilabel:`Focus Mode`, hiding the project tree and document viewer." - ":kbd:`F9`", "Re-build the project index." - ":kbd:`F11`", "Activate full screen mode." + ":kbd:`Ctrl`:kbd:`Shift`:kbd:`Del`", "If in the project tree, move an item to Trash." ":kbd:`Shift`:kbd:`F1`", "Open the local user manual (PDF) if it is available." ":kbd:`Shift`:kbd:`F3`", "Find previous occurrence of search word in current document." ":kbd:`Shift`:kbd:`F6`", "Open the :guilabel:`Project Details` dialog." - ":kbd:`Return`", "If in the project tree, open a document for editing." .. note:: On macOS, replace :kbd:`Ctrl` with :kbd:`Cmd`. diff --git a/docs/source/usage_typography.rst b/docs/source/usage_typography.rst index 2a9d768f..66910e75 100644 --- a/docs/source/usage_typography.rst +++ b/docs/source/usage_typography.rst @@ -4,6 +4,11 @@ Typographical Notes ******************* +.. _Prime: https://en.wikipedia.org/wiki/Prime_(symbol) +.. _thin space: https://en.wikipedia.org/wiki/Thin_space +.. _Quotation Mark: https://en.wikipedia.org/wiki/Quotation_mark +.. _Modifier letter apostrophe: https://en.wikipedia.org/wiki/Modifier_letter_apostrophe + novelWriter has some support for typographical symbols that are not usually easily available in many text editors. This includes for instance the proper unicode quotation marks, dashes, ellipsis, thin spaces, etc. All these symbols are available from the :guilabel:`Insert` menu, and via @@ -17,7 +22,7 @@ This chapter provides some additional information on how novelWriter handles the Special Notes on Symbols ======================== -Some additional notes on the available symbols. +This section contains additional notes on the available special symbols. Dashes and Ellipsis @@ -49,8 +54,6 @@ user-selected double quote symbols. This is to help the writer recognise which p are not using the chosen quote symbols. Two convenience functions in the :guilabel:`Format` menu can be used to re-format a selected section of text with the correct quote symbols. -.. _Quotation Mark: https://en.wikipedia.org/wiki/Quotation_mark - Single and Double Prime ------------------------ @@ -62,8 +65,6 @@ and double straight quotes, and may be renderred similarly by the font, but they codes. Using these correctly will also prevent the auto-replace and dialogue highlighting features misunderstanding their meaning in the text. -.. _Prime: https://en.wikipedia.org/wiki/Prime_(symbol) - Modifier Letter Apostrophe -------------------------- @@ -82,8 +83,6 @@ right single quotation marks, depending on the font. There is a Wikipedia articl automatically with the corresponding right hand single quote symbol as is generally recommended. Therefore it doesn't really matter if you only use them to correct highlighting. -.. _Modifier letter apostrophe: https://en.wikipedia.org/wiki/Modifier_letter_apostrophe - Special Space Symbols --------------------- @@ -100,5 +99,3 @@ spot them in the text. The colour will depend on the selected colour theme. The thin and non-breaking spaces are converted to their corresponding HTML codes on export to HTML format. - -.. _thin space: https://en.wikipedia.org/wiki/Thin_space