From 25f6234cf04baee0f6a2628aa64b7d7b84b53b84 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Thu, 1 Dec 2022 16:12:25 +0100 Subject: [PATCH 01/28] Add a new module for a document build class --- novelwriter/core/coretools.py | 1 + novelwriter/mbuild/__init__.py | 3 ++ novelwriter/mbuild/docbuild.py | 88 ++++++++++++++++++++++++++++++++++ novelwriter/tools/build.py | 2 +- 4 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 novelwriter/mbuild/__init__.py create mode 100644 novelwriter/mbuild/docbuild.py diff --git a/novelwriter/core/coretools.py b/novelwriter/core/coretools.py index 8434626d..970e5b42 100644 --- a/novelwriter/core/coretools.py +++ b/novelwriter/core/coretools.py @@ -6,6 +6,7 @@ A collection of tools to create and manipulate documents File History: Created: 2022-10-02 [2.0rc1] DocMerger Created: 2022-10-11 [2.0rc1] DocSplitter +Created: 2022-11-03 [2.0rc2] ProjectBuilder This file is a part of novelWriter Copyright 2018–2022, Veronica Berglyd Olsen diff --git a/novelwriter/mbuild/__init__.py b/novelwriter/mbuild/__init__.py new file mode 100644 index 00000000..5a2fd13d --- /dev/null +++ b/novelwriter/mbuild/__init__.py @@ -0,0 +1,3 @@ +""" +novelWriter – Manuscript Build Init File +""" diff --git a/novelwriter/mbuild/docbuild.py b/novelwriter/mbuild/docbuild.py new file mode 100644 index 00000000..cc9f8585 --- /dev/null +++ b/novelwriter/mbuild/docbuild.py @@ -0,0 +1,88 @@ +""" +novelWriter – Build Document Tool +================================= +A class to build one or more novelWriter files to a single document + +File History: +Created: 2022-12-01 [2.1b1] + +This file is a part of novelWriter +Copyright 2018–2022, Veronica Berglyd Olsen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +""" + +import logging + +logger = logging.getLogger(__name__) + + +class NWBuildDocument: + + def __init__(self, project): + + self._project = project + self._build = {} + self._documents = [] + + return + + ## + # Properties + ## + + @property + def buildLength(self): + return len(self._documents) + + ## + # Setters + ## + + def setBuildConfig(self, config): + """Set the build config dictionary. + """ + self._build = config + return + + def addDocument(self, tHandle): + """Add a document to the build queue. + """ + self._documents.append(tHandle) + return + + ## + # Methods + ## + + def buildOpenDocument(self, fileName, isFlat): + pass + + def buildHTML(self, fileName): + pass + + def buildMarkdown(self, fileName, mdFlavour): + pass + + ## + # Internal Functions + ## + + def _setupBuild(self, bldObj): + pass + + def _doBuild(self, tHandle): + pass + +# END Class NWBuildDocument diff --git a/novelwriter/tools/build.py b/novelwriter/tools/build.py index 4b2a940c..6879089a 100644 --- a/novelwriter/tools/build.py +++ b/novelwriter/tools/build.py @@ -682,7 +682,7 @@ class GuiBuildNovel(QDialog): return def _doBuild(self, bldObj, isPreview=False, doConvert=True): - """Rund the build with a specific build object. + """Run the build with a specific build object. """ tStart = int(time()) From 3fa9c29d7a56b83a6bd17587c17d7d3230d3be4a Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Thu, 1 Dec 2022 22:56:24 +0100 Subject: [PATCH 02/28] Populate build functions in new build class --- novelwriter/mbuild/docbuild.py | 76 ++++++++++++++++++++++++++++++---- 1 file changed, 69 insertions(+), 7 deletions(-) diff --git a/novelwriter/mbuild/docbuild.py b/novelwriter/mbuild/docbuild.py index cc9f8585..c5d1e111 100644 --- a/novelwriter/mbuild/docbuild.py +++ b/novelwriter/mbuild/docbuild.py @@ -25,6 +25,11 @@ along with this program. If not, see . import logging +from novelwriter.error import formatException +from novelwriter.core.toodt import ToOdt +from novelwriter.core.tohtml import ToHtml +from novelwriter.core.tomd import ToMarkdown + logger = logging.getLogger(__name__) @@ -35,6 +40,7 @@ class NWBuildDocument: self._project = project self._build = {} self._documents = [] + self._error = None return @@ -66,14 +72,70 @@ class NWBuildDocument: # Methods ## - def buildOpenDocument(self, fileName, isFlat): - pass + def buildOpenDocument(self, savePath, isFlat): + """Build an Open Document file. + """ + makeOdt = ToOdt(self._project, isFlat=isFlat) + self._setupBuild(makeOdt) - def buildHTML(self, fileName): - pass + for i, tHandle in enumerate(self._documents): + yield i, self._doBuild(makeOdt, tHandle) - def buildMarkdown(self, fileName, mdFlavour): - pass + self._error = None + try: + if isFlat: + makeOdt.saveFlatXML(savePath) + else: + makeOdt.saveOpenDocText(savePath) + except Exception as exc: + self._error = formatException(exc) + + return + + def buildHTML(self, savePath): + """Build an HTML file. + """ + makeHtml = ToHtml(self._project) + self._setupBuild(makeHtml) + + if self._build.get("process.replaceTabs", False): + makeHtml.replaceTabs() + + for i, tHandle in enumerate(self._documents): + yield i, self._doBuild(makeHtml, tHandle) + + self._error = None + try: + makeHtml.saveHTML5(savePath) + except Exception as exc: + self._error = formatException(exc) + + return + + def buildMarkdown(self, savePath, extendedMd): + """Build a Markdown file. + """ + makeMd = ToMarkdown(self._project) + self._setupBuild(makeMd) + + if extendedMd: + makeMd.setGitHubMarkdown() + else: + makeMd.setStandardMarkdown() + + if self._build.get("process.replaceTabs", False): + makeMd.replaceTabs(nSpaces=4, spaceChar=" ") + + for i, tHandle in enumerate(self._documents): + yield i, self._doBuild(makeMd, tHandle) + + self._error = None + try: + makeMd.saveMarkdown(savePath) + except Exception as exc: + self._error = formatException(exc) + + return ## # Internal Functions @@ -82,7 +144,7 @@ class NWBuildDocument: def _setupBuild(self, bldObj): pass - def _doBuild(self, tHandle): + def _doBuild(self, bldObj, tHandle): pass # END Class NWBuildDocument From 72e11601a0586c430e9f57742d834864e202532f Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Tue, 10 Jan 2023 17:59:23 +0100 Subject: [PATCH 03/28] Complete the first version of the doc builder class and add test --- novelwriter/mbuild/docbuild.py | 96 ++++++++++++++++++++++- tests/test_mbuild/test_mbuild_docbuild.py | 72 +++++++++++++++++ 2 files changed, 164 insertions(+), 4 deletions(-) create mode 100644 tests/test_mbuild/test_mbuild_docbuild.py diff --git a/novelwriter/mbuild/docbuild.py b/novelwriter/mbuild/docbuild.py index c5d1e111..f95dce5f 100644 --- a/novelwriter/mbuild/docbuild.py +++ b/novelwriter/mbuild/docbuild.py @@ -7,7 +7,7 @@ File History: Created: 2022-12-01 [2.1b1] This file is a part of novelWriter -Copyright 2018–2022, Veronica Berglyd Olsen +Copyright 2018–2023, Veronica Berglyd Olsen This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,11 +24,14 @@ along with this program. If not, see . """ import logging +import novelwriter + +from PyQt5.QtGui import QFont, QFontInfo from novelwriter.error import formatException +from novelwriter.core.tomd import ToMarkdown from novelwriter.core.toodt import ToOdt from novelwriter.core.tohtml import ToHtml -from novelwriter.core.tomd import ToMarkdown logger = logging.getLogger(__name__) @@ -37,6 +40,7 @@ class NWBuildDocument: def __init__(self, project): + self._conf = novelwriter.CONFIG self._project = project self._build = {} self._documents = [] @@ -48,6 +52,10 @@ class NWBuildDocument: # Properties ## + @property + def error(self): + return self._error + @property def buildLength(self): return len(self._documents) @@ -142,9 +150,89 @@ class NWBuildDocument: ## def _setupBuild(self, bldObj): - pass + """Configure the build object. + """ + # Get Settings + fmtTitle = self._build.get("format.fmtTitle", "%title%") + fmtChapter = self._build.get("format.fmtChapter", "%title%") + fmtUnnumbered = self._build.get("format.fmtUnnumbered", "%title%") + fmtScene = self._build.get("format.fmtScene", "%title%") + fmtSection = self._build.get("format.fmtSection", "%title%") + buildLang = self._build.get("format.buildLang", "en_GB") + hideScene = self._build.get("format.hideScene", False) + hideSection = self._build.get("format.hideSection", False) + textFont = self._build.get("format.textFont", self._conf.textFont) + textSize = self._build.get("format.textSize", self._conf.textSize) + lineHeight = self._build.get("format.lineHeight", 1.15) + justifyText = self._build.get("format.justifyText", False) + noStyling = self._build.get("format.noStyling", False) + replaceUCode = self._build.get("format.replaceUCode", False) + incSynopsis = self._build.get("filter.includeSynopsis", False) + incComments = self._build.get("filter.includeComments", False) + incKeywords = self._build.get("filter.includeKeywords", False) + includeBody = self._build.get("filter.includeBody", True) + + # The language lookup dict is reloaded if needed + self._project.setProjectLang(buildLang) + + # Get font information + fontInfo = QFontInfo(QFont(textFont, textSize)) + textFixed = fontInfo.fixedPitch() + + bldObj.setTitleFormat(fmtTitle) + bldObj.setChapterFormat(fmtChapter) + bldObj.setUnNumberedFormat(fmtUnnumbered) + bldObj.setSceneFormat(fmtScene, hideScene) + bldObj.setSectionFormat(fmtSection, hideSection) + + bldObj.setFont(textFont, textSize, textFixed) + bldObj.setJustify(justifyText) + bldObj.setLineHeight(lineHeight) + + bldObj.setSynopsis(incSynopsis) + bldObj.setComments(incComments) + bldObj.setKeywords(incKeywords) + bldObj.setBodyText(includeBody) + + if isinstance(bldObj, ToHtml): + bldObj.setStyles(not noStyling) + bldObj.setReplaceUnicode(replaceUCode) + + if isinstance(bldObj, ToOdt): + bldObj.setColourHeaders(not noStyling) + bldObj.setLanguage(buildLang) + bldObj.initDocument() + + return def _doBuild(self, bldObj, tHandle): - pass + """Build a single document and add it to the build object. + """ + tItem = self._project.tree[tHandle] + if tItem is None: + self._error = f"Build: Unknown item '{tHandle}'" + logger.error(self._error) + return False + + try: + if tItem.isRootType() and not tItem.isNovelLike(): + bldObj.addRootHeading(tItem.itemHandle) + bldObj.doConvert() + elif tItem.isFileType(): + bldObj.setText(tItem.itemHandle) + bldObj.doPreProcessing() + bldObj.tokenizeText() + bldObj.doHeaders() + bldObj.doConvert() + bldObj.doPostProcessing() + else: + logger.info(f"Build: Skipping '{tHandle}'") + + except Exception: + self._error = f"Build: Failed to build '{tHandle}'" + logger.error(self._error) + return False + + return True # END Class NWBuildDocument diff --git a/tests/test_mbuild/test_mbuild_docbuild.py b/tests/test_mbuild/test_mbuild_docbuild.py new file mode 100644 index 00000000..ee9da08c --- /dev/null +++ b/tests/test_mbuild/test_mbuild_docbuild.py @@ -0,0 +1,72 @@ +""" +novelWriter – Manuscript Builder Class Tests +============================================ + +This file is a part of novelWriter +Copyright 2018–2023, Veronica Berglyd Olsen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +""" + +import pytest + +from novelwriter.core.project import NWProject +from novelwriter.mbuild.docbuild import NWBuildDocument + +BUILD_CONF = { + "format.fmtTitle": "Title: %title%", + "format.fmtChapter": "Chapter: %title%", + "format.fmtUnnumbered": "%title%", + "format.fmtScene": "Scene: %title%", + "format.fmtSection": "Section: %title%", + "format.buildLang": "en_GB", + "format.hideScene": False, + "format.hideSection": False, + "format.textFont": "Arial", + "format.textSize": 12, + "format.lineHeight": 1.5, + "format.justifyText": True, + "format.noStyling": False, + "format.replaceUCode": False, + "filter.includeSynopsis": True, + "filter.includeComments": True, + "filter.includeKeywords": True, + "filter.includeBody": True, +} + + +@pytest.mark.core +def testMBuildDocBuild_OpenDocument(mockGUI, prjLipsum, fncPath, tstPaths): + """Test builing an open document manuscript. + """ + theProject = NWProject(mockGUI) + theProject.openProject(prjLipsum) + + docBuild = NWBuildDocument(theProject) + docBuild.setBuildConfig(BUILD_CONF) + + for tItem in theProject.tree: + docBuild.addDocument(tItem.itemHandle) + + count = 0 + error = [] + for _, success in docBuild.buildOpenDocument(fncPath / "Lorem Ipsum.fodt", True): + count += 1 if success else 0 + if docBuild.error: + error.append(docBuild.error) + + assert count == 21 + assert error == [] + +# END Test testMBuildDocBuild_OpenDocument From 88cde331dff18b5f0b90062fdb8f192c22a9e9ff Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 11 Jan 2023 12:29:52 +0100 Subject: [PATCH 04/28] Fix a few issues in the doc builder class --- novelwriter/mbuild/docbuild.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/novelwriter/mbuild/docbuild.py b/novelwriter/mbuild/docbuild.py index f95dce5f..372a4258 100644 --- a/novelwriter/mbuild/docbuild.py +++ b/novelwriter/mbuild/docbuild.py @@ -85,10 +85,13 @@ class NWBuildDocument: """ makeOdt = ToOdt(self._project, isFlat=isFlat) self._setupBuild(makeOdt) + makeOdt.initDocument() for i, tHandle in enumerate(self._documents): yield i, self._doBuild(makeOdt, tHandle) + makeOdt.closeDocument() + self._error = None try: if isFlat: @@ -201,13 +204,13 @@ class NWBuildDocument: if isinstance(bldObj, ToOdt): bldObj.setColourHeaders(not noStyling) bldObj.setLanguage(buildLang) - bldObj.initDocument() return def _doBuild(self, bldObj, tHandle): """Build a single document and add it to the build object. """ + self._error = None tItem = self._project.tree[tHandle] if tItem is None: self._error = f"Build: Unknown item '{tHandle}'" @@ -219,7 +222,7 @@ class NWBuildDocument: bldObj.addRootHeading(tItem.itemHandle) bldObj.doConvert() elif tItem.isFileType(): - bldObj.setText(tItem.itemHandle) + bldObj.setText(tHandle) bldObj.doPreProcessing() bldObj.tokenizeText() bldObj.doHeaders() From f569c66348abdcf63f64ca71560326f48160bc01 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 11 Jan 2023 12:30:08 +0100 Subject: [PATCH 05/28] Add test coverage of the doc builder class --- ...dDocBuild_Extended_Markdown_Lorem_Ipsum.md | 183 +++++++++++++++ .../mBuildDocBuild_HTML5_Lorem_Ipsum.htm | 126 +++++++++++ ...uildDocBuild_OpenDocument_Lorem_Ipsum.fodt | 203 +++++++++++++++++ ...dDocBuild_Standard_Markdown_Lorem_Ipsum.md | 183 +++++++++++++++ tests/test_mbuild/test_mbuild_docbuild.py | 214 +++++++++++++++++- 5 files changed, 907 insertions(+), 2 deletions(-) create mode 100644 tests/reference/mBuildDocBuild_Extended_Markdown_Lorem_Ipsum.md create mode 100644 tests/reference/mBuildDocBuild_HTML5_Lorem_Ipsum.htm create mode 100644 tests/reference/mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt create mode 100644 tests/reference/mBuildDocBuild_Standard_Markdown_Lorem_Ipsum.md diff --git a/tests/reference/mBuildDocBuild_Extended_Markdown_Lorem_Ipsum.md b/tests/reference/mBuildDocBuild_Extended_Markdown_Lorem_Ipsum.md new file mode 100644 index 00000000..9149335a --- /dev/null +++ b/tests/reference/mBuildDocBuild_Extended_Markdown_Lorem_Ipsum.md @@ -0,0 +1,183 @@ +# Lorem Ipsum + +**By lipsum.com** + +“Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…” + +“There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain…” + +**Comment:** Exctracted from the lipsum.com website. + +Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of “de Finibus Bonorum et Malorum” (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, “Lorem ipsum dolor sit amet..”, comes from a line in section 1.10.32. + +The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from “de Finibus Bonorum et Malorum” by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. + +## Prologue + +**Synopsis:** Explanation from the lipsum.com website. + +_Lorem Ipsum_ is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. + +# Title: Act One + +“Fusce maximus felis libero” + +## Chapter: Chapter One + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque at aliquam quam. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque at aliquam quam. Praesent magna nunc, lacinia sit amet quam eget, aliquet ultrices justo. Morbi ornare enim et lorem rutrum finibus ut eu dolor. Aliquam a orci odio. Ut ultrices sem quis massa placerat, eget mollis nisl cursus. Cras vel sagittis justo. Ut non ultricies leo. Maecenas rutrum velit in est varius, et egestas massa pulvinar. + +### Scene: Scene One + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Aenean ut placerat velit. Etiam laoreet ullamcorper risus, eget lobortis enim scelerisque non. Suspendisse id maximus nunc, et mollis sapien. Curabitur vel semper sapien, non pulvinar dolor. Etiam finibus nisi vel mi molestie consectetur. + +Aenean ut placerat velit. Etiam laoreet ullamcorper risus, eget lobortis enim scelerisque non. Suspendisse id maximus nunc, et mollis sapien. Curabitur vel semper sapien, non pulvinar dolor. Etiam finibus nisi vel mi molestie consectetur. Donec quis ante nunc. Mauris ut leo ipsum. Vestibulum est neque, hendrerit nec neque a, ullamcorper lobortis tellus. Fusce sollicitudin purus quis congue bibendum. Aliquam condimentum ipsum tristique blandit tristique. Donec pulvinar neque ac suscipit malesuada. + +Aliquam ut nisl arcu. Ut ultricies, lorem dignissim rutrum convallis, risus orci tempus lectus, congue feugiat sem lectus vitae odio. Duis sit amet justo finibus, hendrerit nulla at, ullamcorper enim. Praesent vel tellus sit amet tellus vulputate bibendum. Morbi eleifend sagittis sem, ac volutpat ante congue non. In hac habitasse platea dictumst. Morbi lobortis fermentum elit, dignissim sagittis ligula volutpat lacinia. Vestibulum eu interdum odio. Integer ac purus commodo metus congue tempor non at urna. Sed eget tortor vel quam viverra egestas. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec non convallis mauris, ac feugiat ex. + +#### Section: Scene One, Section Two + +Integer vel libero ipsum. Donec varius aliquam libero, sit amet commodo urna hendrerit non. Nullam quis erat mollis nunc viverra volutpat tincidunt in odio. Nam vitae quam sem. Aliquam suscipit nulla non lorem pharetra semper. Ut suscipit erat eu ligula accumsan ultrices. Phasellus nisl tellus, placerat sed laoreet id, consectetur nec dolor. Sed fringilla ipsum id dapibus posuere. Aenean finibus pharetra tincidunt. Ut molestie malesuada nulla, id posuere lorem tincidunt eu. Aliquam tempor eros a est vulputate, scelerisque pulvinar ipsum fermentum. In hac habitasse platea dictumst. + +Curabitur congue, justo quis interdum fermentum, tellus nulla imperdiet sapien, eu interdum enim tellus condimentum metus. Vivamus nunc velit, dignissim ut ultrices sit amet, ultricies quis enim. Donec ut vestibulum neque. Vivamus semper neque id ex ullamcorper varius. Fusce mattis nibh viverra lorem sagittis, et tempor arcu congue. Suspendisse sit amet felis sed urna facilisis mattis eget vitae arcu. Proin eu magna hendrerit, tristique sem maximus, placerat diam. Nulla tristique sed velit sit amet varius. Etiam vel ornare magna, in vulputate arcu. Cras velit orci, tincidunt sed volutpat cursus, bibendum vel sem. Nunc vulputate pharetra tortor, ac consectetur neque tincidunt sit amet. Nulla ornare mi sed mi dignissim ultricies. Ut tincidunt bibendum mauris, sed elementum ex vulputate vel. Mauris fermentum, felis nec vehicula congue, felis lorem facilisis erat, a dictum dolor augue vitae quam. Maecenas rutrum tortor nec consequat eleifend. + +### Scene: Scene Two + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer sapien nulla, dictum at lacus a, dignissim consectetur dolor. Nunc vel eleifend lacus, eu dapibus orci. + +Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer sapien nulla, dictum at lacus a, dignissim consectetur dolor. Nunc vel eleifend lacus, eu dapibus orci. Vestibulum facilisis bibendum aliquam. Aliquam posuere, turpis ac bibendum varius, sem tellus venenatis risus, in elementum massa enim ac lorem. Integer in sem ac diam blandit ultricies ut in nulla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sit amet erat est. Curabitur vitae cursus justo, sit amet placerat dolor. Vivamus eu felis hendrerit, tincidunt massa rutrum, maximus arcu. Pellentesque commodo justo odio, vel rutrum nulla tincidunt eu. Integer non neque condimentum, convallis diam non, varius ligula. Aliquam eget sapien mauris. Aenean pharetra nunc nisi, vel maximus ante tristique sit amet. Aliquam risus metus, interdum non odio eu, consectetur lacinia sapien. + +Proin vitae gravida nisl. Integer viverra orci turpis, sit amet pretium ligula facilisis consequat. Nulla interdum commodo metus, mollis consequat dui tincidunt et. Proin consequat bibendum justo id commodo. Fusce fermentum nunc turpis, eu vestibulum risus feugiat ut. Sed scelerisque vel ligula ut interdum. Suspendisse ac blandit ligula, sagittis fringilla dolor. In tincidunt convallis diam et ornare. Aenean id dignissim est, ut rhoncus quam. Donec vitae nisl velit. In convallis nibh ut augue dignissim, eu elementum quam cursus. Phasellus in lectus lorem. Curabitur in pellentesque nisi, at gravida sapien. Sed cursus justo volutpat lacus placerat, sit amet dignissim turpis commodo. Aliquam vitae orci eget nulla posuere condimentum in ut felis. + +Nulla accumsan ante in pulvinar efficitur. Nulla non velit quis urna hendrerit bibendum. Suspendisse ultrices ante eu justo malesuada, sed fermentum enim rutrum. Nunc fermentum pharetra felis, vitae sollicitudin quam rutrum porta. Aliquam fringilla velit a mi laoreet, et luctus est rutrum. In gravida non ipsum sit amet tempus. Curabitur et eleifend purus. Nulla facilisi. + +#### Section: Scene Two, Section Two + +Suspendisse potenti. Fusce tempus lorem nec laoreet suscipit. Fusce vulputate nisl ac diam tincidunt, nec malesuada quam pellentesque. Maecenas congue, tellus quis commodo rutrum, magna leo egestas arcu, quis suscipit ex risus id ligula. Suspendisse potenti. Morbi blandit lacus vitae laoreet vulputate. Donec vitae tellus eleifend, lobortis eros eu, tincidunt enim. Nullam et ullamcorper nisi. Vivamus tellus ex, lobortis quis rutrum ut, dapibus sit amet turpis. Phasellus pellentesque metus diam, commodo tristique ante commodo ac. Ut mollis ipsum nec diam blandit sollicitudin. Duis bibendum lacus nec commodo dapibus. Sed condimentum luctus ante, id ultricies urna varius nec. Nam convallis magna nec bibendum ultrices. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed auctor pharetra quam, vitae porta ex bibendum eu. + +Vivamus ut venenatis lectus. Phasellus nec elit id sem dictum ornare. Quisque feugiat, diam eget sagittis ultricies, orci turpis efficitur nisi, et fringilla justo odio nec nibh. In hac habitasse platea dictumst. Sed tempus bibendum feugiat. Etiam luctus mauris arcu, non interdum ipsum ultrices id. Vivamus blandit urna sit amet scelerisque vulputate. Quisque in metus eget massa rutrum dictum sit amet sed nulla. Vivamus vel efficitur dolor. + +Ut et consequat enim, quis ornare nibh. In lectus neque, mollis et suscipit et, vestibulum vitae augue. Praesent id ante sit amet odio venenatis placerat a at erat. Sed sed metus sed nisi dictum varius. Integer tincidunt fermentum purus ac porta. Fusce porttitor non risus eget tristique. Donec augue nunc, maximus at fermentum vel, varius et neque. Ut sed consectetur mauris. Quisque ipsum enim, porttitor vitae imperdiet sit amet, tempor et mauris. Aliquam malesuada tincidunt lectus quis blandit. Sed commodo orci felis, quis ultrices tellus facilisis sed. Nunc vel varius est. Duis ullamcorper eu metus in pulvinar. Morbi at sapien dictum, rutrum mauris eget, interdum tellus. + +## Why do we use it? + +**Comment:** Exctracted from the lipsum.com website. + + It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. + + The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. + + Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). + +## Chapter: Chapter Two + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Curabitur a elit posuere, varius ex et, convallis neque. Phasellus sagittis pharetra sem vitae dapibus. Curabitur varius lorem non pulvinar congue. + +Curabitur a elit posuere, varius ex et, convallis neque. Phasellus sagittis pharetra sem vitae dapibus. Curabitur varius lorem non pulvinar congue. Vestibulum pharetra fermentum leo, sed faucibus eros placerat quis. In hac habitasse platea dictumst. Donec metus massa, rutrum quis consequat et, tincidunt ac felis. Duis mollis metus ac nunc tincidunt blandit. Ut aliquet velit eu odio pharetra condimentum. Integer rutrum lacus orci, id venenatis libero accumsan at. + +### Scene: Scene Three + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Aenean ut libero ut lectus porttitor rhoncus vel et massa. Nam pretium, nibh et varius vehicula, urna metus blandit eros, euismod pharetra diam diam et libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. + +Aenean ut libero ut lectus porttitor rhoncus vel et massa. Nam pretium, nibh et varius vehicula, urna metus blandit eros, euismod pharetra diam diam et libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean tincidunt lacus vitae nibh elementum eleifend. Sed rutrum condimentum sem quis blandit. Duis imperdiet libero metus, quis convallis quam faucibus a. Nulla ligula est, semper quis sollicitudin et, pretium id justo. Curabitur pharetra risus eget consectetur commodo. Duis mattis arcu non est condimentum, id venenatis risus volutpat. Pellentesque aliquet mauris non mauris porttitor ultrices. Phasellus ut vestibulum mi. Suspendisse malesuada metus lorem, a malesuada orci rhoncus a. Praesent euismod convallis ante, lacinia tincidunt ex egestas id. Praesent sit amet efficitur sapien. Morbi tincidunt volutpat nunc sed dictum. Aliquam ultrices metus id fermentum lobortis. + +Pellentesque id sagittis dui. Praesent ut nisi sit amet libero euismod ornare. Vestibulum vehicula, lorem eget aliquet imperdiet, eros nulla iaculis mi, vel bibendum est dui sed orci. Nullam vitae lorem rutrum, euismod lacus id, ullamcorper lectus. Duis nec commodo mi, a fringilla diam. Vestibulum molestie nibh tristique, viverra augue non, aliquet metus. Phasellus a tellus ac nisl tempor aliquet. Nulla vitae sapien rutrum augue ornare ultrices a quis nisi. Sed pulvinar tincidunt ex. Fusce vel sem vitae ante pellentesque lobortis. + +Maecenas ullamcorper lacus nec turpis finibus aliquet eget rutrum augue. Integer lorem erat, faucibus non lacus lacinia, pulvinar egestas felis. Proin rutrum nunc eget nulla varius, id blandit mauris tincidunt. Donec sit amet ullamcorper nisi, ut efficitur mi. Aliquam aliquet, nulla eget rhoncus tristique, justo lorem consectetur dui, id ornare leo odio sed tellus. Curabitur interdum velit a turpis condimentum venenatis. Nunc rhoncus sem ac augue auctor, nec malesuada ex fringilla. Vestibulum egestas diam sed leo consectetur vulputate quis eget enim. Nam tincidunt metus sit amet maximus ullamcorper. Sed placerat velit vitae massa efficitur viverra. Etiam eleifend dignissim ante, sed luctus nisl tristique a. In vestibulum pharetra dolor in molestie. Vivamus auctor massa ac magna imperdiet, sit amet iaculis turpis finibus. + +Aenean dapibus vulputate purus, sit amet tempor nunc suscipit consequat. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris auctor congue eros, non pellentesque neque dapibus ac. Vestibulum non leo nec urna lacinia eleifend quis et diam. Praesent eu nisi magna. Nulla at magna massa. Suspendisse porta varius scelerisque. Duis at auctor dolor, non dapibus urna. Nunc venenatis feugiat magna non molestie. Aliquam non ornare ex. Quisque eu ultrices velit, quis pellentesque eros. Phasellus eleifend, elit id imperdiet aliquam, nulla quam molestie turpis, at egestas odio ante et tortor. Suspendisse fringilla condimentum justo, at aliquet odio aliquam ac. + +### Scene: Scene Four + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Nam tempor blandit magna laoreet aliquet. Vestibulum auctor posuere leo, ac gravida nisi rhoncus varius. Aenean posuere dolor vitae condimentum volutpat. Donec egestas volutpat risus, quis luctus justo. + +Nam tempor blandit magna laoreet aliquet. Vestibulum auctor posuere leo, ac gravida nisi rhoncus varius. Aenean posuere dolor vitae condimentum volutpat. Donec egestas volutpat risus, quis luctus justo. Nullam viverra dui et auctor pretium. Ut ullamcorper velit urna, sed imperdiet massa convallis a. Suspendisse efficitur, ipsum nec cursus pulvinar, eros urna posuere diam, nec elementum mi felis vitae sapien. + +Duis efficitur metus pulvinar, molestie magna eget, feugiat dui. Fusce convallis vehicula ipsum convallis blandit. Duis eros risus, malesuada eu imperdiet in, hendrerit ac metus. Vestibulum id justo gravida, dignissim nibh non, iaculis diam. Fusce accumsan est ut massa porta ultricies. Nulla vitae justo in tortor laoreet mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin eu libero justo. Vivamus aliquet placerat est, et auctor eros posuere venenatis. Nunc quam diam, tincidunt ac aliquet in, fermentum sit amet lectus. Proin commodo tincidunt blandit. Quisque erat arcu, semper nec dui non, consectetur gravida ipsum. Nullam pretium consectetur elit at condimentum. + +Etiam sagittis, erat vitae accumsan tempor, neque augue scelerisque nulla, ut ultrices justo urna sit amet augue. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aenean at pulvinar tortor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras vel porta quam. Nullam eu mauris mollis, vehicula justo vel, placerat sapien. Phasellus viverra elit et vestibulum pharetra. Vestibulum commodo fermentum leo, eu porta nisi aliquam eget. Nulla tempus porttitor nisi nec mollis. Nam non mollis turpis. Nam finibus leo a bibendum tincidunt. Donec commodo velit magna, ac semper sapien mattis id. Proin sem velit, lobortis quis ultricies id, pharetra et lectus. Vestibulum condimentum neque vitae mi dapibus mollis. Mauris luctus vel sapien vitae hendrerit. + +Aenean vestibulum magna placerat fermentum tempus. Nam auctor condimentum nunc, in elementum quam ornare a. Etiam in ipsum elit. Proin pharetra, dolor sollicitudin pellentesque congue, lorem dolor ultricies magna, non iaculis risus nisl dictum diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vivamus vel euismod nibh, et lobortis dolor. Maecenas dui odio, gravida nec molestie ut, feugiat ut arcu. Pellentesque risus sapien, gravida a convallis quis, ullamcorper porttitor sapien. + +Donec ipsum eros, vestibulum sit amet cursus eget, iaculis quis dolor. Pellentesque magna augue, tristique dapibus mi vitae, molestie venenatis enim. Nam malesuada, turpis volutpat rhoncus ullamcorper, justo est eleifend orci, ut luctus risus ex rutrum arcu. Sed mi elit, feugiat rhoncus ornare sed, porta id leo. Pellentesque feugiat nulla tincidunt erat suscipit, eu congue lacus hendrerit. Morbi pulvinar enim sed consequat auctor. Ut eleifend enim sem, vitae euismod ex ultricies sit amet. Curabitur eu efficitur nisi, suscipit finibus sapien. In sodales blandit erat, vestibulum pulvinar ante volutpat nec. Vivamus dictum non libero at molestie. Donec sit amet neque in ante convallis pretium. Nunc vel iaculis dui. + +Phasellus eu nunc ut nunc faucibus laoreet. Aliquam at magna risus. Praesent lobortis, risus finibus semper varius, magna purus vestibulum eros, at pulvinar sapien enim a ex. In scelerisque malesuada ex, sit amet egestas neque condimentum sed. Praesent vulputate efficitur massa. Cras at accumsan ligula. In elementum lectus eget blandit dictum. Nam vitae libero ut justo eleifend rutrum ac nec arcu. Aliquam sodales in quam congue vestibulum. Aliquam in accumsan sapien. Quisque lobortis nisl nisi, vitae bibendum turpis efficitur sed. Vestibulum tempor nulla eget nisi convallis, blandit sagittis ipsum convallis. Donec odio nibh, ultrices quis odio in, mollis euismod libero. + +### Scene: Scene Five + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Praesent eget est porta, dictum ante in, egestas risus. Mauris risus mauris, consequat aliquam mauris et, feugiat iaculis ipsum. Aliquam arcu ipsum, fermentum ut arcu sed, lobortis euismod sem. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. + +Praesent eget est porta, dictum ante in, egestas risus. Mauris risus mauris, consequat aliquam mauris et, feugiat iaculis ipsum. Aliquam arcu ipsum, fermentum ut arcu sed, lobortis euismod sem. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In sed felis auctor, rhoncus dui ac, consequat dolor. Integer volutpat libero sed nisl aliquet varius. Suspendisse et lorem sapien. Proin id ultrices nibh, ac suscipit diam. Suspendisse placerat varius porttitor. Curabitur elementum sed enim ultrices imperdiet. + +In ut lobortis lacus, nec luctus arcu. Vivamus condimentum sapien a ipsum malesuada sodales. Donec et vestibulum risus. Integer dictum euismod eros id tincidunt. Aliquam sagittis leo vitae consequat fermentum. Donec maximus ex eu ex iaculis porta. Praesent pharetra lacinia risus, et eleifend diam commodo non. Sed feugiat ipsum ut orci sagittis, quis faucibus lectus blandit. Sed tellus quam, gravida vitae laoreet quis, tempus lobortis dui. Vivamus semper accumsan ullamcorper. Praesent tempus pretium eros, non elementum risus. Pellentesque odio quam, auctor quis ex non, vulputate egestas dolor. Nunc luctus enim ut justo sodales consectetur. Sed aliquet a mauris vel posuere. + +Donec luctus lectus efficitur, blandit nisi vitae, dignissim tellus. Pellentesque euismod pharetra augue gravida hendrerit. Quisque nisi mi, mattis ac nisi non, maximus malesuada ante. Nulla lobortis, diam eu ornare ornare, tellus enim feugiat arcu, non vestibulum tortor nunc eu justo. Integer blandit felis justo, eu semper est scelerisque vel. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam ultricies, nisi vel elementum commodo, nisl dolor tincidunt magna, sed varius est nunc at lectus. Aliquam dolor tortor, sodales placerat ultricies quis, sodales quis sapien. Duis ullamcorper sollicitudin risus at mattis. Integer consequat et nunc at condimentum. Pellentesque cursus congue augue, non suscipit lectus sodales ut. Nam a mi bibendum, blandit nisl eu, accumsan nunc. Aliquam a ex mauris. Sed nec sem quis arcu dignissim tempus eget et turpis. Ut sed ex nec ipsum ultrices lobortis. + +Pellentesque rhoncus pharetra eros, non mollis nisi pretium non. Mauris accumsan quis odio quis euismod. Maecenas ultrices, augue et aliquam tincidunt, erat tellus ornare ligula, quis ultrices turpis nibh vel justo. Fusce gravida odio tellus. In a congue diam. Mauris consequat ex id leo lacinia dictum. Fusce id sem sodales, ultrices sapien ac, convallis orci. Donec gravida nunc sit amet nisi hendrerit, sed porta enim aliquam. In hac habitasse platea dictumst. Cras a orci felis. Curabitur non felis nec urna maximus auctor ut ut nisi. Curabitur at turpis eleifend, blandit eros at, molestie odio. Phasellus euismod neque augue. + +Integer egestas maximus leo eu facilisis. Nunc rhoncus dignissim lectus eu lacinia. Praesent lacinia urna porttitor aliquam condimentum. Nulla eu eros dictum, dictum nunc vitae, sagittis nibh. Integer ante neque, consequat nec sollicitudin id, consectetur vitae dolor. Nullam volutpat sem orci, quis viverra magna auctor a. Suspendisse potenti. Maecenas commodo sed neque pellentesque vehicula. Sed luctus nisl risus, elementum semper purus interdum vel. Ut pulvinar, massa sit amet venenatis placerat, nunc lacus hendrerit odio, non aliquet nunc risus eu lectus. Maecenas feugiat semper ligula, id lobortis sem porta eu. Integer posuere elit magna, at mollis eros bibendum et. Ut imperdiet purus vel nulla aliquam maximus. Morbi sodales purus tellus, a rhoncus sem rutrum sit amet. Quisque risus sem, laoreet nec convallis nec, rutrum vitae justo. + +# Notes: Characters + +# Nobody Owens + +**Tag:** Bod +**Plot:** Main + +Pellentesque nec erat ut nulla posuere commodo. Curabitur nisi augue, imperdiet et porta imperdiet, efficitur id leo. Cras finibus arcu at nibh commodo congue. Proin suscipit placerat condimentum. Aenean ante enim, cursus id lorem a, blandit venenatis nibh. Maecenas suscipit porta elit, sit amet porta felis porttitor eu. Sed a dui nibh. Phasellus sed faucibus dui. Pellentesque felis nulla, ultrices non efficitur quis, rutrum id mi. Mauris tempus auctor nisl, in bibendum enim pellentesque sit amet. Proin nunc lacus, imperdiet nec posuere ac, interdum non lectus. + +Suspendisse faucibus est auctor orci mollis luctus. Praesent quis sodales neque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sodales rutrum mattis. In in sem ornare, consequat nulla ac, convallis arcu. Duis ac metus id felis commodo commodo sit amet eget diam. Curabitur rhoncus lacinia leo at sodales. Etiam finibus porta diam a viverra. Praesent nisi urna, volutpat sit amet odio at, vehicula vehicula leo. In non enim eget nisl luctus commodo. Pellentesque pellentesque at lectus at luctus. Quisque nec felis bibendum, lacinia libero ut, lacinia eros. Integer finibus ultricies nibh sit amet placerat. + +Nullam scelerisque velit et tortor congue vestibulum a at nisi. Vivamus sodales ut turpis a convallis. In dignissim nibh at luctus sodales. Etiam sit amet rhoncus massa. Phasellus ligula magna, sollicitudin non imperdiet sit amet, volutpat vel magna. Nunc vestibulum tempor lectus, sit amet porta nunc hendrerit in. Curabitur non odio sit amet massa tincidunt facilisis. Integer et luctus nunc, eget euismod leo. Praesent faucibus metus sed purus convallis scelerisque. Fusce viverra lorem et placerat malesuada. In at elit malesuada, ullamcorper risus vitae, sodales dolor. Donec quis elementum lectus. Quisque eu eros at dui imperdiet euismod ut id neque. + +# Notes: Plot + +# Main Plot + +**Tag:** Main + +Suspendisse vulputate malesuada pellentesque. Aenean sollicitudin cursus mi, vitae ultricies felis ullamcorper eu. Duis luctus risus mi, in accumsan velit cursus ut. Vestibulum eleifend leo in magna eleifend fermentum. Proin nec ornare elit. Phasellus nec interdum risus. In a volutpat augue, quis egestas justo. Morbi porta mauris mattis bibendum imperdiet. + +Mauris ut erat eu lorem malesuada egestas vel vel urna. Maecenas ac semper quam. Maecenas aliquet metus non interdum mattis. Proin consectetur molestie ligula. Aliquam sollicitudin pulvinar urna a pellentesque. Suspendisse ultrices, est mattis scelerisque porta, nisi nisi laoreet nisl, non condimentum quam ante a velit. Proin scelerisque justo augue, nec laoreet ligula egestas at. Etiam enim quam, ultrices non accumsan hendrerit, elementum vel ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam efficitur odio libero, in vestibulum arcu aliquam at. Cras non vehicula augue. Integer lobortis, est vitae aliquam facilisis, metus ligula aliquet eros, at porttitor sem tortor eget massa. Aliquam varius scelerisque neque sed gravida. Aenean eleifend lorem id ante elementum sollicitudin. Proin commodo massa a quam volutpat, mollis fermentum turpis efficitur. + +# Notes: World + +# Ancient Europe + +**Tag:** Europe + +Vivamus sodales risus ac accumsan posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nunc vel enim felis. Vestibulum dignissim massa nunc, a auctor magna eleifend et. Proin dignissim sodales erat vitae convallis. Aliquam id tellus dui. Curabitur sollicitudin scelerisque ex sit amet posuere. Nam rutrum felis id rhoncus feugiat. Duis sagittis quam quis purus efficitur, quis rutrum odio iaculis. Maecenas semper ante turpis, at vulputate mi consectetur non. Sed rutrum nibh turpis, quis rhoncus purus ornare quis. Vestibulum at rutrum mauris. Integer dolor nisi, tincidunt eget vehicula ac, ultricies at ligula. + +Aenean semper turpis quis varius rhoncus. Vivamus ac mi eget felis euismod vulputate. Nam eu tempus velit. Etiam ut est porta, finibus erat sit amet, consectetur felis. Nullam consequat felis ut lacus pharetra, in lobortis urna mollis. Nulla varius eros nec lorem rhoncus, sed venenatis risus ultrices. Phasellus pellentesque laoreet neque, ut ultricies lacus vulputate quis. In malesuada dui sit amet est interdum, eget consectetur mi gravida. Cras vel bibendum purus. Quisque commodo tempor arcu, non lacinia sem blandit eleifend. Quisque at neque gravida, porttitor metus a, suscipit diam. Quisque convallis sodales lacus et condimentum. Donec a suscipit diam. Pellentesque eget cursus neque. + +Nunc ullamcorper magna quis elit condimentum rhoncus. Aenean dictum pulvinar dolor suscipit interdum. Aliquam elit massa, elementum nec cursus eu, maximus nec ipsum. Donec ullamcorper iaculis dolor eu commodo. Nunc eget tortor quis turpis consectetur varius. Vestibulum nec justo vel tellus venenatis condimentum. Duis auctor iaculis massa. Nunc risus magna, rutrum vitae eros non, tristique mollis enim. + diff --git a/tests/reference/mBuildDocBuild_HTML5_Lorem_Ipsum.htm b/tests/reference/mBuildDocBuild_HTML5_Lorem_Ipsum.htm new file mode 100644 index 00000000..dcea6271 --- /dev/null +++ b/tests/reference/mBuildDocBuild_HTML5_Lorem_Ipsum.htm @@ -0,0 +1,126 @@ + + + + +Lorem Ipsum + + + +
+

Lorem Ipsum

+

By lipsum.com

+

“Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…”

+

“There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain…”

+

Comment: Exctracted from the lipsum.com website.

+

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of “de Finibus Bonorum et Malorum” (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, “Lorem ipsum dolor sit amet..”, comes from a line in section 1.10.32.

+

The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from “de Finibus Bonorum et Malorum” by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.

+

Prologue

+

Synopsis: Explanation from the lipsum.com website.

+

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

+

Title: Act One

+

“Fusce maximus felis libero”

+

Chapter: Chapter One

+

Point of View: Bod

+

Plot: Main

+

Locations: Europe

+

Synopsis: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque at aliquam quam.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque at aliquam quam. Praesent magna nunc, lacinia sit amet quam eget, aliquet ultrices justo. Morbi ornare enim et lorem rutrum finibus ut eu dolor. Aliquam a orci odio. Ut ultrices sem quis massa placerat, eget mollis nisl cursus. Cras vel sagittis justo. Ut non ultricies leo. Maecenas rutrum velit in est varius, et egestas massa pulvinar.

+

Scene: Scene One

+

Point of View: Bod

+

Plot: Main

+

Locations: Europe

+

Synopsis: Aenean ut placerat velit. Etiam laoreet ullamcorper risus, eget lobortis enim scelerisque non. Suspendisse id maximus nunc, et mollis sapien. Curabitur vel semper sapien, non pulvinar dolor. Etiam finibus nisi vel mi molestie consectetur.

+

Aenean ut placerat velit. Etiam laoreet ullamcorper risus, eget lobortis enim scelerisque non. Suspendisse id maximus nunc, et mollis sapien. Curabitur vel semper sapien, non pulvinar dolor. Etiam finibus nisi vel mi molestie consectetur. Donec quis ante nunc. Mauris ut leo ipsum. Vestibulum est neque, hendrerit nec neque a, ullamcorper lobortis tellus. Fusce sollicitudin purus quis congue bibendum. Aliquam condimentum ipsum tristique blandit tristique. Donec pulvinar neque ac suscipit malesuada.

+

Aliquam ut nisl arcu. Ut ultricies, lorem dignissim rutrum convallis, risus orci tempus lectus, congue feugiat sem lectus vitae odio. Duis sit amet justo finibus, hendrerit nulla at, ullamcorper enim. Praesent vel tellus sit amet tellus vulputate bibendum. Morbi eleifend sagittis sem, ac volutpat ante congue non. In hac habitasse platea dictumst. Morbi lobortis fermentum elit, dignissim sagittis ligula volutpat lacinia. Vestibulum eu interdum odio. Integer ac purus commodo metus congue tempor non at urna. Sed eget tortor vel quam viverra egestas. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec non convallis mauris, ac feugiat ex.

+

Section: Scene One, Section Two

+

Integer vel libero ipsum. Donec varius aliquam libero, sit amet commodo urna hendrerit non. Nullam quis erat mollis nunc viverra volutpat tincidunt in odio. Nam vitae quam sem. Aliquam suscipit nulla non lorem pharetra semper. Ut suscipit erat eu ligula accumsan ultrices. Phasellus nisl tellus, placerat sed laoreet id, consectetur nec dolor. Sed fringilla ipsum id dapibus posuere. Aenean finibus pharetra tincidunt. Ut molestie malesuada nulla, id posuere lorem tincidunt eu. Aliquam tempor eros a est vulputate, scelerisque pulvinar ipsum fermentum. In hac habitasse platea dictumst.

+

Curabitur congue, justo quis interdum fermentum, tellus nulla imperdiet sapien, eu interdum enim tellus condimentum metus. Vivamus nunc velit, dignissim ut ultrices sit amet, ultricies quis enim. Donec ut vestibulum neque. Vivamus semper neque id ex ullamcorper varius. Fusce mattis nibh viverra lorem sagittis, et tempor arcu congue. Suspendisse sit amet felis sed urna facilisis mattis eget vitae arcu. Proin eu magna hendrerit, tristique sem maximus, placerat diam. Nulla tristique sed velit sit amet varius. Etiam vel ornare magna, in vulputate arcu. Cras velit orci, tincidunt sed volutpat cursus, bibendum vel sem. Nunc vulputate pharetra tortor, ac consectetur neque tincidunt sit amet. Nulla ornare mi sed mi dignissim ultricies. Ut tincidunt bibendum mauris, sed elementum ex vulputate vel. Mauris fermentum, felis nec vehicula congue, felis lorem facilisis erat, a dictum dolor augue vitae quam. Maecenas rutrum tortor nec consequat eleifend.

+

Scene: Scene Two

+

Point of View: Bod

+

Plot: Main

+

Locations: Europe

+

Synopsis: Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer sapien nulla, dictum at lacus a, dignissim consectetur dolor. Nunc vel eleifend lacus, eu dapibus orci.

+

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer sapien nulla, dictum at lacus a, dignissim consectetur dolor. Nunc vel eleifend lacus, eu dapibus orci. Vestibulum facilisis bibendum aliquam. Aliquam posuere, turpis ac bibendum varius, sem tellus venenatis risus, in elementum massa enim ac lorem. Integer in sem ac diam blandit ultricies ut in nulla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sit amet erat est. Curabitur vitae cursus justo, sit amet placerat dolor. Vivamus eu felis hendrerit, tincidunt massa rutrum, maximus arcu. Pellentesque commodo justo odio, vel rutrum nulla tincidunt eu. Integer non neque condimentum, convallis diam non, varius ligula. Aliquam eget sapien mauris. Aenean pharetra nunc nisi, vel maximus ante tristique sit amet. Aliquam risus metus, interdum non odio eu, consectetur lacinia sapien.

+

Proin vitae gravida nisl. Integer viverra orci turpis, sit amet pretium ligula facilisis consequat. Nulla interdum commodo metus, mollis consequat dui tincidunt et. Proin consequat bibendum justo id commodo. Fusce fermentum nunc turpis, eu vestibulum risus feugiat ut. Sed scelerisque vel ligula ut interdum. Suspendisse ac blandit ligula, sagittis fringilla dolor. In tincidunt convallis diam et ornare. Aenean id dignissim est, ut rhoncus quam. Donec vitae nisl velit. In convallis nibh ut augue dignissim, eu elementum quam cursus. Phasellus in lectus lorem. Curabitur in pellentesque nisi, at gravida sapien. Sed cursus justo volutpat lacus placerat, sit amet dignissim turpis commodo. Aliquam vitae orci eget nulla posuere condimentum in ut felis.

+

Nulla accumsan ante in pulvinar efficitur. Nulla non velit quis urna hendrerit bibendum. Suspendisse ultrices ante eu justo malesuada, sed fermentum enim rutrum. Nunc fermentum pharetra felis, vitae sollicitudin quam rutrum porta. Aliquam fringilla velit a mi laoreet, et luctus est rutrum. In gravida non ipsum sit amet tempus. Curabitur et eleifend purus. Nulla facilisi.

+

Section: Scene Two, Section Two

+

Suspendisse potenti. Fusce tempus lorem nec laoreet suscipit. Fusce vulputate nisl ac diam tincidunt, nec malesuada quam pellentesque. Maecenas congue, tellus quis commodo rutrum, magna leo egestas arcu, quis suscipit ex risus id ligula. Suspendisse potenti. Morbi blandit lacus vitae laoreet vulputate. Donec vitae tellus eleifend, lobortis eros eu, tincidunt enim. Nullam et ullamcorper nisi. Vivamus tellus ex, lobortis quis rutrum ut, dapibus sit amet turpis. Phasellus pellentesque metus diam, commodo tristique ante commodo ac. Ut mollis ipsum nec diam blandit sollicitudin. Duis bibendum lacus nec commodo dapibus. Sed condimentum luctus ante, id ultricies urna varius nec. Nam convallis magna nec bibendum ultrices. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed auctor pharetra quam, vitae porta ex bibendum eu.

+

Vivamus ut venenatis lectus. Phasellus nec elit id sem dictum ornare. Quisque feugiat, diam eget sagittis ultricies, orci turpis efficitur nisi, et fringilla justo odio nec nibh. In hac habitasse platea dictumst. Sed tempus bibendum feugiat. Etiam luctus mauris arcu, non interdum ipsum ultrices id. Vivamus blandit urna sit amet scelerisque vulputate. Quisque in metus eget massa rutrum dictum sit amet sed nulla. Vivamus vel efficitur dolor.

+

Ut et consequat enim, quis ornare nibh. In lectus neque, mollis et suscipit et, vestibulum vitae augue. Praesent id ante sit amet odio venenatis placerat a at erat. Sed sed metus sed nisi dictum varius. Integer tincidunt fermentum purus ac porta. Fusce porttitor non risus eget tristique. Donec augue nunc, maximus at fermentum vel, varius et neque. Ut sed consectetur mauris. Quisque ipsum enim, porttitor vitae imperdiet sit amet, tempor et mauris. Aliquam malesuada tincidunt lectus quis blandit. Sed commodo orci felis, quis ultrices tellus facilisis sed. Nunc vel varius est. Duis ullamcorper eu metus in pulvinar. Morbi at sapien dictum, rutrum mauris eget, interdum tellus.

+

Why do we use it?

+

Comment: Exctracted from the lipsum.com website.

+

It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.

+

The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English.

+

Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).

+

Chapter: Chapter Two

+

Point of View: Bod

+

Plot: Main

+

Locations: Europe

+

Synopsis: Curabitur a elit posuere, varius ex et, convallis neque. Phasellus sagittis pharetra sem vitae dapibus. Curabitur varius lorem non pulvinar congue.

+

Curabitur a elit posuere, varius ex et, convallis neque. Phasellus sagittis pharetra sem vitae dapibus. Curabitur varius lorem non pulvinar congue. Vestibulum pharetra fermentum leo, sed faucibus eros placerat quis. In hac habitasse platea dictumst. Donec metus massa, rutrum quis consequat et, tincidunt ac felis. Duis mollis metus ac nunc tincidunt blandit. Ut aliquet velit eu odio pharetra condimentum. Integer rutrum lacus orci, id venenatis libero accumsan at.

+

Scene: Scene Three

+

Point of View: Bod

+

Plot: Main

+

Locations: Europe

+

Synopsis: Aenean ut libero ut lectus porttitor rhoncus vel et massa. Nam pretium, nibh et varius vehicula, urna metus blandit eros, euismod pharetra diam diam et libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

+

Aenean ut libero ut lectus porttitor rhoncus vel et massa. Nam pretium, nibh et varius vehicula, urna metus blandit eros, euismod pharetra diam diam et libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean tincidunt lacus vitae nibh elementum eleifend. Sed rutrum condimentum sem quis blandit. Duis imperdiet libero metus, quis convallis quam faucibus a. Nulla ligula est, semper quis sollicitudin et, pretium id justo. Curabitur pharetra risus eget consectetur commodo. Duis mattis arcu non est condimentum, id venenatis risus volutpat. Pellentesque aliquet mauris non mauris porttitor ultrices. Phasellus ut vestibulum mi. Suspendisse malesuada metus lorem, a malesuada orci rhoncus a. Praesent euismod convallis ante, lacinia tincidunt ex egestas id. Praesent sit amet efficitur sapien. Morbi tincidunt volutpat nunc sed dictum. Aliquam ultrices metus id fermentum lobortis.

+

Pellentesque id sagittis dui. Praesent ut nisi sit amet libero euismod ornare. Vestibulum vehicula, lorem eget aliquet imperdiet, eros nulla iaculis mi, vel bibendum est dui sed orci. Nullam vitae lorem rutrum, euismod lacus id, ullamcorper lectus. Duis nec commodo mi, a fringilla diam. Vestibulum molestie nibh tristique, viverra augue non, aliquet metus. Phasellus a tellus ac nisl tempor aliquet. Nulla vitae sapien rutrum augue ornare ultrices a quis nisi. Sed pulvinar tincidunt ex. Fusce vel sem vitae ante pellentesque lobortis.

+

Maecenas ullamcorper lacus nec turpis finibus aliquet eget rutrum augue. Integer lorem erat, faucibus non lacus lacinia, pulvinar egestas felis. Proin rutrum nunc eget nulla varius, id blandit mauris tincidunt. Donec sit amet ullamcorper nisi, ut efficitur mi. Aliquam aliquet, nulla eget rhoncus tristique, justo lorem consectetur dui, id ornare leo odio sed tellus. Curabitur interdum velit a turpis condimentum venenatis. Nunc rhoncus sem ac augue auctor, nec malesuada ex fringilla. Vestibulum egestas diam sed leo consectetur vulputate quis eget enim. Nam tincidunt metus sit amet maximus ullamcorper. Sed placerat velit vitae massa efficitur viverra. Etiam eleifend dignissim ante, sed luctus nisl tristique a. In vestibulum pharetra dolor in molestie. Vivamus auctor massa ac magna imperdiet, sit amet iaculis turpis finibus.

+

Aenean dapibus vulputate purus, sit amet tempor nunc suscipit consequat. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris auctor congue eros, non pellentesque neque dapibus ac. Vestibulum non leo nec urna lacinia eleifend quis et diam. Praesent eu nisi magna. Nulla at magna massa. Suspendisse porta varius scelerisque. Duis at auctor dolor, non dapibus urna. Nunc venenatis feugiat magna non molestie. Aliquam non ornare ex. Quisque eu ultrices velit, quis pellentesque eros. Phasellus eleifend, elit id imperdiet aliquam, nulla quam molestie turpis, at egestas odio ante et tortor. Suspendisse fringilla condimentum justo, at aliquet odio aliquam ac.

+

Scene: Scene Four

+

Point of View: Bod

+

Plot: Main

+

Locations: Europe

+

Synopsis: Nam tempor blandit magna laoreet aliquet. Vestibulum auctor posuere leo, ac gravida nisi rhoncus varius. Aenean posuere dolor vitae condimentum volutpat. Donec egestas volutpat risus, quis luctus justo.

+

Nam tempor blandit magna laoreet aliquet. Vestibulum auctor posuere leo, ac gravida nisi rhoncus varius. Aenean posuere dolor vitae condimentum volutpat. Donec egestas volutpat risus, quis luctus justo. Nullam viverra dui et auctor pretium. Ut ullamcorper velit urna, sed imperdiet massa convallis a. Suspendisse efficitur, ipsum nec cursus pulvinar, eros urna posuere diam, nec elementum mi felis vitae sapien.

+

Duis efficitur metus pulvinar, molestie magna eget, feugiat dui. Fusce convallis vehicula ipsum convallis blandit. Duis eros risus, malesuada eu imperdiet in, hendrerit ac metus. Vestibulum id justo gravida, dignissim nibh non, iaculis diam. Fusce accumsan est ut massa porta ultricies. Nulla vitae justo in tortor laoreet mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin eu libero justo. Vivamus aliquet placerat est, et auctor eros posuere venenatis. Nunc quam diam, tincidunt ac aliquet in, fermentum sit amet lectus. Proin commodo tincidunt blandit. Quisque erat arcu, semper nec dui non, consectetur gravida ipsum. Nullam pretium consectetur elit at condimentum.

+

Etiam sagittis, erat vitae accumsan tempor, neque augue scelerisque nulla, ut ultrices justo urna sit amet augue. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aenean at pulvinar tortor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras vel porta quam. Nullam eu mauris mollis, vehicula justo vel, placerat sapien. Phasellus viverra elit et vestibulum pharetra. Vestibulum commodo fermentum leo, eu porta nisi aliquam eget. Nulla tempus porttitor nisi nec mollis. Nam non mollis turpis. Nam finibus leo a bibendum tincidunt. Donec commodo velit magna, ac semper sapien mattis id. Proin sem velit, lobortis quis ultricies id, pharetra et lectus. Vestibulum condimentum neque vitae mi dapibus mollis. Mauris luctus vel sapien vitae hendrerit.

+

Aenean vestibulum magna placerat fermentum tempus. Nam auctor condimentum nunc, in elementum quam ornare a. Etiam in ipsum elit. Proin pharetra, dolor sollicitudin pellentesque congue, lorem dolor ultricies magna, non iaculis risus nisl dictum diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vivamus vel euismod nibh, et lobortis dolor. Maecenas dui odio, gravida nec molestie ut, feugiat ut arcu. Pellentesque risus sapien, gravida a convallis quis, ullamcorper porttitor sapien.

+

Donec ipsum eros, vestibulum sit amet cursus eget, iaculis quis dolor. Pellentesque magna augue, tristique dapibus mi vitae, molestie venenatis enim. Nam malesuada, turpis volutpat rhoncus ullamcorper, justo est eleifend orci, ut luctus risus ex rutrum arcu. Sed mi elit, feugiat rhoncus ornare sed, porta id leo. Pellentesque feugiat nulla tincidunt erat suscipit, eu congue lacus hendrerit. Morbi pulvinar enim sed consequat auctor. Ut eleifend enim sem, vitae euismod ex ultricies sit amet. Curabitur eu efficitur nisi, suscipit finibus sapien. In sodales blandit erat, vestibulum pulvinar ante volutpat nec. Vivamus dictum non libero at molestie. Donec sit amet neque in ante convallis pretium. Nunc vel iaculis dui.

+

Phasellus eu nunc ut nunc faucibus laoreet. Aliquam at magna risus. Praesent lobortis, risus finibus semper varius, magna purus vestibulum eros, at pulvinar sapien enim a ex. In scelerisque malesuada ex, sit amet egestas neque condimentum sed. Praesent vulputate efficitur massa. Cras at accumsan ligula. In elementum lectus eget blandit dictum. Nam vitae libero ut justo eleifend rutrum ac nec arcu. Aliquam sodales in quam congue vestibulum. Aliquam in accumsan sapien. Quisque lobortis nisl nisi, vitae bibendum turpis efficitur sed. Vestibulum tempor nulla eget nisi convallis, blandit sagittis ipsum convallis. Donec odio nibh, ultrices quis odio in, mollis euismod libero.

+

Scene: Scene Five

+

Point of View: Bod

+

Plot: Main

+

Locations: Europe

+

Synopsis: Praesent eget est porta, dictum ante in, egestas risus. Mauris risus mauris, consequat aliquam mauris et, feugiat iaculis ipsum. Aliquam arcu ipsum, fermentum ut arcu sed, lobortis euismod sem. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

+

Praesent eget est porta, dictum ante in, egestas risus. Mauris risus mauris, consequat aliquam mauris et, feugiat iaculis ipsum. Aliquam arcu ipsum, fermentum ut arcu sed, lobortis euismod sem. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In sed felis auctor, rhoncus dui ac, consequat dolor. Integer volutpat libero sed nisl aliquet varius. Suspendisse et lorem sapien. Proin id ultrices nibh, ac suscipit diam. Suspendisse placerat varius porttitor. Curabitur elementum sed enim ultrices imperdiet.

+

In ut lobortis lacus, nec luctus arcu. Vivamus condimentum sapien a ipsum malesuada sodales. Donec et vestibulum risus. Integer dictum euismod eros id tincidunt. Aliquam sagittis leo vitae consequat fermentum. Donec maximus ex eu ex iaculis porta. Praesent pharetra lacinia risus, et eleifend diam commodo non. Sed feugiat ipsum ut orci sagittis, quis faucibus lectus blandit. Sed tellus quam, gravida vitae laoreet quis, tempus lobortis dui. Vivamus semper accumsan ullamcorper. Praesent tempus pretium eros, non elementum risus. Pellentesque odio quam, auctor quis ex non, vulputate egestas dolor. Nunc luctus enim ut justo sodales consectetur. Sed aliquet a mauris vel posuere.

+

Donec luctus lectus efficitur, blandit nisi vitae, dignissim tellus. Pellentesque euismod pharetra augue gravida hendrerit. Quisque nisi mi, mattis ac nisi non, maximus malesuada ante. Nulla lobortis, diam eu ornare ornare, tellus enim feugiat arcu, non vestibulum tortor nunc eu justo. Integer blandit felis justo, eu semper est scelerisque vel. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam ultricies, nisi vel elementum commodo, nisl dolor tincidunt magna, sed varius est nunc at lectus. Aliquam dolor tortor, sodales placerat ultricies quis, sodales quis sapien. Duis ullamcorper sollicitudin risus at mattis. Integer consequat et nunc at condimentum. Pellentesque cursus congue augue, non suscipit lectus sodales ut. Nam a mi bibendum, blandit nisl eu, accumsan nunc. Aliquam a ex mauris. Sed nec sem quis arcu dignissim tempus eget et turpis. Ut sed ex nec ipsum ultrices lobortis.

+

Pellentesque rhoncus pharetra eros, non mollis nisi pretium non. Mauris accumsan quis odio quis euismod. Maecenas ultrices, augue et aliquam tincidunt, erat tellus ornare ligula, quis ultrices turpis nibh vel justo. Fusce gravida odio tellus. In a congue diam. Mauris consequat ex id leo lacinia dictum. Fusce id sem sodales, ultrices sapien ac, convallis orci. Donec gravida nunc sit amet nisi hendrerit, sed porta enim aliquam. In hac habitasse platea dictumst. Cras a orci felis. Curabitur non felis nec urna maximus auctor ut ut nisi. Curabitur at turpis eleifend, blandit eros at, molestie odio. Phasellus euismod neque augue.

+

Integer egestas maximus leo eu facilisis. Nunc rhoncus dignissim lectus eu lacinia. Praesent lacinia urna porttitor aliquam condimentum. Nulla eu eros dictum, dictum nunc vitae, sagittis nibh. Integer ante neque, consequat nec sollicitudin id, consectetur vitae dolor. Nullam volutpat sem orci, quis viverra magna auctor a. Suspendisse potenti. Maecenas commodo sed neque pellentesque vehicula. Sed luctus nisl risus, elementum semper purus interdum vel. Ut pulvinar, massa sit amet venenatis placerat, nunc lacus hendrerit odio, non aliquet nunc risus eu lectus. Maecenas feugiat semper ligula, id lobortis sem porta eu. Integer posuere elit magna, at mollis eros bibendum et. Ut imperdiet purus vel nulla aliquam maximus. Morbi sodales purus tellus, a rhoncus sem rutrum sit amet. Quisque risus sem, laoreet nec convallis nec, rutrum vitae justo.

+

Notes: Characters

+

Nobody Owens

+

Tag: Bod

+

Plot: Main

+

Pellentesque nec erat ut nulla posuere commodo. Curabitur nisi augue, imperdiet et porta imperdiet, efficitur id leo. Cras finibus arcu at nibh commodo congue. Proin suscipit placerat condimentum. Aenean ante enim, cursus id lorem a, blandit venenatis nibh. Maecenas suscipit porta elit, sit amet porta felis porttitor eu. Sed a dui nibh. Phasellus sed faucibus dui. Pellentesque felis nulla, ultrices non efficitur quis, rutrum id mi. Mauris tempus auctor nisl, in bibendum enim pellentesque sit amet. Proin nunc lacus, imperdiet nec posuere ac, interdum non lectus.

+

Suspendisse faucibus est auctor orci mollis luctus. Praesent quis sodales neque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sodales rutrum mattis. In in sem ornare, consequat nulla ac, convallis arcu. Duis ac metus id felis commodo commodo sit amet eget diam. Curabitur rhoncus lacinia leo at sodales. Etiam finibus porta diam a viverra. Praesent nisi urna, volutpat sit amet odio at, vehicula vehicula leo. In non enim eget nisl luctus commodo. Pellentesque pellentesque at lectus at luctus. Quisque nec felis bibendum, lacinia libero ut, lacinia eros. Integer finibus ultricies nibh sit amet placerat.

+

Nullam scelerisque velit et tortor congue vestibulum a at nisi. Vivamus sodales ut turpis a convallis. In dignissim nibh at luctus sodales. Etiam sit amet rhoncus massa. Phasellus ligula magna, sollicitudin non imperdiet sit amet, volutpat vel magna. Nunc vestibulum tempor lectus, sit amet porta nunc hendrerit in. Curabitur non odio sit amet massa tincidunt facilisis. Integer et luctus nunc, eget euismod leo. Praesent faucibus metus sed purus convallis scelerisque. Fusce viverra lorem et placerat malesuada. In at elit malesuada, ullamcorper risus vitae, sodales dolor. Donec quis elementum lectus. Quisque eu eros at dui imperdiet euismod ut id neque.

+

Notes: Plot

+

Main Plot

+

Tag: Main

+

Suspendisse vulputate malesuada pellentesque. Aenean sollicitudin cursus mi, vitae ultricies felis ullamcorper eu. Duis luctus risus mi, in accumsan velit cursus ut. Vestibulum eleifend leo in magna eleifend fermentum. Proin nec ornare elit. Phasellus nec interdum risus. In a volutpat augue, quis egestas justo. Morbi porta mauris mattis bibendum imperdiet.

+

Mauris ut erat eu lorem malesuada egestas vel vel urna. Maecenas ac semper quam. Maecenas aliquet metus non interdum mattis. Proin consectetur molestie ligula. Aliquam sollicitudin pulvinar urna a pellentesque. Suspendisse ultrices, est mattis scelerisque porta, nisi nisi laoreet nisl, non condimentum quam ante a velit. Proin scelerisque justo augue, nec laoreet ligula egestas at. Etiam enim quam, ultrices non accumsan hendrerit, elementum vel ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam efficitur odio libero, in vestibulum arcu aliquam at. Cras non vehicula augue. Integer lobortis, est vitae aliquam facilisis, metus ligula aliquet eros, at porttitor sem tortor eget massa. Aliquam varius scelerisque neque sed gravida. Aenean eleifend lorem id ante elementum sollicitudin. Proin commodo massa a quam volutpat, mollis fermentum turpis efficitur.

+

Notes: World

+

Ancient Europe

+

Tag: Europe

+

Vivamus sodales risus ac accumsan posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nunc vel enim felis. Vestibulum dignissim massa nunc, a auctor magna eleifend et. Proin dignissim sodales erat vitae convallis. Aliquam id tellus dui. Curabitur sollicitudin scelerisque ex sit amet posuere. Nam rutrum felis id rhoncus feugiat. Duis sagittis quam quis purus efficitur, quis rutrum odio iaculis. Maecenas semper ante turpis, at vulputate mi consectetur non. Sed rutrum nibh turpis, quis rhoncus purus ornare quis. Vestibulum at rutrum mauris. Integer dolor nisi, tincidunt eget vehicula ac, ultricies at ligula.

+

Aenean semper turpis quis varius rhoncus. Vivamus ac mi eget felis euismod vulputate. Nam eu tempus velit. Etiam ut est porta, finibus erat sit amet, consectetur felis. Nullam consequat felis ut lacus pharetra, in lobortis urna mollis. Nulla varius eros nec lorem rhoncus, sed venenatis risus ultrices. Phasellus pellentesque laoreet neque, ut ultricies lacus vulputate quis. In malesuada dui sit amet est interdum, eget consectetur mi gravida. Cras vel bibendum purus. Quisque commodo tempor arcu, non lacinia sem blandit eleifend. Quisque at neque gravida, porttitor metus a, suscipit diam. Quisque convallis sodales lacus et condimentum. Donec a suscipit diam. Pellentesque eget cursus neque.

+

Nunc ullamcorper magna quis elit condimentum rhoncus. Aenean dictum pulvinar dolor suscipit interdum. Aliquam elit massa, elementum nec cursus eu, maximus nec ipsum. Donec ullamcorper iaculis dolor eu commodo. Nunc eget tortor quis turpis consectetur varius. Vestibulum nec justo vel tellus venenatis condimentum. Duis auctor iaculis massa. Nunc risus magna, rutrum vitae eros non, tristique mollis enim.

+
+ + diff --git a/tests/reference/mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt b/tests/reference/mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt new file mode 100644 index 00000000..06ec355e --- /dev/null +++ b/tests/reference/mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt @@ -0,0 +1,203 @@ + + + + 2023-01-11T10:54:59 + novelWriter/2.0.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lorem Ipsum / lipsum.com / 2 + + + + + + + + + Lorem Ipsum + By lipsum.com + “Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…” + “There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain…” + Comment: Exctracted from the lipsum.com website. + Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of “de Finibus Bonorum et Malorum” (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, “Lorem ipsum dolor sit amet..”, comes from a line in section 1.10.32. + The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from “de Finibus Bonorum et Malorum” by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. + Prologue + Synopsis: Explanation from the lipsum.com website. + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. + Title: Act One + “Fusce maximus felis libero” + Chapter: Chapter One + Point of View: Bod + Plot: Main + Locations: Europe + Synopsis: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque at aliquam quam. + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque at aliquam quam. Praesent magna nunc, lacinia sit amet quam eget, aliquet ultrices justo. Morbi ornare enim et lorem rutrum finibus ut eu dolor. Aliquam a orci odio. Ut ultrices sem quis massa placerat, eget mollis nisl cursus. Cras vel sagittis justo. Ut non ultricies leo. Maecenas rutrum velit in est varius, et egestas massa pulvinar. + Scene: Scene One + Point of View: Bod + Plot: Main + Locations: Europe + Synopsis: Aenean ut placerat velit. Etiam laoreet ullamcorper risus, eget lobortis enim scelerisque non. Suspendisse id maximus nunc, et mollis sapien. Curabitur vel semper sapien, non pulvinar dolor. Etiam finibus nisi vel mi molestie consectetur. + Aenean ut placerat velit. Etiam laoreet ullamcorper risus, eget lobortis enim scelerisque non. Suspendisse id maximus nunc, et mollis sapien. Curabitur vel semper sapien, non pulvinar dolor. Etiam finibus nisi vel mi molestie consectetur. Donec quis ante nunc. Mauris ut leo ipsum. Vestibulum est neque, hendrerit nec neque a, ullamcorper lobortis tellus. Fusce sollicitudin purus quis congue bibendum. Aliquam condimentum ipsum tristique blandit tristique. Donec pulvinar neque ac suscipit malesuada. + Aliquam ut nisl arcu. Ut ultricies, lorem dignissim rutrum convallis, risus orci tempus lectus, congue feugiat sem lectus vitae odio. Duis sit amet justo finibus, hendrerit nulla at, ullamcorper enim. Praesent vel tellus sit amet tellus vulputate bibendum. Morbi eleifend sagittis sem, ac volutpat ante congue non. In hac habitasse platea dictumst. Morbi lobortis fermentum elit, dignissim sagittis ligula volutpat lacinia. Vestibulum eu interdum odio. Integer ac purus commodo metus congue tempor non at urna. Sed eget tortor vel quam viverra egestas. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec non convallis mauris, ac feugiat ex. + Section: Scene One, Section Two + Integer vel libero ipsum. Donec varius aliquam libero, sit amet commodo urna hendrerit non. Nullam quis erat mollis nunc viverra volutpat tincidunt in odio. Nam vitae quam sem. Aliquam suscipit nulla non lorem pharetra semper. Ut suscipit erat eu ligula accumsan ultrices. Phasellus nisl tellus, placerat sed laoreet id, consectetur nec dolor. Sed fringilla ipsum id dapibus posuere. Aenean finibus pharetra tincidunt. Ut molestie malesuada nulla, id posuere lorem tincidunt eu. Aliquam tempor eros a est vulputate, scelerisque pulvinar ipsum fermentum. In hac habitasse platea dictumst. + Curabitur congue, justo quis interdum fermentum, tellus nulla imperdiet sapien, eu interdum enim tellus condimentum metus. Vivamus nunc velit, dignissim ut ultrices sit amet, ultricies quis enim. Donec ut vestibulum neque. Vivamus semper neque id ex ullamcorper varius. Fusce mattis nibh viverra lorem sagittis, et tempor arcu congue. Suspendisse sit amet felis sed urna facilisis mattis eget vitae arcu. Proin eu magna hendrerit, tristique sem maximus, placerat diam. Nulla tristique sed velit sit amet varius. Etiam vel ornare magna, in vulputate arcu. Cras velit orci, tincidunt sed volutpat cursus, bibendum vel sem. Nunc vulputate pharetra tortor, ac consectetur neque tincidunt sit amet. Nulla ornare mi sed mi dignissim ultricies. Ut tincidunt bibendum mauris, sed elementum ex vulputate vel. Mauris fermentum, felis nec vehicula congue, felis lorem facilisis erat, a dictum dolor augue vitae quam. Maecenas rutrum tortor nec consequat eleifend. + Scene: Scene Two + Point of View: Bod + Plot: Main + Locations: Europe + Synopsis: Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer sapien nulla, dictum at lacus a, dignissim consectetur dolor. Nunc vel eleifend lacus, eu dapibus orci. + Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer sapien nulla, dictum at lacus a, dignissim consectetur dolor. Nunc vel eleifend lacus, eu dapibus orci. Vestibulum facilisis bibendum aliquam. Aliquam posuere, turpis ac bibendum varius, sem tellus venenatis risus, in elementum massa enim ac lorem. Integer in sem ac diam blandit ultricies ut in nulla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sit amet erat est. Curabitur vitae cursus justo, sit amet placerat dolor. Vivamus eu felis hendrerit, tincidunt massa rutrum, maximus arcu. Pellentesque commodo justo odio, vel rutrum nulla tincidunt eu. Integer non neque condimentum, convallis diam non, varius ligula. Aliquam eget sapien mauris. Aenean pharetra nunc nisi, vel maximus ante tristique sit amet. Aliquam risus metus, interdum non odio eu, consectetur lacinia sapien. + Proin vitae gravida nisl. Integer viverra orci turpis, sit amet pretium ligula facilisis consequat. Nulla interdum commodo metus, mollis consequat dui tincidunt et. Proin consequat bibendum justo id commodo. Fusce fermentum nunc turpis, eu vestibulum risus feugiat ut. Sed scelerisque vel ligula ut interdum. Suspendisse ac blandit ligula, sagittis fringilla dolor. In tincidunt convallis diam et ornare. Aenean id dignissim est, ut rhoncus quam. Donec vitae nisl velit. In convallis nibh ut augue dignissim, eu elementum quam cursus. Phasellus in lectus lorem. Curabitur in pellentesque nisi, at gravida sapien. Sed cursus justo volutpat lacus placerat, sit amet dignissim turpis commodo. Aliquam vitae orci eget nulla posuere condimentum in ut felis. + Nulla accumsan ante in pulvinar efficitur. Nulla non velit quis urna hendrerit bibendum. Suspendisse ultrices ante eu justo malesuada, sed fermentum enim rutrum. Nunc fermentum pharetra felis, vitae sollicitudin quam rutrum porta. Aliquam fringilla velit a mi laoreet, et luctus est rutrum. In gravida non ipsum sit amet tempus. Curabitur et eleifend purus. Nulla facilisi. + Section: Scene Two, Section Two + Suspendisse potenti. Fusce tempus lorem nec laoreet suscipit. Fusce vulputate nisl ac diam tincidunt, nec malesuada quam pellentesque. Maecenas congue, tellus quis commodo rutrum, magna leo egestas arcu, quis suscipit ex risus id ligula. Suspendisse potenti. Morbi blandit lacus vitae laoreet vulputate. Donec vitae tellus eleifend, lobortis eros eu, tincidunt enim. Nullam et ullamcorper nisi. Vivamus tellus ex, lobortis quis rutrum ut, dapibus sit amet turpis. Phasellus pellentesque metus diam, commodo tristique ante commodo ac. Ut mollis ipsum nec diam blandit sollicitudin. Duis bibendum lacus nec commodo dapibus. Sed condimentum luctus ante, id ultricies urna varius nec. Nam convallis magna nec bibendum ultrices. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed auctor pharetra quam, vitae porta ex bibendum eu. + Vivamus ut venenatis lectus. Phasellus nec elit id sem dictum ornare. Quisque feugiat, diam eget sagittis ultricies, orci turpis efficitur nisi, et fringilla justo odio nec nibh. In hac habitasse platea dictumst. Sed tempus bibendum feugiat. Etiam luctus mauris arcu, non interdum ipsum ultrices id. Vivamus blandit urna sit amet scelerisque vulputate. Quisque in metus eget massa rutrum dictum sit amet sed nulla. Vivamus vel efficitur dolor. + Ut et consequat enim, quis ornare nibh. In lectus neque, mollis et suscipit et, vestibulum vitae augue. Praesent id ante sit amet odio venenatis placerat a at erat. Sed sed metus sed nisi dictum varius. Integer tincidunt fermentum purus ac porta. Fusce porttitor non risus eget tristique. Donec augue nunc, maximus at fermentum vel, varius et neque. Ut sed consectetur mauris. Quisque ipsum enim, porttitor vitae imperdiet sit amet, tempor et mauris. Aliquam malesuada tincidunt lectus quis blandit. Sed commodo orci felis, quis ultrices tellus facilisis sed. Nunc vel varius est. Duis ullamcorper eu metus in pulvinar. Morbi at sapien dictum, rutrum mauris eget, interdum tellus. + Why do we use it? + Comment: Exctracted from the lipsum.com website. + It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. + The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. + Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). + Chapter: Chapter Two + Point of View: Bod + Plot: Main + Locations: Europe + Synopsis: Curabitur a elit posuere, varius ex et, convallis neque. Phasellus sagittis pharetra sem vitae dapibus. Curabitur varius lorem non pulvinar congue. + Curabitur a elit posuere, varius ex et, convallis neque. Phasellus sagittis pharetra sem vitae dapibus. Curabitur varius lorem non pulvinar congue. Vestibulum pharetra fermentum leo, sed faucibus eros placerat quis. In hac habitasse platea dictumst. Donec metus massa, rutrum quis consequat et, tincidunt ac felis. Duis mollis metus ac nunc tincidunt blandit. Ut aliquet velit eu odio pharetra condimentum. Integer rutrum lacus orci, id venenatis libero accumsan at. + Scene: Scene Three + Point of View: Bod + Plot: Main + Locations: Europe + Synopsis: Aenean ut libero ut lectus porttitor rhoncus vel et massa. Nam pretium, nibh et varius vehicula, urna metus blandit eros, euismod pharetra diam diam et libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. + Aenean ut libero ut lectus porttitor rhoncus vel et massa. Nam pretium, nibh et varius vehicula, urna metus blandit eros, euismod pharetra diam diam et libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean tincidunt lacus vitae nibh elementum eleifend. Sed rutrum condimentum sem quis blandit. Duis imperdiet libero metus, quis convallis quam faucibus a. Nulla ligula est, semper quis sollicitudin et, pretium id justo. Curabitur pharetra risus eget consectetur commodo. Duis mattis arcu non est condimentum, id venenatis risus volutpat. Pellentesque aliquet mauris non mauris porttitor ultrices. Phasellus ut vestibulum mi. Suspendisse malesuada metus lorem, a malesuada orci rhoncus a. Praesent euismod convallis ante, lacinia tincidunt ex egestas id. Praesent sit amet efficitur sapien. Morbi tincidunt volutpat nunc sed dictum. Aliquam ultrices metus id fermentum lobortis. + Pellentesque id sagittis dui. Praesent ut nisi sit amet libero euismod ornare. Vestibulum vehicula, lorem eget aliquet imperdiet, eros nulla iaculis mi, vel bibendum est dui sed orci. Nullam vitae lorem rutrum, euismod lacus id, ullamcorper lectus. Duis nec commodo mi, a fringilla diam. Vestibulum molestie nibh tristique, viverra augue non, aliquet metus. Phasellus a tellus ac nisl tempor aliquet. Nulla vitae sapien rutrum augue ornare ultrices a quis nisi. Sed pulvinar tincidunt ex. Fusce vel sem vitae ante pellentesque lobortis. + Maecenas ullamcorper lacus nec turpis finibus aliquet eget rutrum augue. Integer lorem erat, faucibus non lacus lacinia, pulvinar egestas felis. Proin rutrum nunc eget nulla varius, id blandit mauris tincidunt. Donec sit amet ullamcorper nisi, ut efficitur mi. Aliquam aliquet, nulla eget rhoncus tristique, justo lorem consectetur dui, id ornare leo odio sed tellus. Curabitur interdum velit a turpis condimentum venenatis. Nunc rhoncus sem ac augue auctor, nec malesuada ex fringilla. Vestibulum egestas diam sed leo consectetur vulputate quis eget enim. Nam tincidunt metus sit amet maximus ullamcorper. Sed placerat velit vitae massa efficitur viverra. Etiam eleifend dignissim ante, sed luctus nisl tristique a. In vestibulum pharetra dolor in molestie. Vivamus auctor massa ac magna imperdiet, sit amet iaculis turpis finibus. + Aenean dapibus vulputate purus, sit amet tempor nunc suscipit consequat. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris auctor congue eros, non pellentesque neque dapibus ac. Vestibulum non leo nec urna lacinia eleifend quis et diam. Praesent eu nisi magna. Nulla at magna massa. Suspendisse porta varius scelerisque. Duis at auctor dolor, non dapibus urna. Nunc venenatis feugiat magna non molestie. Aliquam non ornare ex. Quisque eu ultrices velit, quis pellentesque eros. Phasellus eleifend, elit id imperdiet aliquam, nulla quam molestie turpis, at egestas odio ante et tortor. Suspendisse fringilla condimentum justo, at aliquet odio aliquam ac. + Scene: Scene Four + Point of View: Bod + Plot: Main + Locations: Europe + Synopsis: Nam tempor blandit magna laoreet aliquet. Vestibulum auctor posuere leo, ac gravida nisi rhoncus varius. Aenean posuere dolor vitae condimentum volutpat. Donec egestas volutpat risus, quis luctus justo. + Nam tempor blandit magna laoreet aliquet. Vestibulum auctor posuere leo, ac gravida nisi rhoncus varius. Aenean posuere dolor vitae condimentum volutpat. Donec egestas volutpat risus, quis luctus justo. Nullam viverra dui et auctor pretium. Ut ullamcorper velit urna, sed imperdiet massa convallis a. Suspendisse efficitur, ipsum nec cursus pulvinar, eros urna posuere diam, nec elementum mi felis vitae sapien. + Duis efficitur metus pulvinar, molestie magna eget, feugiat dui. Fusce convallis vehicula ipsum convallis blandit. Duis eros risus, malesuada eu imperdiet in, hendrerit ac metus. Vestibulum id justo gravida, dignissim nibh non, iaculis diam. Fusce accumsan est ut massa porta ultricies. Nulla vitae justo in tortor laoreet mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin eu libero justo. Vivamus aliquet placerat est, et auctor eros posuere venenatis. Nunc quam diam, tincidunt ac aliquet in, fermentum sit amet lectus. Proin commodo tincidunt blandit. Quisque erat arcu, semper nec dui non, consectetur gravida ipsum. Nullam pretium consectetur elit at condimentum. + Etiam sagittis, erat vitae accumsan tempor, neque augue scelerisque nulla, ut ultrices justo urna sit amet augue. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aenean at pulvinar tortor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras vel porta quam. Nullam eu mauris mollis, vehicula justo vel, placerat sapien. Phasellus viverra elit et vestibulum pharetra. Vestibulum commodo fermentum leo, eu porta nisi aliquam eget. Nulla tempus porttitor nisi nec mollis. Nam non mollis turpis. Nam finibus leo a bibendum tincidunt. Donec commodo velit magna, ac semper sapien mattis id. Proin sem velit, lobortis quis ultricies id, pharetra et lectus. Vestibulum condimentum neque vitae mi dapibus mollis. Mauris luctus vel sapien vitae hendrerit. + Aenean vestibulum magna placerat fermentum tempus. Nam auctor condimentum nunc, in elementum quam ornare a. Etiam in ipsum elit. Proin pharetra, dolor sollicitudin pellentesque congue, lorem dolor ultricies magna, non iaculis risus nisl dictum diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vivamus vel euismod nibh, et lobortis dolor. Maecenas dui odio, gravida nec molestie ut, feugiat ut arcu. Pellentesque risus sapien, gravida a convallis quis, ullamcorper porttitor sapien. + Donec ipsum eros, vestibulum sit amet cursus eget, iaculis quis dolor. Pellentesque magna augue, tristique dapibus mi vitae, molestie venenatis enim. Nam malesuada, turpis volutpat rhoncus ullamcorper, justo est eleifend orci, ut luctus risus ex rutrum arcu. Sed mi elit, feugiat rhoncus ornare sed, porta id leo. Pellentesque feugiat nulla tincidunt erat suscipit, eu congue lacus hendrerit. Morbi pulvinar enim sed consequat auctor. Ut eleifend enim sem, vitae euismod ex ultricies sit amet. Curabitur eu efficitur nisi, suscipit finibus sapien. In sodales blandit erat, vestibulum pulvinar ante volutpat nec. Vivamus dictum non libero at molestie. Donec sit amet neque in ante convallis pretium. Nunc vel iaculis dui. + Phasellus eu nunc ut nunc faucibus laoreet. Aliquam at magna risus. Praesent lobortis, risus finibus semper varius, magna purus vestibulum eros, at pulvinar sapien enim a ex. In scelerisque malesuada ex, sit amet egestas neque condimentum sed. Praesent vulputate efficitur massa. Cras at accumsan ligula. In elementum lectus eget blandit dictum. Nam vitae libero ut justo eleifend rutrum ac nec arcu. Aliquam sodales in quam congue vestibulum. Aliquam in accumsan sapien. Quisque lobortis nisl nisi, vitae bibendum turpis efficitur sed. Vestibulum tempor nulla eget nisi convallis, blandit sagittis ipsum convallis. Donec odio nibh, ultrices quis odio in, mollis euismod libero. + Scene: Scene Five + Point of View: Bod + Plot: Main + Locations: Europe + Synopsis: Praesent eget est porta, dictum ante in, egestas risus. Mauris risus mauris, consequat aliquam mauris et, feugiat iaculis ipsum. Aliquam arcu ipsum, fermentum ut arcu sed, lobortis euismod sem. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. + Praesent eget est porta, dictum ante in, egestas risus. Mauris risus mauris, consequat aliquam mauris et, feugiat iaculis ipsum. Aliquam arcu ipsum, fermentum ut arcu sed, lobortis euismod sem. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In sed felis auctor, rhoncus dui ac, consequat dolor. Integer volutpat libero sed nisl aliquet varius. Suspendisse et lorem sapien. Proin id ultrices nibh, ac suscipit diam. Suspendisse placerat varius porttitor. Curabitur elementum sed enim ultrices imperdiet. + In ut lobortis lacus, nec luctus arcu. Vivamus condimentum sapien a ipsum malesuada sodales. Donec et vestibulum risus. Integer dictum euismod eros id tincidunt. Aliquam sagittis leo vitae consequat fermentum. Donec maximus ex eu ex iaculis porta. Praesent pharetra lacinia risus, et eleifend diam commodo non. Sed feugiat ipsum ut orci sagittis, quis faucibus lectus blandit. Sed tellus quam, gravida vitae laoreet quis, tempus lobortis dui. Vivamus semper accumsan ullamcorper. Praesent tempus pretium eros, non elementum risus. Pellentesque odio quam, auctor quis ex non, vulputate egestas dolor. Nunc luctus enim ut justo sodales consectetur. Sed aliquet a mauris vel posuere. + Donec luctus lectus efficitur, blandit nisi vitae, dignissim tellus. Pellentesque euismod pharetra augue gravida hendrerit. Quisque nisi mi, mattis ac nisi non, maximus malesuada ante. Nulla lobortis, diam eu ornare ornare, tellus enim feugiat arcu, non vestibulum tortor nunc eu justo. Integer blandit felis justo, eu semper est scelerisque vel. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam ultricies, nisi vel elementum commodo, nisl dolor tincidunt magna, sed varius est nunc at lectus. Aliquam dolor tortor, sodales placerat ultricies quis, sodales quis sapien. Duis ullamcorper sollicitudin risus at mattis. Integer consequat et nunc at condimentum. Pellentesque cursus congue augue, non suscipit lectus sodales ut. Nam a mi bibendum, blandit nisl eu, accumsan nunc. Aliquam a ex mauris. Sed nec sem quis arcu dignissim tempus eget et turpis. Ut sed ex nec ipsum ultrices lobortis. + Pellentesque rhoncus pharetra eros, non mollis nisi pretium non. Mauris accumsan quis odio quis euismod. Maecenas ultrices, augue et aliquam tincidunt, erat tellus ornare ligula, quis ultrices turpis nibh vel justo. Fusce gravida odio tellus. In a congue diam. Mauris consequat ex id leo lacinia dictum. Fusce id sem sodales, ultrices sapien ac, convallis orci. Donec gravida nunc sit amet nisi hendrerit, sed porta enim aliquam. In hac habitasse platea dictumst. Cras a orci felis. Curabitur non felis nec urna maximus auctor ut ut nisi. Curabitur at turpis eleifend, blandit eros at, molestie odio. Phasellus euismod neque augue. + Integer egestas maximus leo eu facilisis. Nunc rhoncus dignissim lectus eu lacinia. Praesent lacinia urna porttitor aliquam condimentum. Nulla eu eros dictum, dictum nunc vitae, sagittis nibh. Integer ante neque, consequat nec sollicitudin id, consectetur vitae dolor. Nullam volutpat sem orci, quis viverra magna auctor a. Suspendisse potenti. Maecenas commodo sed neque pellentesque vehicula. Sed luctus nisl risus, elementum semper purus interdum vel. Ut pulvinar, massa sit amet venenatis placerat, nunc lacus hendrerit odio, non aliquet nunc risus eu lectus. Maecenas feugiat semper ligula, id lobortis sem porta eu. Integer posuere elit magna, at mollis eros bibendum et. Ut imperdiet purus vel nulla aliquam maximus. Morbi sodales purus tellus, a rhoncus sem rutrum sit amet. Quisque risus sem, laoreet nec convallis nec, rutrum vitae justo. + Notes: Characters + Nobody Owens + Tag: Bod + Plot: Main + Pellentesque nec erat ut nulla posuere commodo. Curabitur nisi augue, imperdiet et porta imperdiet, efficitur id leo. Cras finibus arcu at nibh commodo congue. Proin suscipit placerat condimentum. Aenean ante enim, cursus id lorem a, blandit venenatis nibh. Maecenas suscipit porta elit, sit amet porta felis porttitor eu. Sed a dui nibh. Phasellus sed faucibus dui. Pellentesque felis nulla, ultrices non efficitur quis, rutrum id mi. Mauris tempus auctor nisl, in bibendum enim pellentesque sit amet. Proin nunc lacus, imperdiet nec posuere ac, interdum non lectus. + Suspendisse faucibus est auctor orci mollis luctus. Praesent quis sodales neque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sodales rutrum mattis. In in sem ornare, consequat nulla ac, convallis arcu. Duis ac metus id felis commodo commodo sit amet eget diam. Curabitur rhoncus lacinia leo at sodales. Etiam finibus porta diam a viverra. Praesent nisi urna, volutpat sit amet odio at, vehicula vehicula leo. In non enim eget nisl luctus commodo. Pellentesque pellentesque at lectus at luctus. Quisque nec felis bibendum, lacinia libero ut, lacinia eros. Integer finibus ultricies nibh sit amet placerat. + Nullam scelerisque velit et tortor congue vestibulum a at nisi. Vivamus sodales ut turpis a convallis. In dignissim nibh at luctus sodales. Etiam sit amet rhoncus massa. Phasellus ligula magna, sollicitudin non imperdiet sit amet, volutpat vel magna. Nunc vestibulum tempor lectus, sit amet porta nunc hendrerit in. Curabitur non odio sit amet massa tincidunt facilisis. Integer et luctus nunc, eget euismod leo. Praesent faucibus metus sed purus convallis scelerisque. Fusce viverra lorem et placerat malesuada. In at elit malesuada, ullamcorper risus vitae, sodales dolor. Donec quis elementum lectus. Quisque eu eros at dui imperdiet euismod ut id neque. + Notes: Plot + Main Plot + Tag: Main + Suspendisse vulputate malesuada pellentesque. Aenean sollicitudin cursus mi, vitae ultricies felis ullamcorper eu. Duis luctus risus mi, in accumsan velit cursus ut. Vestibulum eleifend leo in magna eleifend fermentum. Proin nec ornare elit. Phasellus nec interdum risus. In a volutpat augue, quis egestas justo. Morbi porta mauris mattis bibendum imperdiet. + Mauris ut erat eu lorem malesuada egestas vel vel urna. Maecenas ac semper quam. Maecenas aliquet metus non interdum mattis. Proin consectetur molestie ligula. Aliquam sollicitudin pulvinar urna a pellentesque. Suspendisse ultrices, est mattis scelerisque porta, nisi nisi laoreet nisl, non condimentum quam ante a velit. Proin scelerisque justo augue, nec laoreet ligula egestas at. Etiam enim quam, ultrices non accumsan hendrerit, elementum vel ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam efficitur odio libero, in vestibulum arcu aliquam at. Cras non vehicula augue. Integer lobortis, est vitae aliquam facilisis, metus ligula aliquet eros, at porttitor sem tortor eget massa. Aliquam varius scelerisque neque sed gravida. Aenean eleifend lorem id ante elementum sollicitudin. Proin commodo massa a quam volutpat, mollis fermentum turpis efficitur. + Notes: World + Ancient Europe + Tag: Europe + Vivamus sodales risus ac accumsan posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nunc vel enim felis. Vestibulum dignissim massa nunc, a auctor magna eleifend et. Proin dignissim sodales erat vitae convallis. Aliquam id tellus dui. Curabitur sollicitudin scelerisque ex sit amet posuere. Nam rutrum felis id rhoncus feugiat. Duis sagittis quam quis purus efficitur, quis rutrum odio iaculis. Maecenas semper ante turpis, at vulputate mi consectetur non. Sed rutrum nibh turpis, quis rhoncus purus ornare quis. Vestibulum at rutrum mauris. Integer dolor nisi, tincidunt eget vehicula ac, ultricies at ligula. + Aenean semper turpis quis varius rhoncus. Vivamus ac mi eget felis euismod vulputate. Nam eu tempus velit. Etiam ut est porta, finibus erat sit amet, consectetur felis. Nullam consequat felis ut lacus pharetra, in lobortis urna mollis. Nulla varius eros nec lorem rhoncus, sed venenatis risus ultrices. Phasellus pellentesque laoreet neque, ut ultricies lacus vulputate quis. In malesuada dui sit amet est interdum, eget consectetur mi gravida. Cras vel bibendum purus. Quisque commodo tempor arcu, non lacinia sem blandit eleifend. Quisque at neque gravida, porttitor metus a, suscipit diam. Quisque convallis sodales lacus et condimentum. Donec a suscipit diam. Pellentesque eget cursus neque. + Nunc ullamcorper magna quis elit condimentum rhoncus. Aenean dictum pulvinar dolor suscipit interdum. Aliquam elit massa, elementum nec cursus eu, maximus nec ipsum. Donec ullamcorper iaculis dolor eu commodo. Nunc eget tortor quis turpis consectetur varius. Vestibulum nec justo vel tellus venenatis condimentum. Duis auctor iaculis massa. Nunc risus magna, rutrum vitae eros non, tristique mollis enim. + + + diff --git a/tests/reference/mBuildDocBuild_Standard_Markdown_Lorem_Ipsum.md b/tests/reference/mBuildDocBuild_Standard_Markdown_Lorem_Ipsum.md new file mode 100644 index 00000000..9149335a --- /dev/null +++ b/tests/reference/mBuildDocBuild_Standard_Markdown_Lorem_Ipsum.md @@ -0,0 +1,183 @@ +# Lorem Ipsum + +**By lipsum.com** + +“Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…” + +“There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain…” + +**Comment:** Exctracted from the lipsum.com website. + +Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of “de Finibus Bonorum et Malorum” (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, “Lorem ipsum dolor sit amet..”, comes from a line in section 1.10.32. + +The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from “de Finibus Bonorum et Malorum” by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. + +## Prologue + +**Synopsis:** Explanation from the lipsum.com website. + +_Lorem Ipsum_ is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. + +# Title: Act One + +“Fusce maximus felis libero” + +## Chapter: Chapter One + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque at aliquam quam. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque at aliquam quam. Praesent magna nunc, lacinia sit amet quam eget, aliquet ultrices justo. Morbi ornare enim et lorem rutrum finibus ut eu dolor. Aliquam a orci odio. Ut ultrices sem quis massa placerat, eget mollis nisl cursus. Cras vel sagittis justo. Ut non ultricies leo. Maecenas rutrum velit in est varius, et egestas massa pulvinar. + +### Scene: Scene One + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Aenean ut placerat velit. Etiam laoreet ullamcorper risus, eget lobortis enim scelerisque non. Suspendisse id maximus nunc, et mollis sapien. Curabitur vel semper sapien, non pulvinar dolor. Etiam finibus nisi vel mi molestie consectetur. + +Aenean ut placerat velit. Etiam laoreet ullamcorper risus, eget lobortis enim scelerisque non. Suspendisse id maximus nunc, et mollis sapien. Curabitur vel semper sapien, non pulvinar dolor. Etiam finibus nisi vel mi molestie consectetur. Donec quis ante nunc. Mauris ut leo ipsum. Vestibulum est neque, hendrerit nec neque a, ullamcorper lobortis tellus. Fusce sollicitudin purus quis congue bibendum. Aliquam condimentum ipsum tristique blandit tristique. Donec pulvinar neque ac suscipit malesuada. + +Aliquam ut nisl arcu. Ut ultricies, lorem dignissim rutrum convallis, risus orci tempus lectus, congue feugiat sem lectus vitae odio. Duis sit amet justo finibus, hendrerit nulla at, ullamcorper enim. Praesent vel tellus sit amet tellus vulputate bibendum. Morbi eleifend sagittis sem, ac volutpat ante congue non. In hac habitasse platea dictumst. Morbi lobortis fermentum elit, dignissim sagittis ligula volutpat lacinia. Vestibulum eu interdum odio. Integer ac purus commodo metus congue tempor non at urna. Sed eget tortor vel quam viverra egestas. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec non convallis mauris, ac feugiat ex. + +#### Section: Scene One, Section Two + +Integer vel libero ipsum. Donec varius aliquam libero, sit amet commodo urna hendrerit non. Nullam quis erat mollis nunc viverra volutpat tincidunt in odio. Nam vitae quam sem. Aliquam suscipit nulla non lorem pharetra semper. Ut suscipit erat eu ligula accumsan ultrices. Phasellus nisl tellus, placerat sed laoreet id, consectetur nec dolor. Sed fringilla ipsum id dapibus posuere. Aenean finibus pharetra tincidunt. Ut molestie malesuada nulla, id posuere lorem tincidunt eu. Aliquam tempor eros a est vulputate, scelerisque pulvinar ipsum fermentum. In hac habitasse platea dictumst. + +Curabitur congue, justo quis interdum fermentum, tellus nulla imperdiet sapien, eu interdum enim tellus condimentum metus. Vivamus nunc velit, dignissim ut ultrices sit amet, ultricies quis enim. Donec ut vestibulum neque. Vivamus semper neque id ex ullamcorper varius. Fusce mattis nibh viverra lorem sagittis, et tempor arcu congue. Suspendisse sit amet felis sed urna facilisis mattis eget vitae arcu. Proin eu magna hendrerit, tristique sem maximus, placerat diam. Nulla tristique sed velit sit amet varius. Etiam vel ornare magna, in vulputate arcu. Cras velit orci, tincidunt sed volutpat cursus, bibendum vel sem. Nunc vulputate pharetra tortor, ac consectetur neque tincidunt sit amet. Nulla ornare mi sed mi dignissim ultricies. Ut tincidunt bibendum mauris, sed elementum ex vulputate vel. Mauris fermentum, felis nec vehicula congue, felis lorem facilisis erat, a dictum dolor augue vitae quam. Maecenas rutrum tortor nec consequat eleifend. + +### Scene: Scene Two + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer sapien nulla, dictum at lacus a, dignissim consectetur dolor. Nunc vel eleifend lacus, eu dapibus orci. + +Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer sapien nulla, dictum at lacus a, dignissim consectetur dolor. Nunc vel eleifend lacus, eu dapibus orci. Vestibulum facilisis bibendum aliquam. Aliquam posuere, turpis ac bibendum varius, sem tellus venenatis risus, in elementum massa enim ac lorem. Integer in sem ac diam blandit ultricies ut in nulla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sit amet erat est. Curabitur vitae cursus justo, sit amet placerat dolor. Vivamus eu felis hendrerit, tincidunt massa rutrum, maximus arcu. Pellentesque commodo justo odio, vel rutrum nulla tincidunt eu. Integer non neque condimentum, convallis diam non, varius ligula. Aliquam eget sapien mauris. Aenean pharetra nunc nisi, vel maximus ante tristique sit amet. Aliquam risus metus, interdum non odio eu, consectetur lacinia sapien. + +Proin vitae gravida nisl. Integer viverra orci turpis, sit amet pretium ligula facilisis consequat. Nulla interdum commodo metus, mollis consequat dui tincidunt et. Proin consequat bibendum justo id commodo. Fusce fermentum nunc turpis, eu vestibulum risus feugiat ut. Sed scelerisque vel ligula ut interdum. Suspendisse ac blandit ligula, sagittis fringilla dolor. In tincidunt convallis diam et ornare. Aenean id dignissim est, ut rhoncus quam. Donec vitae nisl velit. In convallis nibh ut augue dignissim, eu elementum quam cursus. Phasellus in lectus lorem. Curabitur in pellentesque nisi, at gravida sapien. Sed cursus justo volutpat lacus placerat, sit amet dignissim turpis commodo. Aliquam vitae orci eget nulla posuere condimentum in ut felis. + +Nulla accumsan ante in pulvinar efficitur. Nulla non velit quis urna hendrerit bibendum. Suspendisse ultrices ante eu justo malesuada, sed fermentum enim rutrum. Nunc fermentum pharetra felis, vitae sollicitudin quam rutrum porta. Aliquam fringilla velit a mi laoreet, et luctus est rutrum. In gravida non ipsum sit amet tempus. Curabitur et eleifend purus. Nulla facilisi. + +#### Section: Scene Two, Section Two + +Suspendisse potenti. Fusce tempus lorem nec laoreet suscipit. Fusce vulputate nisl ac diam tincidunt, nec malesuada quam pellentesque. Maecenas congue, tellus quis commodo rutrum, magna leo egestas arcu, quis suscipit ex risus id ligula. Suspendisse potenti. Morbi blandit lacus vitae laoreet vulputate. Donec vitae tellus eleifend, lobortis eros eu, tincidunt enim. Nullam et ullamcorper nisi. Vivamus tellus ex, lobortis quis rutrum ut, dapibus sit amet turpis. Phasellus pellentesque metus diam, commodo tristique ante commodo ac. Ut mollis ipsum nec diam blandit sollicitudin. Duis bibendum lacus nec commodo dapibus. Sed condimentum luctus ante, id ultricies urna varius nec. Nam convallis magna nec bibendum ultrices. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed auctor pharetra quam, vitae porta ex bibendum eu. + +Vivamus ut venenatis lectus. Phasellus nec elit id sem dictum ornare. Quisque feugiat, diam eget sagittis ultricies, orci turpis efficitur nisi, et fringilla justo odio nec nibh. In hac habitasse platea dictumst. Sed tempus bibendum feugiat. Etiam luctus mauris arcu, non interdum ipsum ultrices id. Vivamus blandit urna sit amet scelerisque vulputate. Quisque in metus eget massa rutrum dictum sit amet sed nulla. Vivamus vel efficitur dolor. + +Ut et consequat enim, quis ornare nibh. In lectus neque, mollis et suscipit et, vestibulum vitae augue. Praesent id ante sit amet odio venenatis placerat a at erat. Sed sed metus sed nisi dictum varius. Integer tincidunt fermentum purus ac porta. Fusce porttitor non risus eget tristique. Donec augue nunc, maximus at fermentum vel, varius et neque. Ut sed consectetur mauris. Quisque ipsum enim, porttitor vitae imperdiet sit amet, tempor et mauris. Aliquam malesuada tincidunt lectus quis blandit. Sed commodo orci felis, quis ultrices tellus facilisis sed. Nunc vel varius est. Duis ullamcorper eu metus in pulvinar. Morbi at sapien dictum, rutrum mauris eget, interdum tellus. + +## Why do we use it? + +**Comment:** Exctracted from the lipsum.com website. + + It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. + + The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. + + Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). + +## Chapter: Chapter Two + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Curabitur a elit posuere, varius ex et, convallis neque. Phasellus sagittis pharetra sem vitae dapibus. Curabitur varius lorem non pulvinar congue. + +Curabitur a elit posuere, varius ex et, convallis neque. Phasellus sagittis pharetra sem vitae dapibus. Curabitur varius lorem non pulvinar congue. Vestibulum pharetra fermentum leo, sed faucibus eros placerat quis. In hac habitasse platea dictumst. Donec metus massa, rutrum quis consequat et, tincidunt ac felis. Duis mollis metus ac nunc tincidunt blandit. Ut aliquet velit eu odio pharetra condimentum. Integer rutrum lacus orci, id venenatis libero accumsan at. + +### Scene: Scene Three + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Aenean ut libero ut lectus porttitor rhoncus vel et massa. Nam pretium, nibh et varius vehicula, urna metus blandit eros, euismod pharetra diam diam et libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. + +Aenean ut libero ut lectus porttitor rhoncus vel et massa. Nam pretium, nibh et varius vehicula, urna metus blandit eros, euismod pharetra diam diam et libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean tincidunt lacus vitae nibh elementum eleifend. Sed rutrum condimentum sem quis blandit. Duis imperdiet libero metus, quis convallis quam faucibus a. Nulla ligula est, semper quis sollicitudin et, pretium id justo. Curabitur pharetra risus eget consectetur commodo. Duis mattis arcu non est condimentum, id venenatis risus volutpat. Pellentesque aliquet mauris non mauris porttitor ultrices. Phasellus ut vestibulum mi. Suspendisse malesuada metus lorem, a malesuada orci rhoncus a. Praesent euismod convallis ante, lacinia tincidunt ex egestas id. Praesent sit amet efficitur sapien. Morbi tincidunt volutpat nunc sed dictum. Aliquam ultrices metus id fermentum lobortis. + +Pellentesque id sagittis dui. Praesent ut nisi sit amet libero euismod ornare. Vestibulum vehicula, lorem eget aliquet imperdiet, eros nulla iaculis mi, vel bibendum est dui sed orci. Nullam vitae lorem rutrum, euismod lacus id, ullamcorper lectus. Duis nec commodo mi, a fringilla diam. Vestibulum molestie nibh tristique, viverra augue non, aliquet metus. Phasellus a tellus ac nisl tempor aliquet. Nulla vitae sapien rutrum augue ornare ultrices a quis nisi. Sed pulvinar tincidunt ex. Fusce vel sem vitae ante pellentesque lobortis. + +Maecenas ullamcorper lacus nec turpis finibus aliquet eget rutrum augue. Integer lorem erat, faucibus non lacus lacinia, pulvinar egestas felis. Proin rutrum nunc eget nulla varius, id blandit mauris tincidunt. Donec sit amet ullamcorper nisi, ut efficitur mi. Aliquam aliquet, nulla eget rhoncus tristique, justo lorem consectetur dui, id ornare leo odio sed tellus. Curabitur interdum velit a turpis condimentum venenatis. Nunc rhoncus sem ac augue auctor, nec malesuada ex fringilla. Vestibulum egestas diam sed leo consectetur vulputate quis eget enim. Nam tincidunt metus sit amet maximus ullamcorper. Sed placerat velit vitae massa efficitur viverra. Etiam eleifend dignissim ante, sed luctus nisl tristique a. In vestibulum pharetra dolor in molestie. Vivamus auctor massa ac magna imperdiet, sit amet iaculis turpis finibus. + +Aenean dapibus vulputate purus, sit amet tempor nunc suscipit consequat. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris auctor congue eros, non pellentesque neque dapibus ac. Vestibulum non leo nec urna lacinia eleifend quis et diam. Praesent eu nisi magna. Nulla at magna massa. Suspendisse porta varius scelerisque. Duis at auctor dolor, non dapibus urna. Nunc venenatis feugiat magna non molestie. Aliquam non ornare ex. Quisque eu ultrices velit, quis pellentesque eros. Phasellus eleifend, elit id imperdiet aliquam, nulla quam molestie turpis, at egestas odio ante et tortor. Suspendisse fringilla condimentum justo, at aliquet odio aliquam ac. + +### Scene: Scene Four + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Nam tempor blandit magna laoreet aliquet. Vestibulum auctor posuere leo, ac gravida nisi rhoncus varius. Aenean posuere dolor vitae condimentum volutpat. Donec egestas volutpat risus, quis luctus justo. + +Nam tempor blandit magna laoreet aliquet. Vestibulum auctor posuere leo, ac gravida nisi rhoncus varius. Aenean posuere dolor vitae condimentum volutpat. Donec egestas volutpat risus, quis luctus justo. Nullam viverra dui et auctor pretium. Ut ullamcorper velit urna, sed imperdiet massa convallis a. Suspendisse efficitur, ipsum nec cursus pulvinar, eros urna posuere diam, nec elementum mi felis vitae sapien. + +Duis efficitur metus pulvinar, molestie magna eget, feugiat dui. Fusce convallis vehicula ipsum convallis blandit. Duis eros risus, malesuada eu imperdiet in, hendrerit ac metus. Vestibulum id justo gravida, dignissim nibh non, iaculis diam. Fusce accumsan est ut massa porta ultricies. Nulla vitae justo in tortor laoreet mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin eu libero justo. Vivamus aliquet placerat est, et auctor eros posuere venenatis. Nunc quam diam, tincidunt ac aliquet in, fermentum sit amet lectus. Proin commodo tincidunt blandit. Quisque erat arcu, semper nec dui non, consectetur gravida ipsum. Nullam pretium consectetur elit at condimentum. + +Etiam sagittis, erat vitae accumsan tempor, neque augue scelerisque nulla, ut ultrices justo urna sit amet augue. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aenean at pulvinar tortor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras vel porta quam. Nullam eu mauris mollis, vehicula justo vel, placerat sapien. Phasellus viverra elit et vestibulum pharetra. Vestibulum commodo fermentum leo, eu porta nisi aliquam eget. Nulla tempus porttitor nisi nec mollis. Nam non mollis turpis. Nam finibus leo a bibendum tincidunt. Donec commodo velit magna, ac semper sapien mattis id. Proin sem velit, lobortis quis ultricies id, pharetra et lectus. Vestibulum condimentum neque vitae mi dapibus mollis. Mauris luctus vel sapien vitae hendrerit. + +Aenean vestibulum magna placerat fermentum tempus. Nam auctor condimentum nunc, in elementum quam ornare a. Etiam in ipsum elit. Proin pharetra, dolor sollicitudin pellentesque congue, lorem dolor ultricies magna, non iaculis risus nisl dictum diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vivamus vel euismod nibh, et lobortis dolor. Maecenas dui odio, gravida nec molestie ut, feugiat ut arcu. Pellentesque risus sapien, gravida a convallis quis, ullamcorper porttitor sapien. + +Donec ipsum eros, vestibulum sit amet cursus eget, iaculis quis dolor. Pellentesque magna augue, tristique dapibus mi vitae, molestie venenatis enim. Nam malesuada, turpis volutpat rhoncus ullamcorper, justo est eleifend orci, ut luctus risus ex rutrum arcu. Sed mi elit, feugiat rhoncus ornare sed, porta id leo. Pellentesque feugiat nulla tincidunt erat suscipit, eu congue lacus hendrerit. Morbi pulvinar enim sed consequat auctor. Ut eleifend enim sem, vitae euismod ex ultricies sit amet. Curabitur eu efficitur nisi, suscipit finibus sapien. In sodales blandit erat, vestibulum pulvinar ante volutpat nec. Vivamus dictum non libero at molestie. Donec sit amet neque in ante convallis pretium. Nunc vel iaculis dui. + +Phasellus eu nunc ut nunc faucibus laoreet. Aliquam at magna risus. Praesent lobortis, risus finibus semper varius, magna purus vestibulum eros, at pulvinar sapien enim a ex. In scelerisque malesuada ex, sit amet egestas neque condimentum sed. Praesent vulputate efficitur massa. Cras at accumsan ligula. In elementum lectus eget blandit dictum. Nam vitae libero ut justo eleifend rutrum ac nec arcu. Aliquam sodales in quam congue vestibulum. Aliquam in accumsan sapien. Quisque lobortis nisl nisi, vitae bibendum turpis efficitur sed. Vestibulum tempor nulla eget nisi convallis, blandit sagittis ipsum convallis. Donec odio nibh, ultrices quis odio in, mollis euismod libero. + +### Scene: Scene Five + +**Point of View:** Bod +**Plot:** Main +**Locations:** Europe + +**Synopsis:** Praesent eget est porta, dictum ante in, egestas risus. Mauris risus mauris, consequat aliquam mauris et, feugiat iaculis ipsum. Aliquam arcu ipsum, fermentum ut arcu sed, lobortis euismod sem. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. + +Praesent eget est porta, dictum ante in, egestas risus. Mauris risus mauris, consequat aliquam mauris et, feugiat iaculis ipsum. Aliquam arcu ipsum, fermentum ut arcu sed, lobortis euismod sem. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In sed felis auctor, rhoncus dui ac, consequat dolor. Integer volutpat libero sed nisl aliquet varius. Suspendisse et lorem sapien. Proin id ultrices nibh, ac suscipit diam. Suspendisse placerat varius porttitor. Curabitur elementum sed enim ultrices imperdiet. + +In ut lobortis lacus, nec luctus arcu. Vivamus condimentum sapien a ipsum malesuada sodales. Donec et vestibulum risus. Integer dictum euismod eros id tincidunt. Aliquam sagittis leo vitae consequat fermentum. Donec maximus ex eu ex iaculis porta. Praesent pharetra lacinia risus, et eleifend diam commodo non. Sed feugiat ipsum ut orci sagittis, quis faucibus lectus blandit. Sed tellus quam, gravida vitae laoreet quis, tempus lobortis dui. Vivamus semper accumsan ullamcorper. Praesent tempus pretium eros, non elementum risus. Pellentesque odio quam, auctor quis ex non, vulputate egestas dolor. Nunc luctus enim ut justo sodales consectetur. Sed aliquet a mauris vel posuere. + +Donec luctus lectus efficitur, blandit nisi vitae, dignissim tellus. Pellentesque euismod pharetra augue gravida hendrerit. Quisque nisi mi, mattis ac nisi non, maximus malesuada ante. Nulla lobortis, diam eu ornare ornare, tellus enim feugiat arcu, non vestibulum tortor nunc eu justo. Integer blandit felis justo, eu semper est scelerisque vel. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam ultricies, nisi vel elementum commodo, nisl dolor tincidunt magna, sed varius est nunc at lectus. Aliquam dolor tortor, sodales placerat ultricies quis, sodales quis sapien. Duis ullamcorper sollicitudin risus at mattis. Integer consequat et nunc at condimentum. Pellentesque cursus congue augue, non suscipit lectus sodales ut. Nam a mi bibendum, blandit nisl eu, accumsan nunc. Aliquam a ex mauris. Sed nec sem quis arcu dignissim tempus eget et turpis. Ut sed ex nec ipsum ultrices lobortis. + +Pellentesque rhoncus pharetra eros, non mollis nisi pretium non. Mauris accumsan quis odio quis euismod. Maecenas ultrices, augue et aliquam tincidunt, erat tellus ornare ligula, quis ultrices turpis nibh vel justo. Fusce gravida odio tellus. In a congue diam. Mauris consequat ex id leo lacinia dictum. Fusce id sem sodales, ultrices sapien ac, convallis orci. Donec gravida nunc sit amet nisi hendrerit, sed porta enim aliquam. In hac habitasse platea dictumst. Cras a orci felis. Curabitur non felis nec urna maximus auctor ut ut nisi. Curabitur at turpis eleifend, blandit eros at, molestie odio. Phasellus euismod neque augue. + +Integer egestas maximus leo eu facilisis. Nunc rhoncus dignissim lectus eu lacinia. Praesent lacinia urna porttitor aliquam condimentum. Nulla eu eros dictum, dictum nunc vitae, sagittis nibh. Integer ante neque, consequat nec sollicitudin id, consectetur vitae dolor. Nullam volutpat sem orci, quis viverra magna auctor a. Suspendisse potenti. Maecenas commodo sed neque pellentesque vehicula. Sed luctus nisl risus, elementum semper purus interdum vel. Ut pulvinar, massa sit amet venenatis placerat, nunc lacus hendrerit odio, non aliquet nunc risus eu lectus. Maecenas feugiat semper ligula, id lobortis sem porta eu. Integer posuere elit magna, at mollis eros bibendum et. Ut imperdiet purus vel nulla aliquam maximus. Morbi sodales purus tellus, a rhoncus sem rutrum sit amet. Quisque risus sem, laoreet nec convallis nec, rutrum vitae justo. + +# Notes: Characters + +# Nobody Owens + +**Tag:** Bod +**Plot:** Main + +Pellentesque nec erat ut nulla posuere commodo. Curabitur nisi augue, imperdiet et porta imperdiet, efficitur id leo. Cras finibus arcu at nibh commodo congue. Proin suscipit placerat condimentum. Aenean ante enim, cursus id lorem a, blandit venenatis nibh. Maecenas suscipit porta elit, sit amet porta felis porttitor eu. Sed a dui nibh. Phasellus sed faucibus dui. Pellentesque felis nulla, ultrices non efficitur quis, rutrum id mi. Mauris tempus auctor nisl, in bibendum enim pellentesque sit amet. Proin nunc lacus, imperdiet nec posuere ac, interdum non lectus. + +Suspendisse faucibus est auctor orci mollis luctus. Praesent quis sodales neque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sodales rutrum mattis. In in sem ornare, consequat nulla ac, convallis arcu. Duis ac metus id felis commodo commodo sit amet eget diam. Curabitur rhoncus lacinia leo at sodales. Etiam finibus porta diam a viverra. Praesent nisi urna, volutpat sit amet odio at, vehicula vehicula leo. In non enim eget nisl luctus commodo. Pellentesque pellentesque at lectus at luctus. Quisque nec felis bibendum, lacinia libero ut, lacinia eros. Integer finibus ultricies nibh sit amet placerat. + +Nullam scelerisque velit et tortor congue vestibulum a at nisi. Vivamus sodales ut turpis a convallis. In dignissim nibh at luctus sodales. Etiam sit amet rhoncus massa. Phasellus ligula magna, sollicitudin non imperdiet sit amet, volutpat vel magna. Nunc vestibulum tempor lectus, sit amet porta nunc hendrerit in. Curabitur non odio sit amet massa tincidunt facilisis. Integer et luctus nunc, eget euismod leo. Praesent faucibus metus sed purus convallis scelerisque. Fusce viverra lorem et placerat malesuada. In at elit malesuada, ullamcorper risus vitae, sodales dolor. Donec quis elementum lectus. Quisque eu eros at dui imperdiet euismod ut id neque. + +# Notes: Plot + +# Main Plot + +**Tag:** Main + +Suspendisse vulputate malesuada pellentesque. Aenean sollicitudin cursus mi, vitae ultricies felis ullamcorper eu. Duis luctus risus mi, in accumsan velit cursus ut. Vestibulum eleifend leo in magna eleifend fermentum. Proin nec ornare elit. Phasellus nec interdum risus. In a volutpat augue, quis egestas justo. Morbi porta mauris mattis bibendum imperdiet. + +Mauris ut erat eu lorem malesuada egestas vel vel urna. Maecenas ac semper quam. Maecenas aliquet metus non interdum mattis. Proin consectetur molestie ligula. Aliquam sollicitudin pulvinar urna a pellentesque. Suspendisse ultrices, est mattis scelerisque porta, nisi nisi laoreet nisl, non condimentum quam ante a velit. Proin scelerisque justo augue, nec laoreet ligula egestas at. Etiam enim quam, ultrices non accumsan hendrerit, elementum vel ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam efficitur odio libero, in vestibulum arcu aliquam at. Cras non vehicula augue. Integer lobortis, est vitae aliquam facilisis, metus ligula aliquet eros, at porttitor sem tortor eget massa. Aliquam varius scelerisque neque sed gravida. Aenean eleifend lorem id ante elementum sollicitudin. Proin commodo massa a quam volutpat, mollis fermentum turpis efficitur. + +# Notes: World + +# Ancient Europe + +**Tag:** Europe + +Vivamus sodales risus ac accumsan posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nunc vel enim felis. Vestibulum dignissim massa nunc, a auctor magna eleifend et. Proin dignissim sodales erat vitae convallis. Aliquam id tellus dui. Curabitur sollicitudin scelerisque ex sit amet posuere. Nam rutrum felis id rhoncus feugiat. Duis sagittis quam quis purus efficitur, quis rutrum odio iaculis. Maecenas semper ante turpis, at vulputate mi consectetur non. Sed rutrum nibh turpis, quis rhoncus purus ornare quis. Vestibulum at rutrum mauris. Integer dolor nisi, tincidunt eget vehicula ac, ultricies at ligula. + +Aenean semper turpis quis varius rhoncus. Vivamus ac mi eget felis euismod vulputate. Nam eu tempus velit. Etiam ut est porta, finibus erat sit amet, consectetur felis. Nullam consequat felis ut lacus pharetra, in lobortis urna mollis. Nulla varius eros nec lorem rhoncus, sed venenatis risus ultrices. Phasellus pellentesque laoreet neque, ut ultricies lacus vulputate quis. In malesuada dui sit amet est interdum, eget consectetur mi gravida. Cras vel bibendum purus. Quisque commodo tempor arcu, non lacinia sem blandit eleifend. Quisque at neque gravida, porttitor metus a, suscipit diam. Quisque convallis sodales lacus et condimentum. Donec a suscipit diam. Pellentesque eget cursus neque. + +Nunc ullamcorper magna quis elit condimentum rhoncus. Aenean dictum pulvinar dolor suscipit interdum. Aliquam elit massa, elementum nec cursus eu, maximus nec ipsum. Donec ullamcorper iaculis dolor eu commodo. Nunc eget tortor quis turpis consectetur varius. Vestibulum nec justo vel tellus venenatis condimentum. Duis auctor iaculis massa. Nunc risus magna, rutrum vitae eros non, tristique mollis enim. + diff --git a/tests/test_mbuild/test_mbuild_docbuild.py b/tests/test_mbuild/test_mbuild_docbuild.py index ee9da08c..dbb1c5da 100644 --- a/tests/test_mbuild/test_mbuild_docbuild.py +++ b/tests/test_mbuild/test_mbuild_docbuild.py @@ -21,6 +21,11 @@ along with this program. If not, see . import pytest +from shutil import copyfile + +from mock import causeException, causeOSError +from tools import cmpFiles + from novelwriter.core.project import NWProject from novelwriter.mbuild.docbuild import NWBuildDocument @@ -43,11 +48,12 @@ BUILD_CONF = { "filter.includeComments": True, "filter.includeKeywords": True, "filter.includeBody": True, + "process.replaceTabs": True, } @pytest.mark.core -def testMBuildDocBuild_OpenDocument(mockGUI, prjLipsum, fncPath, tstPaths): +def testMBuildDocBuild_OpenDocument(monkeypatch, mockGUI, prjLipsum, fncPath, tstPaths): """Test builing an open document manuscript. """ theProject = NWProject(mockGUI) @@ -59,9 +65,18 @@ def testMBuildDocBuild_OpenDocument(mockGUI, prjLipsum, fncPath, tstPaths): for tItem in theProject.tree: docBuild.addDocument(tItem.itemHandle) + assert docBuild.buildLength == 21 + + # Check FODT Build + # ================ + + docFile = fncPath / "Lorem Ipsum.fodt" + tstFile = tstPaths.outDir / "mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt" + cmpFile = tstPaths.refDir / "mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt" + count = 0 error = [] - for _, success in docBuild.buildOpenDocument(fncPath / "Lorem Ipsum.fodt", True): + for _, success in docBuild.buildOpenDocument(docFile, True): count += 1 if success else 0 if docBuild.error: error.append(docBuild.error) @@ -69,4 +84,199 @@ def testMBuildDocBuild_OpenDocument(mockGUI, prjLipsum, fncPath, tstPaths): assert count == 21 assert error == [] + copyfile(docFile, tstFile) + assert cmpFiles(tstFile, cmpFile, ignoreStart=" Date: Thu, 12 Jan 2023 10:21:36 +0100 Subject: [PATCH 06/28] Rename the doc build functions --- novelwriter/mbuild/docbuild.py | 6 +++--- tests/test_mbuild/test_mbuild_docbuild.py | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/novelwriter/mbuild/docbuild.py b/novelwriter/mbuild/docbuild.py index 372a4258..a6ad864b 100644 --- a/novelwriter/mbuild/docbuild.py +++ b/novelwriter/mbuild/docbuild.py @@ -80,7 +80,7 @@ class NWBuildDocument: # Methods ## - def buildOpenDocument(self, savePath, isFlat): + def iterBuildOpenDocument(self, savePath, isFlat): """Build an Open Document file. """ makeOdt = ToOdt(self._project, isFlat=isFlat) @@ -103,7 +103,7 @@ class NWBuildDocument: return - def buildHTML(self, savePath): + def iterBuildHTML(self, savePath): """Build an HTML file. """ makeHtml = ToHtml(self._project) @@ -123,7 +123,7 @@ class NWBuildDocument: return - def buildMarkdown(self, savePath, extendedMd): + def iterBuildMarkdown(self, savePath, extendedMd): """Build a Markdown file. """ makeMd = ToMarkdown(self._project) diff --git a/tests/test_mbuild/test_mbuild_docbuild.py b/tests/test_mbuild/test_mbuild_docbuild.py index dbb1c5da..a8aae938 100644 --- a/tests/test_mbuild/test_mbuild_docbuild.py +++ b/tests/test_mbuild/test_mbuild_docbuild.py @@ -76,7 +76,7 @@ def testMBuildDocBuild_OpenDocument(monkeypatch, mockGUI, prjLipsum, fncPath, ts count = 0 error = [] - for _, success in docBuild.buildOpenDocument(docFile, True): + for _, success in docBuild.iterBuildOpenDocument(docFile, True): count += 1 if success else 0 if docBuild.error: error.append(docBuild.error) @@ -94,7 +94,7 @@ def testMBuildDocBuild_OpenDocument(monkeypatch, mockGUI, prjLipsum, fncPath, ts count = 0 error = [] - for _, success in docBuild.buildOpenDocument(docFile, False): + for _, success in docBuild.iterBuildOpenDocument(docFile, False): count += 1 if success else 0 if docBuild.error: error.append(docBuild.error) @@ -111,7 +111,7 @@ def testMBuildDocBuild_OpenDocument(monkeypatch, mockGUI, prjLipsum, fncPath, ts mp.setattr("builtins.open", causeOSError) docFile = fncPath / "Lorem Ipsum Err.fodt" - for _ in docBuild.buildOpenDocument(docFile, True): + for _ in docBuild.iterBuildOpenDocument(docFile, True): pass assert docBuild.error == "OSError: Mock OSError" @@ -129,7 +129,7 @@ def testMBuildDocBuild_OpenDocument(monkeypatch, mockGUI, prjLipsum, fncPath, ts count = 0 error = [] docFile = fncPath / "Lorem Ipsum Err.fodt" - for _, success in docBuild.buildOpenDocument(docFile, True): + for _, success in docBuild.iterBuildOpenDocument(docFile, True): count += 1 if success else 0 if docBuild.error: error.append(docBuild.error) @@ -184,7 +184,7 @@ def testMBuildDocBuild_HTML(monkeypatch, mockGUI, prjLipsum, fncPath, tstPaths): count = 0 error = [] - for _, success in docBuild.buildHTML(docFile): + for _, success in docBuild.iterBuildHTML(docFile): count += 1 if success else 0 if docBuild.error: error.append(docBuild.error) @@ -202,7 +202,7 @@ def testMBuildDocBuild_HTML(monkeypatch, mockGUI, prjLipsum, fncPath, tstPaths): mp.setattr("builtins.open", causeOSError) docFile = fncPath / "Lorem Ipsum Err.htm" - for _ in docBuild.buildHTML(docFile): + for _ in docBuild.iterBuildHTML(docFile): pass assert docBuild.error == "OSError: Mock OSError" @@ -235,7 +235,7 @@ def testMBuildDocBuild_Markdown(monkeypatch, mockGUI, prjLipsum, fncPath, tstPat count = 0 error = [] - for _, success in docBuild.buildMarkdown(docFile, False): + for _, success in docBuild.iterBuildMarkdown(docFile, False): count += 1 if success else 0 if docBuild.error: error.append(docBuild.error) @@ -255,7 +255,7 @@ def testMBuildDocBuild_Markdown(monkeypatch, mockGUI, prjLipsum, fncPath, tstPat count = 0 error = [] - for _, success in docBuild.buildMarkdown(docFile, True): + for _, success in docBuild.iterBuildMarkdown(docFile, True): count += 1 if success else 0 if docBuild.error: error.append(docBuild.error) @@ -273,7 +273,7 @@ def testMBuildDocBuild_Markdown(monkeypatch, mockGUI, prjLipsum, fncPath, tstPat mp.setattr("builtins.open", causeOSError) docFile = fncPath / "Lorem Ipsum Err.md" - for _ in docBuild.buildMarkdown(docFile, False): + for _ in docBuild.iterBuildMarkdown(docFile, False): pass assert docBuild.error == "OSError: Mock OSError" From 3d4dbd0bb0301c8e84e2fb9750f138e534c6b33b Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 21 Jan 2023 22:49:45 +0100 Subject: [PATCH 07/28] Mention Qt SVG dependency for Arch Linux in the docs (#1319) Signed-off-by: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> --- docs/source/int_source.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/source/int_source.rst b/docs/source/int_source.rst index 52c246be..272f18c3 100644 --- a/docs/source/int_source.rst +++ b/docs/source/int_source.rst @@ -48,6 +48,13 @@ source, dependencies can still be installed from PyPi with: pip install -r requirements.txt +.. note:: + + On Linux distros, the Qt library is usually split up into multiple packages. In some cases, + secondary dependencies may not be installed automatically. For novelWriter, the library files + for renderring the SVG icons may be left out and needs to be installed manually. This is the + case on for instance Arch Linux. + .. _a_source_install: From f04f4a3e04cae1324138662df840fef3a13028bf Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 25 Jan 2023 15:05:59 +0100 Subject: [PATCH 08/28] Update some comments and docstrings in the index class --- novelwriter/core/index.py | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/novelwriter/core/index.py b/novelwriter/core/index.py index 9a83f9c4..deaea5c3 100644 --- a/novelwriter/core/index.py +++ b/novelwriter/core/index.py @@ -49,15 +49,24 @@ class NWIndex: contains the data that isn't stored in the project items themselves. The content of the index is updated every time a file item is saved. - The primary index data is contained in the ItemIndex class, which - contains an IndexItem representing each NWItem. Each IndexItem holds - an IndexHeading object for each heading of the item's text. + Some information needed by the NWItem object of a project item can + only be known after a text file has been scanned by the indexer, so + this data is set directly by the indexer class in the NWItem object. - A reverse index of all tags is contained in the TagsIndex class. - This is duplicate information used for quicker lookups from the tags - and back to items where they are defined. + The primary index data is contained in a single instance of the + ItemIndex class. This object contains an IndexItem representing each + NWItem of the project. Each IndexItem holds an IndexHeading object + for each heading of the item's text. - The index data is cached in a JSON file between writing sessions. + A reverse index of all tags is contained in a single instance of the + TagsIndex class. This is duplicate information used for quicker + lookups from the tags and back to items where they are defined. + + The index data is cached in a JSON file between writing sessions in + order to save startup time. The cached index is validated on input, + and a broken flag set if it is not valid. If it is invalid, the + loaded data is cleared and it is up to the calling code to initiate + a rebuild of the index data. """ def __init__(self, project): @@ -283,10 +292,10 @@ class NWIndex: def _scanActive(self, tHandle, theItem, theText, itemTags): """Scan an active document for meta data. """ - nTitle = 0 # Line Number of the previous title - cTitle = TT_NONE # Tag of the current title - pTitle = TT_NONE # Tag of the previous title - firstHeader = True # First header has been seen + nTitle = 0 # Line Number of the previous title + cTitle = TT_NONE # Tag of the current title + pTitle = TT_NONE # Tag of the previous title + canSetHeader = True # First header has not yet been set theLines = theText.splitlines() for nLine, aLine in enumerate(theLines, start=1): @@ -299,9 +308,9 @@ class NWIndex: if hDepth == "H0": continue - if firstHeader: + if canSetHeader: theItem.setMainHeading(hDepth) - firstHeader = False + canSetHeader = False cTitle = self._itemIndex.addItemHeading(tHandle, nLine, hDepth, hText) if cTitle != TT_NONE: From 8273fcca1e784e6092bf38b8c873d946063c21e5 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Mon, 30 Jan 2023 12:10:04 +0100 Subject: [PATCH 09/28] Update outdated info in main readme --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d0e13b6f..b143dded 100644 --- a/README.md +++ b/README.md @@ -167,14 +167,13 @@ pip install -r requirements.txt On Linux, the dependencies are generally available in the standard package repository. -For more details on running or installing from source, see -[Other Setup Methods](https://novelwriter.readthedocs.io/en/latest/setup_other.html). +For more details on running or installing from source, see the +[documentation](https://novelwriter.readthedocs.io). ## Debugging -If you need to debug novelWriter, you must run it from the command line. It takes a few parameters, -which can be listed with the switch `--help`. The `--info`, `--debug` or `--verbose` flags are -particularly useful for increasing logging output for debugging. +If you need to debug novelWriter, you can run it from the command line and increase terminal output +by adding the `--info` or `--debug` flags. By default, only warnings and errors are printed. ## Licence From 437fe010b0c3a259c4bb4b65823935e1d34b683c Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sun, 5 Feb 2023 00:15:09 +0100 Subject: [PATCH 10/28] Add a basic build file to main --- .github/workflows/build.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..6182d21a --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,35 @@ +name: Build + +on: workflow_dispatch + +jobs: + buildAssets: + runs-on: ubuntu-latest + steps: + - name: Python Setup + uses: actions/setup-python@v4 + with: + python-version: 3 + architecture: x64 + + - name: Install Packages (apt) + run: | + sudo apt update + sudo apt install qttools5-dev-tools python3-sphinx latexmk texlive texlive-latex-extra + + - name: Checkout Source + uses: actions/checkout@v3 + + - name: Run Build Commands + run: python setup.py qtlrelease sample manual + + - name: Upload Artifacts + uses: actions/upload-artifact@v3 + with: + name: nw-assets-${{ github.sha }} + path: | + novelwriter/assets/sample.zip + novelwriter/assets/manual.pdf + novelwriter/assets/i18n/*.qm + if-no-files-found: error + retention-days: 1 From 72574dd8a6f2d6183b613313cdee2c47d59ca97a Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Thu, 9 Feb 2023 17:21:13 +0100 Subject: [PATCH 11/28] Make some modifications to docs config --- docs/source/conf.py | 11 +++++------ docs/source/index.rst | 5 +++++ docs/source/requirements.txt | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 19ed3014..31494e79 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -1,9 +1,6 @@ # # Configuration file for the Sphinx documentation builder. -# -# This file does only contain a selection of the most common options. For a -# full list see the documentation: -# http://www.sphinx-doc.org/en/master/config +# Documentation: http://www.sphinx-doc.org/en/master/config # # -- Imports ----------------------------------------------------------------- @@ -38,14 +35,13 @@ os.environ["TZ"] = "Europe/Oslo" time.tzset() needs_sphinx = "4.0" +extensions = [] templates_path = ["_templates"] source_suffix = ".rst" master_doc = "index" today_fmt = "%A, %d %B %Y at %H:%M" language = "en" exclude_patterns = [] -pygments_style = "sphinx" -pygments_dark_style = "monokai" # -- Options for HTML Output ------------------------------------------------- @@ -54,8 +50,11 @@ html_static_path = ["_static"] html_theme_options = { "light_logo": "novelwriter-light.png", "dark_logo": "novelwriter-dark.png", + "navigation_with_keys": True, } html_title = f"
Documentation Version {release}
" +pygments_style = "tango" +pygments_dark_style = "native" # -- Options for HTMLHelp Output --------------------------------------------- diff --git a/docs/source/index.rst b/docs/source/index.rst index 55df2c4d..9c052a33 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -47,6 +47,11 @@ the pip tool. See :ref:`a_started` for more details. * PyPi Project: https://pypi.org/project/novelWriter * Social Media: https://fosstodon.org/@novelwriter +.. toctree:: + :hidden: + + Main Page + .. toctree:: :maxdepth: 1 :caption: Introduction diff --git a/docs/source/requirements.txt b/docs/source/requirements.txt index 777d09c0..1896078f 100644 --- a/docs/source/requirements.txt +++ b/docs/source/requirements.txt @@ -1,4 +1,4 @@ furo sphinx>=4.0 pygments>=2.7 -docutils==0.17.1 +docutils>=0.17.1 From 723b44b6dbe7c6c6e3a104a447422408bf6705a6 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Thu, 9 Feb 2023 17:22:02 +0100 Subject: [PATCH 12/28] Fix some issues with the fila format spec document --- docs/FileFormatSpec-1.5.fodt | 295 ++++++++++++----------- docs/source/_static/fileformatspec15.pdf | Bin 305141 -> 307438 bytes 2 files changed, 157 insertions(+), 138 deletions(-) diff --git a/docs/FileFormatSpec-1.5.fodt b/docs/FileFormatSpec-1.5.fodt index 37169408..67ceb247 100644 --- a/docs/FileFormatSpec-1.5.fodt +++ b/docs/FileFormatSpec-1.5.fodt @@ -1,24 +1,24 @@ - Veronica Olsen2022-11-05T18:25:44.8874731592022-11-27T16:59:09.712224049Veronica OlsenPT3H37M58S40LibreOffice/7.0.4.2$Linux_X86_64 LibreOffice_project/00$Build-2 + Veronica Olsen2022-11-05T18:25:44.8874731592023-02-09T13:03:44.196703858Veronica OlsenPT3H48M55S42LibreOffice/7.0.4.2$Linux_X86_64 LibreOffice_project/00$Build-2 - 0 + 9825 0 - 26555 - 20394 + 35909 + 19657 true false view2 - 10569 - 2925 + 23216 + 176844 0 - 0 - 26554 - 20392 + 9825 + 35907 + 29480 0 1 false @@ -85,7 +85,7 @@ true true - 421923 + 695346 true false @@ -149,7 +149,7 @@ - + @@ -1203,6 +1203,12 @@ + + + + + + @@ -1228,50 +1234,62 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + @@ -1293,12 +1311,12 @@ novelWriter - Project File Format 1.5 Specification + Project File Format 1.5 Specification This document covers the file format specification for the 1.5 file format for novelWriter project files. See the documentation1 See: https://novelwriter.readthedocs.io/ for a full description of the app’s functionality. The target audience of this document is developers who intend to write a tool or script that generates valid novelWriter project files from data from other applications, or for templating purposes. - Note that flags are generally written out as yes/no values, but also true/false and on/off are understood by the application. The None value that occasionally occurs is the text representation of the Python None value, and must be used in those cases. + Note that flags are generally written out as yes/no values, but also true/false and on/off are understood by the application. The None value that occasionally occurs in actual project files is the text representation of the Python None value, and indicates that there is no value set. XML Root Tag: novelWriterXML The root tag of a novelWriter project file must be named “novelWriterXML”. This value is case sensitive. The fileVersion attribute must also be set to the appropriate format version in order to be parsed correctly. @@ -1318,7 +1336,7 @@ Description - + appVersion @@ -1329,7 +1347,7 @@ A string representation of the novelWriter version used to write the file. The value is not required, but is used to report to the user when the file format is converted. - + hexVersion @@ -1340,7 +1358,7 @@ A hex representation of the novelWriter version used to write the file. The value is used to check if the project is opened by a lower version than was used to write it, which issues a warning. Defaults to 0x0. - + fileVersion @@ -1348,10 +1366,10 @@ Yes - The file format version used when writing the project file. This determines how the file is parsed, so it is important that it is set correctly. + The file format version used when writing the project file. This determines how the file is parsed, so it is important that it is set correctly. Valid values are “1.0”, “1.1”, “1.2”, “1.3”, “1.4”, and “1.5”. - + timeStamp @@ -1364,12 +1382,12 @@ Example - <novelWriterXML appVersion="2.0-rc1" hexVersion="0x020000c1" - fileVersion="1.5" timeStamp="2022-11-05 17:46:51"> + <novelWriterXML appVersion="2.0-rc1" hexVersion="0x020000c1" + fileVersion="1.5" timeStamp="2022-11-05 17:46:51"> Project Node Tag: project - The project section is a level one node under the root. It stores the primary settings for the project. The only required values are the id attribute and the name value. All other entries are set to default values during parsing and can be ommitted from the XML. + The project section is a level one node under the root. It stores the primary settings for the project. The only required values are the id attribute and the name value. All other entries are set to default values during parsing if ommitted from the XML. Attributes @@ -1386,7 +1404,7 @@ Description - + id @@ -1394,10 +1412,10 @@ Yes - A UUID that is unique for the project and does not change during the lifetime of the project. It is used by novelWriter for to keep track of temporary files and associate cross-project settings with different projects without relying on the project name. + A UUID that is unique for the project and does not change during the lifetime of the project. It is used by novelWriter to keep track of temporary files and to associate cross-project settings with specific projects without relying on the project name. - + saveCount @@ -1408,7 +1426,7 @@ A number representing the number of times the project file has been written as a result of user interaction with the application. - + autoCount @@ -1419,7 +1437,7 @@ A number representing the number of times the project file has been written as a result of internal timed automatic operations of the application. - + editTime @@ -1447,7 +1465,7 @@ Description - + name @@ -1458,7 +1476,7 @@ The name the user has given to the project. - + title @@ -1469,7 +1487,7 @@ The title the user has given to the project, which may differ from the project name. The value is used in some places in the user interface, and can be added to manuscript builds. - + author @@ -1482,16 +1500,16 @@ Example - <project id="e2be99af-f9bf-4403-857a-c3d1ac25abea" - saveCount="5" autoCount="10" editTime="1000"> - <name>Sample Project</name> - <title>Sample Project</title> - <author>Jane Smith</author> + <project id="e2be99af-f9bf-4403-857a-c3d1ac25abea" + saveCount="5" autoCount="10" editTime="1000"> + <name>Sample Project</name> + <title>Sample Project</title> + <author>Jane Smith</author> </project> - Settings Node + Settings Node Tag: settings - The settings section is a level one node under the root. It stores the various runtime values for the project, and the settings available from the Project Settings panel. None of these settings are required, and if missing, will be set to default values. The entire settings section can thus be ommitted. + The settings section is a level one node under the root. It stores the various runtime values for the project, and the settings available from the Project Settings panel. None of these settings are required, and if missing, will be set to default values. The entire settings section can thus be ommitted. Attributes None Values @@ -1510,7 +1528,7 @@ Description - + doBackup @@ -1521,7 +1539,7 @@ User-controlled setting for whether or not to run backup when the project is closed. - + language @@ -1529,10 +1547,10 @@ No - The language used when building the manuscript. The settings is controlled from the Build Novel Project tool. + The language used when building the manuscript. The setting is controlled from the Build Novel Project tool. - + spellChecking @@ -1545,7 +1563,7 @@ Attribute auto: A flag determining whether the spell checking is automatic or not. - + lastHandle @@ -1556,7 +1574,7 @@ An auto-generated list of the last documents open in the editor and viewer, and which novel root folder was last viewed in the Novel Tree and Outline View. These are saved as key/value pairs. See separate section for how they are stored as XML. - + autoReplace @@ -1564,10 +1582,10 @@ No - The entries of the auto-replace feature available from the Project Settings. These are saved as key/value pairs. See separate section for how they are stored as XML. + The entries of the auto-replace feature available from Project Settings. These are saved as key/value pairs. See separate section for how they are stored as XML. - + titleFormat @@ -1578,7 +1596,7 @@ The formatting specifications set by the user in the Build Novel Project tool for formatting headers in the manuscript. These are saved as key/value pairs. See separate section for how they are stored as XML. - + status @@ -1589,7 +1607,7 @@ The status labels as defined by the user in Project Settings. These are saved as special key/value pars. See separate section for how they are stored as XML. - + importance @@ -1603,9 +1621,9 @@ Example <settings> - <doBackup>yes</doBackup> - <language>en_GB</language> - <spellChecking auto="yes">en_GB</spellChecking> + <doBackup>yes</doBackup> + <language>en_GB</language> + <spellChecking auto="yes">en_GB</spellChecking> <lastHandle /> <autoReplace /> <titleFormat /> @@ -1613,7 +1631,7 @@ <importance /> </settings> - Key/Value Nodes + Key/Value Nodes The key/value nodes are used for lastHandle, autoReplace and titleFormat settings. The lookup key is stored as an attribute, and the value is the text of the node. Attributes @@ -1631,7 +1649,7 @@ Description - + key @@ -1645,13 +1663,13 @@ Example <lastHandle> - <entry key="editor">636b6aa9b697b</entry> - <entry key="viewer">636b6aa9b697b</entry> - <entry key="novelTree">7031beac91f75</entry> - <entry key="outline">7031beac91f75</entry> + <entry key="editor">636b6aa9b697b</entry> + <entry key="viewer">636b6aa9b697b</entry> + <entry key="novelTree">7031beac91f75</entry> + <entry key="outline">7031beac91f75</entry> </lastHandle> Status/Importance Key/Value Nodes - The status and importance settings anre stored as key/value nodes with additional data attributes. + The status and importance settings are stored as key/value nodes with additional data attributes. The label of the status or importance setting is saved as the node text value. Attributes @@ -1668,7 +1686,7 @@ Description - + key @@ -1676,10 +1694,10 @@ Yes - The lookup key. For status labels, it must consist of an “s” followed by six hexadecimal numbers. These must be unique for each entry. For importance labels it must consist of an “i” followed by six hexadecimal numbers. + The lookup key. For status labels, it must consist of an “s” followed by six hexadecimal numbers. For importance labels it must consist of an “i” followed by six hexadecimal numbers. Each key string must be unique. Internally, they are random numbers, but also sequential values are valid. - + count @@ -1690,7 +1708,7 @@ A record of the number of times each label is used in the project content. - + red @@ -1701,7 +1719,7 @@ A number between 0 and 255 representing the red component of the label colour. - + green @@ -1712,7 +1730,7 @@ A number between 0 and 255 representing the green component of the label colour. - + blue @@ -1726,25 +1744,25 @@ Example <status> - <entry key="sf12341" count="4" - red="100" green="100" blue="100">New</entry> - <entry key="sd51c5b" count="0" - red="193" green="129" blue="0">Draft</entry> - <entry key="s78ea90" count="1" - red="58" green="180" blue="58">Finished</entry> + <entry key="sf12341" count="4" + red="100" green="100" blue="100">New</entry> + <entry key="sd51c5b" count="0" + red="193" green="129" blue="0">Draft</entry> + <entry key="s78ea90" count="1" + red="58" green="180" blue="58">Finished</entry> </status> <importance> - <entry key="ia857f0" count="5" - red="100" green="100" blue="100">None</entry> - <entry key="icfb3a5" count="2" - red="0" green="122" blue="188">Minor</entry> - <entry key="i2d7a54" count="2" - red="21" green="0" blue="180">Major</entry> + <entry key="ia857f0" count="5" + red="100" green="100" blue="100">None</entry> + <entry key="icfb3a5" count="2" + red="0" green="122" blue="188">Minor</entry> + <entry key="i2d7a54" count="2" + red="21" green="0" blue="180">Major</entry> </importance> Content Node Tag: content - The content section is a level one node under the root. It stores all the project items of the project. The items are stored in the order in which they appear in the project tree, so altering the order will affect the structure. The attribute with the order number is not used when processing the data. It is mainly written to the XML for debugging purposes. + The content section is a level one node under the root. It stores all the project items of the project. The items are stored in the order in which they appear in the project tree, so altering the order will affect the project structure. The attribute with the order number is not used when processing the data. It is written to the XML for debugging purposes. Attributes @@ -1761,7 +1779,7 @@ Description - + items @@ -1772,7 +1790,7 @@ The number of project items in the content section. - + novelWords @@ -1780,10 +1798,10 @@ No - The number of words in total for all document nodes layout DOCUMENT. The value defaults to 0, but this number forms the basis of computing writing statistics during a session, so the number should be properly set in order to ensure correct statistics. + The number of words in total for all document nodes with layout DOCUMENT. The value defaults to 0, but this number forms the basis of computing writing statistics during a session, so the number should be properly set to ensure correct statistics. - + notesWords @@ -1791,7 +1809,7 @@ No - The number of words in total for all document nodes layout NOTE. The value defaults to 0, but this number forms the basis of computing writing statistics during a session, so the number should be properly set in order to ensure correct statistics. + The number of words in total for all document nodes with layout NOTE. The value defaults to 0, but this number forms the basis of computing writing statistics during a session, so the number should be properly set to ensure correct statistics. @@ -1811,7 +1829,7 @@ Description - + item @@ -1824,18 +1842,20 @@ Example - <content items="27" novelWords="954" notesWords="409"> - <item handle="7031beac91f75" parent="None" root="7031beac91f75" - order="0" type="ROOT" class="NOVEL"> - <meta expanded="yes"/> - <name status="sc24b8f" import="ia857f0">Novel</name> + <content items="27" novelWords="954" notesWords="409"> + <item handle="7031beac91f75" parent="None" root="7031beac91f75" + order="0" type="ROOT" class="NOVEL"> + <meta expanded="yes"/> + <name status="sc24b8f" import="ia857f0">Novel</name> </item> ... </content> - Item Nodes - The item nodes make up the actual project content of the project. Each node represents either a root folder, a regular folder, or a document. Each node has a type, class and layout setting that determine its category. Each item is given a handle that is a random hexadecimal string of length 13. For the items that are document files, this handle corresponds to its filename. It is therefore important that these match. Each document node is expected to correspond to a file in the contents folder of the project named “content/7031beac91f75.nwd” for the item handle “7031beac91f75”. - Each item node has a meta data node and a name node. The meta data node contains only collected information, and is thus not strictly required. However, an accurate word count and the correct icon in the project tree depend on these values. These values are set by the indexer class, so rebuilding the index should restore the data. - The name node contains the primary user defined settings for an item, and is required. + Item Nodes + The item nodes make up the actual project content of the project. Each node represents either a root folder, a regular folder, or a document. Each node has a type, class and layout setting that determine its category. Each item is given a handle that is a random hexadecimal string of length 13. + For the items that are document files, the handle corresponds to its expected filename. It is therefore important that they match in generated projects. Each document node is expected to correspond to a file in the contents folder of the project named “content/7031beac91f75.nwd” for the item handle “7031beac91f75”. If there is no such file, the document item is assumed to contain no text, and a file is created when the user tries to save text to it. + Each item node has a meta data node and a name node. The meta data node contains only collected information, and is thus not strictly required. However, an accurate word count and setting the correct icon in the project tree depend on these values. These values are set by the indexer class, so rebuilding the index should restore the data. + The name node contains the primary user defined settings for an item, and is required for the entry to be valid. + Attributes @@ -1852,7 +1872,7 @@ Description - + handle @@ -1860,10 +1880,10 @@ Yes - The 13 value hexadecimal string that represents the item in the project. This is the primary identifier of a project item, and is required. + The 13 value hexadecimal string that represents the item in the project. This is the primary identifier of a project item, and is required. It must be unique withing a project. Internally, it is generated as a random value, but it can also be sequential. - + parent @@ -1871,10 +1891,10 @@ Yes - The handle of the parent item in the tree. This value should only be None for root folders. All other items must have a parent handle set. If the parent handle is None for an item that isn’t a root folder, the item will be treated as orphaned during project loading. + The handle of the parent item in the tree. This value should only be None for root folders. All other items must have a parent handle set. If the parent handle is None for an item that isn’t a root folder, the item will be treated as orphaned during project loading. - + root @@ -1882,10 +1902,10 @@ No - The handle of the top of its hierarchy of parent items. That is, the root folder which it ultimately sits under. If the attribute is not set, it will be computed during loading. It is primarily saved to the XML file for efficiency reasons. + The handle of the top of its hierarchy of parent items. That is, the root folder which it ultimately sits under. If the attribute is not set, it will be computed during loading. It is saved to the XML file for efficiency reasons. - + order @@ -1896,7 +1916,7 @@ The numerical order of the item under its parent item. This value is not used during the loading process as the physical item order in the content node is used instead. It is primarily saved to the XML for debugging purposes. - + type @@ -1907,7 +1927,7 @@ The item type of the item node. Allowed values are ROOT, FOLDER and FILE. - + class @@ -1915,10 +1935,10 @@ Yes - The item class of the item node. There are a number of item classes available in the app, all corresponding to a specific type of root folder. Each item in a root folder should have the same class set as the root folder itself. The attribute is not strictly required for items that aren’t root folders as it will be automatically set to match during loading. + The item class of the item node. There are a number of item classes available in the app, all corresponding to a specific type of root folder. Each item in a root folder should have the same class set as the root folder itself. The attribute is not strictly required for items that aren’t root folders as it will be automatically set to match during loading. Allowed values are NOVEL, PLOT, CHARACTER, WORLD, TIMELINE, OBJECT, ENTITY, CUSTOM, ARCHIVE and TRASH. - + layout @@ -1946,7 +1966,7 @@ Description - + meta @@ -1957,7 +1977,7 @@ A node of meta data attributes for the item. - + name @@ -1969,8 +1989,8 @@ - Meta Nodes - The meta data collected for the current item. This data is collected primarily by the indexer class. It can be restored by rebuilding the index, so the data is not essential. + Meta Nodes + The meta data collected for the current item. This data either represents the item’s last state in the app, or consists of data collected by the indexer. It can be restored by rebuilding the index, so the data is not essential. Attributes @@ -1987,7 +2007,7 @@ Description - + expanded @@ -1995,10 +2015,10 @@ No - Whether the tree node in the project tree was expanded or collapsed during the last session. Applies to all item types. + Whether the tree node in the project tree was expanded or collapsed during the last session. Applies to all item types, but is ignored for items without child items. - + heading @@ -2009,7 +2029,7 @@ The heading level of the first heading of the text of the item. Only applies to FILE item types. Allowed values are H0, H1, H2, H3, and H4. Other values are reset to H0. - + charCount @@ -2020,7 +2040,7 @@ The number of characters in the text of the item. Only applies to FILE item types. - + wordCount @@ -2031,7 +2051,7 @@ The number of words in the text of the item. Only applies to FILE item types. - + paraCount @@ -2042,7 +2062,7 @@ The number of paragraphs in the text of the item. Only applies to FILE item types. - + cursorPos @@ -2050,12 +2070,12 @@ No - The last cursor position in the text of the item from the last session. Only applies to FILE item types. The value is used to restore the cursor position when the document is opened in the editor. + The last cursor position in the text of the item from the last editing session. Only applies to FILE item types. The value is used to restore the cursor position when the document is opened in the editor. - Name Nodes - The name node contains information about an item that is set by the user. Including its label, which is the text value of the node. This is the label that is displayed in the project tree. + Name Nodes + The name node contains information about an item that is set by the user. Including its label, which is the text value of the node. This is the label that is displayed in the project tree. Attributes @@ -2072,7 +2092,7 @@ Description - + status @@ -2083,7 +2103,7 @@ The ID of the status label that has been set for this item. Defaults to the first status item defined in the status section of the settings node. - + import @@ -2094,8 +2114,7 @@ The ID of the importance label that has been set for this item. Defaults to the first importance item defined in the importance section of the settings node. - - + active @@ -2108,11 +2127,11 @@ Example - <item handle="53b69b83cdafc" parent="7031beac91f75" root="7031beac91f75" - order="0" type="FILE" class="NOVEL" layout="DOCUMENT"> - <meta expanded="no" heading="H1" charCount="93" wordCount="19" - paraCount="2" cursorPos="119"/> - <name status="sc24b8f" import="ia857f0" active="yes">Title Page</name> + <item handle="53b69b83cdafc" parent="7031beac91f75" root="7031beac91f75" + order="0" type="FILE" class="NOVEL" layout="DOCUMENT"> + <meta expanded="no" heading="H1" charCount="93" wordCount="19" + paraCount="2" cursorPos="119"/> + <name status="sc24b8f" import="ia857f0" active="yes">Title Page</name> </item> diff --git a/docs/source/_static/fileformatspec15.pdf b/docs/source/_static/fileformatspec15.pdf index f4ca345d9dceddefed5944c923122ad17eb45ed4..b93a7bef3cf16928154c499a78906303551155a0 100644 GIT binary patch literal 307438 zcma&MW0Yv!uAp7EZQHhO+qP}ncGWK1wr$rg+r}>A+wVE2@4esX9;5r$T*=DJOxF7I zB$=cNB4V_RbZk(hL&ZbgL#;!T39T-_0f`8ezQd=#;Md$``$H*HQ=}F!r4#d>G^v;Za&g) z9#(u_ON?_l_sh~NLvucT8bTLAVG2d#;jtQW5PYuH{CI^biq{sX|K5BQ zj4V)p8~vc$Nq`bRw|hmqy!^d)cNn;AxK0B-`4xiA!Jy~X-5UoBCAj-}+67;>lwEhy zr^C%An{Ita{k?}kFAqLjz^wE##NZ~+?_z&5UoiG-$Jg7ap95Kji4}K$_z7ev5|gdH z%5hLXDf1j(ULVg+KD@5&AOHzm>ZzMK-wO@&0d5s2vo+}V`0Q1X`g3yst(lwai~SXx z4c85Z`8iflqvsTZGtjK_ zsvJLm%HV(E01MFo7pcLD^g<#}dVYsV5;FuW!A(egE(RilZwn2-%td5(ez+D)?tc3i zY$F2pd5?xHQ2)I7zQD3#$Ql6)wFnS)o_gX`z9cs>y25O)M+hi0PBLYnY861-GlGDG z^sf#??!<5kFkrDI#uN;!`u)+>77p(J^;rBl482&tF2FIs9&m87BDP|>cm;CFL0QAN z94PXDXF&j| zq8w|VadjvdJ`=R~?zfR%&?{)8odBn3yS*JQoF5-*(F;B`JQsX5nNn80AzSKdr8x#< z+hX|Cy8g!8Y3%%UYaOOpI;hwh3O@#pSx1Y5+DjAx}Sa}a!HOR->-r&4K%4ru44>LH()RpB3p z{;9^IyBL?5Pjq*9yw=3q|!g%-k|s#29(KDnu88(wTMDaQ3O*TtX7_-wd3j}6Sqmj zCJUsK2;o+UnSohQkC;`?5;@zrm7r_{mpGpqk87(m=RB}XUA*J8+|>07A>E1)d-{%g z8Tc9`d+$PR4iii&dHbJ_2lCnPxBKv)k_bX{1}OqwBH__d{ZwMW4!8S#_JrmD2-Lf& zaI=i$%M3vR{Nm$cOReF^T7dV(1r#j0Q)4#^Nm?oflqT;z?pQ)9CtO+;`Uys@PPG^4 ziI5(BsZOx=Vv#=Xxt!~bkAt**2um`p(~}N_G07E$Jd!Crywfj<`JsvW46Sw;H#^C3 zkY@F$c%+}8#o(G601VpTX~axV*^^6jbDW0TVOD!Il8Y^IMm=rgv2lp2VUnxydH_-c z5~8>88it;B=Li$dSV(HdlF>R|ll10IvIeuSkZWfWe9alZzIc4jOsP<@7OJSbg-Qgp zeM(6)iTov_@80o1Q8Nh(#MRQ!PIcWR6{P7xWe<4DSw66(&I^5!g}a6ZO)^ zG$E4%fKi*0)D-+BA4#mHG3Ye(m<*scsc#*OXi%Q?OWLN1-bn7_sDwym>FTDp+4ogj zNib=+gjZRcTJ+=%a#CeE@#R?bxVuM2gq4E%qWt1aVA0V(^(g(9qM{Xq$PhAg^YJ^L z?o$&y%uR<)oTdUxpd}`zLJ~Hkie=vkC z@2rWQRE0ww$%i@239ri&*tq*>Dh0BH>jF>(Ya@cuEi?1D+un=aak_0M_})yFwhkw; z%09LDl_kLOEt$yn{M*?m)NeR3{lQovU@1N^*AS2Z%e3yPq;(-#Cb|WW>##iKr0Y1B ziqrbWLFMkymwGlz)2@K{Hf0O0Sopu&g&H(VX=G43c(AP#1*F8$u_0ATHQSk7(W#Vs zi87;U9_hGmCk3SW4t(@SMGPVa5M+m<)d>L1ASaP|XiE6;0mqMy5ChUWfC0y=4~e60 zm@%MV`5LtN3Lo2E5*e4B807iTUlmEc2kI2VH%6z5 zyp$M$`UVJ;YV^bz97PutD&xEnXD7LFTPW&hW<|x5E3JN=ON6)b!Pt9Jlc>u9L9zM@ zD&yTk*HAj)*N`e-xBljD;zAjAo2^(DL+M*r`~Wbv6h&>_9NaUp1n?90>1ZpkF>e_V z&cvw@vUcqO`TTQ9Du{*&RGs*c2z8vQ8T}@e#q4RHsGI)yGO)v$>Kbr6hEH{`3eQ*0B1FuS#4LZXr2 zu#!9edElGyQGk#sg0x2_h?I029V#Tc&wW|#yj1E|N915bviyf9 z9|Dy>@e?qWNJ9vtCB+hvQ|Z~5h+JDF4o@D?Rj9N8qU~8-2s$`ZMC`i>&s_(AZd9js z&&Z3E!}nuZMK00~=`DVQkw$l*79weeb)XfZMa!3#fXh}ht$o!=D7fN&L1A;1NFlJX z*0s%Ao9IHiKDsLul(pAp&c>6c&6>M@y@&w4MseAlr(MxgQUPUvVXK4J5yTDcfZp~+ zE1}9enN8V6P<)!f!5aweUTo0H$m*=%u#v-|;D8Lz6=D%Du)F;*zHJn8u&~ycV-WBg z_4k+pPA`jUgS$biorx&m%PH+;A<8DZ44i79#i7>=r{go*!ajsoMTa8;`W$jsQ&r(c zkFc@;QQ#rwevERTA=e0gW*oe$BAe3bb}90Q47rJ}!IX>BuX7sx>g?G)4;ZZZ5Pb9g zFohQR@^~*3J||?qwr6?a)*Z}0DH`paO*U3-kJGd5FM*O#Hk|gqv0sc^yd!Ic;$8`M z@P$CvDle*-4{mXnAcy4L>%|+Yf}Z5^5ftzhhYY;P6(IC*V}YTtFQLF#wlV#&i*4CC zh-t<6ohCT5nlOK|Zm~;LRv`P;%|UMP`Fnj{Umw^aEpm5%SCg=fnX+#u=FC8JcG=5c z22VW`04Q$j;@sQfXyAQ$B3OYA^9pu>L6P;4%-)$f#@Hx|IFF=QA9+|wiX5bHF((x%ye_f4-` zLD2hR*ra~B+8-Ml=>s!riTP1XiB)#6@{c5bUzcvKs~CU!j+9%|yO&M=WQxI2qpyJx zZb5~boZ}h0oR`#AvP;R~e?$F)-Tyo=ad0sG^ZH*(MyCIr&l#EiUkLsBFQFf{Bldo%LyX%7E;MTRNCX)6 z(}QXnz-QYUzzf19n~+Tyc_qn!{qFm9AYE+INWvau0B>1j8;y2Jy_!ub`85CK^!ogH ze7Vct`}4SV^YHcOu1?OS5Z&qQsodMrm7U@Y9C$k&KKxhjIUoLw%c@h{nRs!Z-PhZ3 z9k{L6CZ-FqvAL+d3wSGfR=F#FU&TC-r8n!Gf-pV1xrVMm{s3NUsYh)J;eotks@c^k z)y(gaR075&{kCryBNDuY@g1a=wcyc$HP1cebg-0bLYNTD%R`p^yEb8Irjcftl=ET0 zWk}9x4g4}lYyrCs1)z~Y7!uVwslmTihQJhZQv#WCH~?3ok{-S}WHtaDmeHvHSQt=N z{&CEz2Sh0|&6gpE86TigtLMujM-kxve*8K;yx+X7>+5noaOvDK63Iu;+&>-(gwHK; zA3K=R@3bdB3yA6VetQikh9T#Gq9%zcbAO;f!5v(WU103l-J;NudrA(W{`wqCzlD2A zAA*nHn+Fs3lHdCscsCCur-mb#cL$+f0TCy_0!&~Ikd%sp>Knus?92^dtrCJ`8V@TW zz=)Vr-)z&i5zURUwHZ4w@;uo8)Y-^D82Q94JhhLo-GD}wrv+2!-*zCye>jn(7LgDG zLb%lN5zkTh6#^l>Tg|XfLo3D=1Frn}buvDyBZha5`c(6mDoh^GJRi)xlqQoMi{PvN z$o%51=x@aimDahIY16r0(L`572u!AQ$U8Sy&5$18?3GudLD?%tB00J@e?CqfM#_Io znm*qi-^{n#4C=?jx828s;W@L2Ng~!p7q3&!*-zG+1Z9pn^PL6A&tYHogq~uDiK?JQ zFD_;(7G$QYRB>Q|e5VQ&ahL+bk?$oNxYh67?)XeJ{DU<=m-vhAw?cAIasKXdXYKiR zb{U%Z`JiR<#JaouEK%AGitiqhNORh8DJ89r>>OORF~waTT4`)ztP7QS6N@)Zhl8JV zoaSEDL;4-BN6X^~!IiU%PZvwdBKS}WM*84e4sVQXA4}1ACcU+VrDf8=s3MkSAaJ0Y zAFE1f>Kp1iuu>esx%t_*VyXr@@u*3q@(`u3sqYMGVLC@hwWU z-8EAPBQRZSu~mj@=X5p9`fZiY7q{0!Gc@s-&2+V?>c;viz$k ztIVjQs6Ev`rsE(`+_7BP51rN7!Ng@XR?mZ5n7s8#HBD^19 z@3E?cwG7>wGHqwt=vksC%vTgp(j7E9IMC=)a}D#o(|?wP#5HdAgub;= zGOp{_ihHB%;Sm$oDO!a+w|iWpHY#vrt96X{UP_AEHbl!Cp&{s0PxZc7JX)f|d3!jIK&;a^{rH_$^!R zw{qHywXAi)PyEZwi4+oLAviK@ZuH^EdfEAAxzqAY2yMSXS@Pj*r~pK$zw;ZZhb zop0^Qq^!MQ`MI6xqqDC~Gg`=|hC1rWtU_@(Q?<5spjGDy?PRrG6l`rVO)@Zx&-ien z-o;Vsqfv$LP|_X)9YJZS@tDsa2?O?_s*^5{q?amSz~v~=kdE39oVrsTzs?BI39DQD z+#L>4NuPrxG$OtAEKi=1DQvu!4C7936fQ5-rGKXt41q^0IkwYK?fO+W%IN+WMF%%R zaBZzHzS%dE2D|D#GOLz4g158ND7f7^0e0?7i(O4Fu-j;f;MZ#!EF)$U@Y$x##=(QA zq2hUd1-orrJ@%PjLv_8Ki>+!aA*Q&xPDdZhbJd8~!({ioC|X&O)mmV2I*h9_Ir(_= zA?a?;t1-ZQG1Rd0(-NI~t&`4BFH_bW*O&{X(j$q*qH)^2Y~YMat$W~T_o%Xb#?r3s z?d=8bAn%$@;|<58G=my(%bID!tD*uhE88+{b#2xE2wA+U3W5Hqh7QXa%J{)}e8ai! z2wA_CS`iw*@AGAx$Tzf7;7n+(RfC=V_(1b>Jc8Bd+I8c4DOQ0=)zipv*Vu(#)4I$k z4NS;+8k8{0Fm*hWrkYZuZeJ*RN&6dw47779JhTQRP>FE>Jlgy@1xlo*P+Mhwk(~rn zzzlsozYmwJJx8;o1M}<@C@;81|4qaq>cTPIQoW6GIV7`oSzZ*glV=E%weG|!P1K!S zCwgVf8#F7=YAyC*UGn;>2>QPCYi`4uC-Z7!1tOQ5ed~`u*`Gs><(oFoF7L6G6Wy)4 z$syN|S>k3g{az|)FPHQ^U&z}iFNPa4@_I&j2hw!98==M_g6*DU0Yy-?{b2!km2&hi zz}$CW03jHllFjTTxag=gvpxaiKr%|31#&FI@M_0-*?dKR@2P_{TnFdCdeiCbBR62fI=V`LW+47bOf9plNSXCnw*opE!>U~ZN|mTg6; zIf6}H8<;i5_ia1pwL24pwb8XYpT9MCMj(*ad|A15aTj_ek==fgDYT&CvKX>AH!QU+ zu!WLwGRDq{h)BWzj)|yk&&pBa;L)ZxHA(J9iK8%8Y`blrs+cZ?fw^inEXckrlrmk5 z%A-P}*o%(=nVW6@s=>rD>WN2ia);fEW!l09&+lO(AM&+coRd(bAY&GW_UykRb6fRp?GRP9p|Bn9wGF+wlS; z{}D>^q6@w~x8H&L0u!By@5AtTUv?v2_`pEQPiY*sf=s*L5OYBTGCE&IQu8vHcFgaghxY7;z4`APW}1}6BF!~cj<@lzqMi+QFe z;ub(k_ad^{9U{-JBQ_b2!Y}x4$rQ2w2N?Y~WBvIUqLMa8Lv`Wur}TZFmyhuNU#9Io&b*)I2Ef>v8DPAZiW^JnL;(y!PBou*|Ue{6nWlLUC2` z3Q85L%M{a*`C-pPGR5)aLJ+SVu^e7c z0aFb*s{v9y4DxIC|%RRRfF|f|gGs%S-S!dL2A- zz-jV~1t-wf^0( zSAQXvh<^}XVdQu_P(CSdmk^yA|&~yc*FCAW+5eE8X<#f~c^sxO^ z=OOk1_}v}GPs2RHWD{nL-0L;0tXE;f%|VNs4-4cl)2t$jM}9;*c~tkLOvxY1O^tNL zD|JpUr8WI6H5k+;TL%>*5N%*sC|sxe7t5a%Pis)u&$oAbD? z@5L{a_EE_ z{8mVEDuoZa i__hwJt(Ch(&F^~)cUE%udI>}#J>z|Q{>P7#JIJ6**>ylYS0Eq?* z&;}EN!92;KAe5blgK7#EaXCnQQKIR5?jji8NmggC(|W*|2Oo8v?EfpeX*pm4k^=kA z&yQV!a=9W6_|%)4M@I~O?A0qff zw1x$Uer=CuV}+DbvO1bx5r<+E3^qG|+NqL?>=R4sHhX#6f(pDftgwK&h0il_+esO@ zXd;K2`(kH!ReA5|)B2g`OmG$jB5%B4`YK4L@ku>j?__H&)B^&(4dX>Hutun9?C-`{1HLW1+5s)3FkYP4qM+xy{mq8X!TO zGyT(!*?9yoT2(1T&VJF9V%QRt&jEkH2R-0qG(jGE}zR147 zdDSvOfp}$(ihFrb`~m1=aHJHKp(VP7^`Qgkky&1L0;Y6a^;NQ-Ae8!K_CRHGkNxja~*;vXW^Dg_LU zFEE*@BhzDdum+4*)Z7VWNuyfUseLHYkdRcN>8fpNGvUtA%Ea87q^d9+m)4yp#m2_T zj%2h~5_WnHcR?jDO%#0K9QNA2nwx0j#!227i<{fL_eY9mk)K}MKD7eo_Q_&6Y=_lW zW0jNrPvvY76gLrj8O@5_!*BGg*b=pE=y6mptqKezcm04V7)ZJwGiL`1PmxY>N*XG2 z7!@fm{N7)%(#7P}glAiw=ku$!YIIQGrၓgrg1>A0Z^se@3Y)Ad3uvkvEmCa}e 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%0D_YOS2)D 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 SUb*Q^&hpiF-#z~6>FR&ZM371V literal 305141 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�P+HZ>!)3`}D}Obv{=QfD>PSqc=tNy`eo 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 Date: Fri, 10 Feb 2023 19:25:50 +0100 Subject: [PATCH 13/28] Fix a typo in the index page note --- docs/source/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/index.rst b/docs/source/index.rst index 9c052a33..4bf31fd5 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -31,7 +31,7 @@ as well. novelWriter can also be run directly from the Python source, or install the pip tool. See :ref:`a_started` for more details. .. note:: - Version 1.5 introduced a few changes that will require you to make some minor modifications to + Version 1.3 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. From faa644b274524acc2ba64a7360f4b17531a21a79 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Fri, 10 Feb 2023 19:30:07 +0100 Subject: [PATCH 14/28] Also link filr format speck in tech docs --- docs/source/tech_storage.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/source/tech_storage.rst b/docs/source/tech_storage.rst index 6bb51cfc..e833c135 100644 --- a/docs/source/tech_storage.rst +++ b/docs/source/tech_storage.rst @@ -4,6 +4,9 @@ How Data is Stored ****************** +.. _File Format Spec 1.5: _static/fileformatspec15.pdf +.. _documentation: https://novelwriter.readthedocs.io + This section contains details of how novelWriter stores and handles the project data. @@ -39,6 +42,15 @@ The project XML file is indent-formatted, and is suitable for diff tools and ver most of the file will stay static, although a timesetamp is set in the meta section on line 2, and various meta data entries incremented, on each save. +.. only:: not html + + A full project file format specification is available in the online documentation_. + +.. only:: html + + A full description of the current file format is available in the `File Format Spec 1.5`_ + document, available as a PDF. + Project Documents ================= From d9057b8581d47a2d59ceaba81b89e61332a3ef98 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sun, 12 Feb 2023 17:30:26 +0100 Subject: [PATCH 15/28] Fix broken doc build test --- ...uildDocBuild_OpenDocument_Lorem_Ipsum.fodt | 20 ++++++++++++------- tests/test_mbuild/test_mbuild_docbuild.py | 4 ++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/tests/reference/mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt b/tests/reference/mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt index 06ec355e..ba183f64 100644 --- a/tests/reference/mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt +++ b/tests/reference/mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt @@ -1,8 +1,14 @@ - + - 2023-01-11T10:54:59 - novelWriter/2.0.3 + 2023-02-12T17:28:07 + novelWriter/2.0.5 + lipsum.com + 38 + P0DT0H31M40S + Lorem Ipsum + 2023-02-12T17:28:07 + lipsum.com @@ -99,7 +105,7 @@ - Lorem Ipsum + Lorem Ipsum By lipsum.com “Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…” “There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain…” @@ -180,19 +186,19 @@ Donec luctus lectus efficitur, blandit nisi vitae, dignissim tellus. Pellentesque euismod pharetra augue gravida hendrerit. Quisque nisi mi, mattis ac nisi non, maximus malesuada ante. Nulla lobortis, diam eu ornare ornare, tellus enim feugiat arcu, non vestibulum tortor nunc eu justo. Integer blandit felis justo, eu semper est scelerisque vel. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam ultricies, nisi vel elementum commodo, nisl dolor tincidunt magna, sed varius est nunc at lectus. Aliquam dolor tortor, sodales placerat ultricies quis, sodales quis sapien. Duis ullamcorper sollicitudin risus at mattis. Integer consequat et nunc at condimentum. Pellentesque cursus congue augue, non suscipit lectus sodales ut. Nam a mi bibendum, blandit nisl eu, accumsan nunc. Aliquam a ex mauris. Sed nec sem quis arcu dignissim tempus eget et turpis. Ut sed ex nec ipsum ultrices lobortis. Pellentesque rhoncus pharetra eros, non mollis nisi pretium non. Mauris accumsan quis odio quis euismod. Maecenas ultrices, augue et aliquam tincidunt, erat tellus ornare ligula, quis ultrices turpis nibh vel justo. Fusce gravida odio tellus. In a congue diam. Mauris consequat ex id leo lacinia dictum. Fusce id sem sodales, ultrices sapien ac, convallis orci. Donec gravida nunc sit amet nisi hendrerit, sed porta enim aliquam. In hac habitasse platea dictumst. Cras a orci felis. Curabitur non felis nec urna maximus auctor ut ut nisi. Curabitur at turpis eleifend, blandit eros at, molestie odio. Phasellus euismod neque augue. Integer egestas maximus leo eu facilisis. Nunc rhoncus dignissim lectus eu lacinia. Praesent lacinia urna porttitor aliquam condimentum. Nulla eu eros dictum, dictum nunc vitae, sagittis nibh. Integer ante neque, consequat nec sollicitudin id, consectetur vitae dolor. Nullam volutpat sem orci, quis viverra magna auctor a. Suspendisse potenti. Maecenas commodo sed neque pellentesque vehicula. Sed luctus nisl risus, elementum semper purus interdum vel. Ut pulvinar, massa sit amet venenatis placerat, nunc lacus hendrerit odio, non aliquet nunc risus eu lectus. Maecenas feugiat semper ligula, id lobortis sem porta eu. Integer posuere elit magna, at mollis eros bibendum et. Ut imperdiet purus vel nulla aliquam maximus. Morbi sodales purus tellus, a rhoncus sem rutrum sit amet. Quisque risus sem, laoreet nec convallis nec, rutrum vitae justo. - Notes: Characters + Notes: Characters Nobody Owens Tag: Bod Plot: Main Pellentesque nec erat ut nulla posuere commodo. Curabitur nisi augue, imperdiet et porta imperdiet, efficitur id leo. Cras finibus arcu at nibh commodo congue. Proin suscipit placerat condimentum. Aenean ante enim, cursus id lorem a, blandit venenatis nibh. Maecenas suscipit porta elit, sit amet porta felis porttitor eu. Sed a dui nibh. Phasellus sed faucibus dui. Pellentesque felis nulla, ultrices non efficitur quis, rutrum id mi. Mauris tempus auctor nisl, in bibendum enim pellentesque sit amet. Proin nunc lacus, imperdiet nec posuere ac, interdum non lectus. Suspendisse faucibus est auctor orci mollis luctus. Praesent quis sodales neque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec sodales rutrum mattis. In in sem ornare, consequat nulla ac, convallis arcu. Duis ac metus id felis commodo commodo sit amet eget diam. Curabitur rhoncus lacinia leo at sodales. Etiam finibus porta diam a viverra. Praesent nisi urna, volutpat sit amet odio at, vehicula vehicula leo. In non enim eget nisl luctus commodo. Pellentesque pellentesque at lectus at luctus. Quisque nec felis bibendum, lacinia libero ut, lacinia eros. Integer finibus ultricies nibh sit amet placerat. Nullam scelerisque velit et tortor congue vestibulum a at nisi. Vivamus sodales ut turpis a convallis. In dignissim nibh at luctus sodales. Etiam sit amet rhoncus massa. Phasellus ligula magna, sollicitudin non imperdiet sit amet, volutpat vel magna. Nunc vestibulum tempor lectus, sit amet porta nunc hendrerit in. Curabitur non odio sit amet massa tincidunt facilisis. Integer et luctus nunc, eget euismod leo. Praesent faucibus metus sed purus convallis scelerisque. Fusce viverra lorem et placerat malesuada. In at elit malesuada, ullamcorper risus vitae, sodales dolor. Donec quis elementum lectus. Quisque eu eros at dui imperdiet euismod ut id neque. - Notes: Plot + Notes: Plot Main Plot Tag: Main Suspendisse vulputate malesuada pellentesque. Aenean sollicitudin cursus mi, vitae ultricies felis ullamcorper eu. Duis luctus risus mi, in accumsan velit cursus ut. Vestibulum eleifend leo in magna eleifend fermentum. Proin nec ornare elit. Phasellus nec interdum risus. In a volutpat augue, quis egestas justo. Morbi porta mauris mattis bibendum imperdiet. Mauris ut erat eu lorem malesuada egestas vel vel urna. Maecenas ac semper quam. Maecenas aliquet metus non interdum mattis. Proin consectetur molestie ligula. Aliquam sollicitudin pulvinar urna a pellentesque. Suspendisse ultrices, est mattis scelerisque porta, nisi nisi laoreet nisl, non condimentum quam ante a velit. Proin scelerisque justo augue, nec laoreet ligula egestas at. Etiam enim quam, ultrices non accumsan hendrerit, elementum vel ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam efficitur odio libero, in vestibulum arcu aliquam at. Cras non vehicula augue. Integer lobortis, est vitae aliquam facilisis, metus ligula aliquet eros, at porttitor sem tortor eget massa. Aliquam varius scelerisque neque sed gravida. Aenean eleifend lorem id ante elementum sollicitudin. Proin commodo massa a quam volutpat, mollis fermentum turpis efficitur. - Notes: World + Notes: World Ancient Europe Tag: Europe Vivamus sodales risus ac accumsan posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nunc vel enim felis. Vestibulum dignissim massa nunc, a auctor magna eleifend et. Proin dignissim sodales erat vitae convallis. Aliquam id tellus dui. Curabitur sollicitudin scelerisque ex sit amet posuere. Nam rutrum felis id rhoncus feugiat. Duis sagittis quam quis purus efficitur, quis rutrum odio iaculis. Maecenas semper ante turpis, at vulputate mi consectetur non. Sed rutrum nibh turpis, quis rhoncus purus ornare quis. Vestibulum at rutrum mauris. Integer dolor nisi, tincidunt eget vehicula ac, ultricies at ligula. diff --git a/tests/test_mbuild/test_mbuild_docbuild.py b/tests/test_mbuild/test_mbuild_docbuild.py index a8aae938..ca1dea4b 100644 --- a/tests/test_mbuild/test_mbuild_docbuild.py +++ b/tests/test_mbuild/test_mbuild_docbuild.py @@ -24,7 +24,7 @@ import pytest from shutil import copyfile from mock import causeException, causeOSError -from tools import cmpFiles +from tools import ODT_IGNORE, cmpFiles from novelwriter.core.project import NWProject from novelwriter.mbuild.docbuild import NWBuildDocument @@ -85,7 +85,7 @@ def testMBuildDocBuild_OpenDocument(monkeypatch, mockGUI, prjLipsum, fncPath, ts assert error == [] copyfile(docFile, tstFile) - assert cmpFiles(tstFile, cmpFile, ignoreStart=" Date: Sun, 12 Feb 2023 17:30:40 +0100 Subject: [PATCH 16/28] Enable short retention time for build --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 57581b02..ba52ed3c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,11 +65,12 @@ jobs: with: name: novelWriter-${{ env.VERSION }}-macos.app.zip path: dist_macos/novelWriter-${{ env.VERSION }}.app.zip - # retention-days: 1 + retention-days: 1 - name: Upload DMG uses: actions/upload-artifact@v3 with: name: novelWriter-${{ env.VERSION }}-macos.dmg path: dist_macos/novelWriter-${{ env.VERSION }}.dmg - # retention-days: 1 + retention-days: 1 + From 8488a8528825566fe25566df7f48b94870de1cce Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sun, 12 Feb 2023 21:46:15 +0100 Subject: [PATCH 17/28] Update docs info on debian install --- .github/workflows/build.yml | 1 - docs/source/int_started.rst | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ba52ed3c..88b16ebc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -73,4 +73,3 @@ jobs: name: novelWriter-${{ env.VERSION }}-macos.dmg path: dist_macos/novelWriter-${{ env.VERSION }}.dmg retention-days: 1 - diff --git a/docs/source/int_started.rst b/docs/source/int_started.rst index 42002efc..3890d75f 100644 --- a/docs/source/int_started.rst +++ b/docs/source/int_started.rst @@ -83,7 +83,7 @@ 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 + echo "deb [signed-by=/usr/share/keyrings/novelwriter-ppa-keyring.gpg] http://ppa.launchpad.net/vkbo/novelwriter/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/novelwriter.list Then run the update and install commands as for Ubuntu: @@ -94,8 +94,8 @@ Then run the update and install commands as for Ubuntu: .. note:: - Please use the Ubuntu 20.04 (focal) packages for Debian. The newer Ubuntu packages use a - different compression algorithm that Debian doesn't currently support. + You may need to use the Ubuntu 20.04 (focal) packages for Debian 11 or earlier. The newer Ubuntu + packages use a different compression algorithm that may not be supported. AppImage Releases From 30d5be44ebf953e76fd6203c498eb6d15035d61b Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Mon, 13 Feb 2023 00:23:54 +0100 Subject: [PATCH 18/28] Bump version to 2.1-alpha0 --- novelwriter/__init__.py | 4 ++-- sample/nwProject.nwx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/novelwriter/__init__.py b/novelwriter/__init__.py index e330d5ab..5c94c480 100644 --- a/novelwriter/__init__.py +++ b/novelwriter/__init__.py @@ -59,8 +59,8 @@ __license__ = "GPLv3" __author__ = "Veronica Berglyd Olsen" __maintainer__ = "Veronica Berglyd Olsen" __email__ = "code@vkbo.net" -__version__ = "2.0.5" -__hexversion__ = "0x020005f0" +__version__ = "2.1-alpha0" +__hexversion__ = "0x020100a0" __date__ = "2023-02-12" __status__ = "Stable" __domain__ = "novelwriter.io" diff --git a/sample/nwProject.nwx b/sample/nwProject.nwx index feb7e7b0..2df0e5fa 100644 --- a/sample/nwProject.nwx +++ b/sample/nwProject.nwx @@ -1,6 +1,6 @@ - - + + Sample Project Sample Project Jane Smith From 5362205605e88af43624c1b79b355bddd3183349 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sun, 12 Feb 2023 20:38:34 -0700 Subject: [PATCH 19/28] Add Macos install instructions to the docs --- docs/source/int_started.rst | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/source/int_started.rst b/docs/source/int_started.rst index 42002efc..3510d78b 100644 --- a/docs/source/int_started.rst +++ b/docs/source/int_started.rst @@ -106,6 +106,25 @@ completely standalone images for the app that include the necessary environment They can of course be run on any Linux distro, if you prefer this to native packages. +.. _a_started_macos: + +Install on MacOS +================ + +You can install novelWriter with both its Python and library dependencies embedded using the +DMG application image file from the `main website`_, or from the Releases_ page on GitHub. +Installing it should be straightforward. + +Download the DMG file and open it. Then drag the novelWriter icon to the Applications folder on +the right. This will install it into your Applications. The first time you try to launch it, it will +say that the bundle cannot be verified, simply press the “open” button to add an exception. +If you are not presented with an "open" button in the dialog launch the application again by +right clicking on the application in Finder and selecting "Open" from the context menu. + +The context menu can also be accessed by option clicking if you have a one button mouse. +This is done by holding down the option key on your keyboard and clicking on the application in Finder. + + .. _a_started_minimal: Minimal Package Install From 902dcc6ba774e089be8eb6e04fd21b53cc66e5f8 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Mon, 13 Feb 2023 08:34:17 +0100 Subject: [PATCH 20/28] Update MacOS install instructions formatting --- docs/source/int_started.rst | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/source/int_started.rst b/docs/source/int_started.rst index 7274e53b..c8289e65 100644 --- a/docs/source/int_started.rst +++ b/docs/source/int_started.rst @@ -111,18 +111,20 @@ They can of course be run on any Linux distro, if you prefer this to native pack Install on MacOS ================ -You can install novelWriter with both its Python and library dependencies embedded using the -DMG application image file from the `main website`_, or from the Releases_ page on GitHub. -Installing it should be straightforward. +You can install novelWriter with both its Python and library dependencies embedded using the DMG +application image file from the `main website`_, or from the Releases_ page on GitHub. Installing +it should be straightforward. -Download the DMG file and open it. Then drag the novelWriter icon to the Applications folder on -the right. This will install it into your Applications. The first time you try to launch it, it will -say that the bundle cannot be verified, simply press the “open” button to add an exception. -If you are not presented with an "open" button in the dialog launch the application again by -right clicking on the application in Finder and selecting "Open" from the context menu. +* Download the DMG file and open it. Then drag the novelWriter icon to the :guilabel:`Applications` + folder on the right. This will install it into your :guilabel:`Applications`. +* The first time you try to launch it, it will say that the bundle cannot be verified, simply press + the :guilabel:`Open` button to add an exception. +* If you are not presented with an :guilabel:`Open` button in the dialog launch the application + again by right clicking on the application in Finder and selecting :guilabel:`Open` from the + context menu. -The context menu can also be accessed by option clicking if you have a one button mouse. -This is done by holding down the option key on your keyboard and clicking on the application in Finder. +The context menu can also be accessed by option-clicking if you have a one button mouse. This is +done by holding down the option key on your keyboard and clicking on the application in Finder. .. _a_started_minimal: From ed892f3f155e75a641c9a0871f363328a6a280d9 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Mon, 13 Feb 2023 08:38:19 +0100 Subject: [PATCH 21/28] Move the section on setting up Python on Windows to the PyPi part --- docs/source/int_started.rst | 60 ++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/docs/source/int_started.rst b/docs/source/int_started.rst index c8289e65..c95e3827 100644 --- a/docs/source/int_started.rst +++ b/docs/source/int_started.rst @@ -141,31 +141,6 @@ These zip files don't include any dependencies, so you must install them separat .. _a_started_minimal_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 -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: @@ -243,8 +218,8 @@ novelWriter is also available on the Python Package Index, or PyPi_. This instal 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. +system. If you are on Windows, and don't have Python installed, see :ref:`a_started_win_py` for +help. To install novelWriter from PyPi, use the following command: @@ -268,4 +243,35 @@ Make sure the install location for pip is in your PATH variable. This is not alw default. .. note:: + On systems with both Python 2 and 3, you may have to replace the ``pip`` command with ``pip3``. + + +.. _a_started_win_py: + +Installing Python on Windows +---------------------------- + +In order to run novelWriter from source, or install from PyPi, you need to have Python set up on +your system. Unlike Linux and MacOS, Windows does not come with Python pre-installed. + +You can download Python from `python.org`_. Python 3.7 or higher is required for running +novelWriter, 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 + + Screenshot of the Python installer on Windows. + +When Python is installed, you should be able to run Python commands from the COmmand Prompt or +from PowerShell. You can verify this by running: + +.. code-block:: bash + + python --version + +This should print out the version number of the Python installation. From d78f13839e1754d8c66ff7e2a996abb95ebaa9ad Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Mon, 13 Feb 2023 08:46:06 +0100 Subject: [PATCH 22/28] Clean up the gettings started document --- docs/source/int_started.rst | 126 ++++++------------------------------ 1 file changed, 18 insertions(+), 108 deletions(-) diff --git a/docs/source/int_started.rst b/docs/source/int_started.rst index c95e3827..3b7007f8 100644 --- a/docs/source/int_started.rst +++ b/docs/source/int_started.rst @@ -4,43 +4,35 @@ Getting Started *************** -.. _brew docs: https://docs.brew.sh/Homebrew-and-Python .. _Enchant: https://abiword.github.io/enchant/ .. _GitHub: https://github.com/vkbo/novelWriter -.. _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 .. _PyPi: https://pypi.org/project/novelWriter/ .. _python.org: https://www.python.org/downloads/windows .. _Releases: https://github.com/vkbo/novelWriter/releases -.. _RPM: https://github.com/vkbo/novelWriter/issues/907 .. _AppImage: https://appimage.org/ -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`. +Package installers are available for all major platforms, including Linux, Windows and MacOS. See +below for install instructions for each platform. + +You can also install novelWriter from the Python Package Index (PyPi). See :ref:`a_started_pip`. +Installing from PyPi does not set up icon launchers, so you will either have to do this yourself, +or start novelWriter from command line. Spell checking in novelWriter is provided by a third party library called Enchant_. Generally, it should pull dictionaries from your operating system automatically. However, on Windows they must be installed manually. See :ref:`a_custom_dict` for more details. -.. admonition:: Help Wanted - :class: seealso - - If you would like to help making more installers, the project is currently looking for people - who can help make releases for Red Hat-based Linux distros (RPM) and for macOS. See the issues - posted for RPM_ and macOS_ on GitHub_. - .. _a_started_windows: -Install on Windows -================== +Installing 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. +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. If you @@ -49,10 +41,10 @@ already had a version installed via a different method, you should uninstall tha .. _a_started_linux: -Install on Linux -================ +Installing on Linux +=================== -A Debian package can be downloaded from the `main website`_, or from the Releases_ page on GitHub. +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, at least. If you prefer, you can also add the novelWriter repository on Launchpad to your package manager. @@ -69,7 +61,7 @@ You can add the Ubuntu PPA_ and install novelWriter with the following commands. sudo apt update sudo apt install novelwriter -If you want pre-releases, add the ``ppa:vkbo/novelwriter-pre`` repository instead. +If you want the `Pre-Release PPA`_ instead, add the ``ppa:vkbo/novelwriter-pre`` repository. Debian and Mint @@ -108,11 +100,11 @@ They can of course be run on any Linux distro, if you prefer this to native pack .. _a_started_macos: -Install on MacOS -================ +Installing on MacOS +=================== You can install novelWriter with both its Python and library dependencies embedded using the DMG -application image file from the `main website`_, or from the Releases_ page on GitHub. Installing +application image file from the `main website`_, or from the Releases_ page on GitHub_. Installing it should be straightforward. * Download the DMG file and open it. Then drag the novelWriter icon to the :guilabel:`Applications` @@ -127,92 +119,10 @@ The context menu can also be accessed by option-clicking if you have a one butto done by holding down the option key on your keyboard and clicking on the application in Finder. -.. _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: - - - -.. _a_started_minimal_linux: - -Minimal Package on 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`` project 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: - -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 -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 -================= +Installing from PyPi +==================== novelWriter is also available on the Python Package Index, or PyPi_. This install method works on all supported operating systems. From d934f2bb6b4cefca8baaf3669ffdb237e85dcd8b Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 22 Feb 2023 21:24:11 +0100 Subject: [PATCH 23/28] Fix download link in docs --- docs/source/{_static => }/fileformatspec15.pdf | Bin docs/source/index.rst | 5 ----- docs/source/usage_projectformat.rst | 3 ++- 3 files changed, 2 insertions(+), 6 deletions(-) rename docs/source/{_static => }/fileformatspec15.pdf (100%) diff --git a/docs/source/_static/fileformatspec15.pdf b/docs/source/fileformatspec15.pdf similarity index 100% rename from docs/source/_static/fileformatspec15.pdf rename to docs/source/fileformatspec15.pdf diff --git a/docs/source/index.rst b/docs/source/index.rst index 4bf31fd5..ca96bf2f 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -47,11 +47,6 @@ the pip tool. See :ref:`a_started` for more details. * PyPi Project: https://pypi.org/project/novelWriter * Social Media: https://fosstodon.org/@novelwriter -.. toctree:: - :hidden: - - Main Page - .. toctree:: :maxdepth: 1 :caption: Introduction diff --git a/docs/source/usage_projectformat.rst b/docs/source/usage_projectformat.rst index 68342eff..22e43b69 100644 --- a/docs/source/usage_projectformat.rst +++ b/docs/source/usage_projectformat.rst @@ -29,7 +29,8 @@ applicable. **For Developers** - A full description of the current file format is available in the `File Format Spec 1.5`_ + A full description of the current file format is available in the + :download:`File Format Spec 1.5 ` document, available as a PDF. This document is intended for contributors to novelWriter, those building project conversion tools, either to or from tne novelWriter format, and for those who wish to make their own templating system. From 2365bcbcaf668385b8a1bbf537dd3dabea5e52d6 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 22 Feb 2023 22:11:51 +0100 Subject: [PATCH 24/28] Restore main page link in docs --- docs/source/index.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/source/index.rst b/docs/source/index.rst index ca96bf2f..4bf31fd5 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -47,6 +47,11 @@ the pip tool. See :ref:`a_started` for more details. * PyPi Project: https://pypi.org/project/novelWriter * Social Media: https://fosstodon.org/@novelwriter +.. toctree:: + :hidden: + + Main Page + .. toctree:: :maxdepth: 1 :caption: Introduction From fd390c2cbadee9e706ba09503f1ddfdb0e273144 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Thu, 23 Feb 2023 08:19:05 +0100 Subject: [PATCH 25/28] Increase font size for admonitions in docs --- docs/source/conf.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/source/conf.py b/docs/source/conf.py index 31494e79..00343e73 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -51,6 +51,12 @@ html_theme_options = { "light_logo": "novelwriter-light.png", "dark_logo": "novelwriter-dark.png", "navigation_with_keys": True, + "dark_css_variables": { + "admonition-font-size": "92%", + }, + "light_css_variables": { + "admonition-font-size": "92%", + }, } html_title = f"
Documentation Version {release}
" pygments_style = "tango" From e50bb72dc70e528ed18543a7912586ad6ea00d31 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 25 Feb 2023 18:35:39 +0100 Subject: [PATCH 26/28] Add some more space above sections --- docs/source/_static/custom.css | 3 +++ docs/source/conf.py | 1 + 2 files changed, 4 insertions(+) create mode 100644 docs/source/_static/custom.css diff --git a/docs/source/_static/custom.css b/docs/source/_static/custom.css new file mode 100644 index 00000000..4afdc4fc --- /dev/null +++ b/docs/source/_static/custom.css @@ -0,0 +1,3 @@ +body article section { + margin-top: 1.8em; +} diff --git a/docs/source/conf.py b/docs/source/conf.py index 00343e73..c2851227 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -47,6 +47,7 @@ exclude_patterns = [] html_theme = "furo" html_static_path = ["_static"] +html_css_files = ["custom.css"] html_theme_options = { "light_logo": "novelwriter-light.png", "dark_logo": "novelwriter-dark.png", From cc6636fe3c33411088fa31f3a597d6f54207cea8 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 25 Feb 2023 18:41:40 +0100 Subject: [PATCH 27/28] Add a HowTo section --- docs/source/index.rst | 1 + docs/source/int_howto.rst | 118 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 docs/source/int_howto.rst diff --git a/docs/source/index.rst b/docs/source/index.rst index 4bf31fd5..dfc2877c 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -61,6 +61,7 @@ the pip tool. See :ref:`a_started` for more details. int_overview int_started int_source + int_howto int_customise .. toctree:: diff --git a/docs/source/int_howto.rst b/docs/source/int_howto.rst new file mode 100644 index 00000000..ce13261d --- /dev/null +++ b/docs/source/int_howto.rst @@ -0,0 +1,118 @@ +.. _a_howto: + +************* +Tips & Tricks +************* + +This is a list of hopefully helpful little tips on how to get the most out of novelWriter. + + +Overview +======== + +**Managing the Project** + +* :ref:`a_howto_merge_documents` + +**Layout Tricks** + +* :ref:`a_howto_simple_table` + +**Organising Your Text** + +* :ref:`a_howto_chapter_intro` +* :ref:`a_howto_soft_hard_breaks` + +**Other Tools** + +* :ref:`a_howto_convert_ywriter` + + +How-Tos +======= + + +Managing the Project +-------------------- + + +.. _a_howto_merge_documents: + +Merge Multiple Documents Into One +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you need to merge a set of documents in your project into a single document, you can achieve +this by first making a new folder for just that purpose, and drag all the files you want merged +into this folder. Then you can right click the folder, select :guilabel:`Transform` and +:guilabel:`Merge Documents in FOlder`. + +In the dialog that pops up, the documents will be in the same order as in the folder, but you can +also rearrange them here of you wish. + + +Layout Tricks +------------- + + +.. _a_howto_simple_table: + +Create a Simple Table +^^^^^^^^^^^^^^^^^^^^^ + +The formatting tools available in novelWriter don't allow for complex structures like tables. +However, the editor does render tabs in a similar way to regular word processors. You can set the +width of a tab in :guilabel:`Preferences`. + +The tab key should have the same distance in the editor as in the viewer, so you can align text in +columns using the tab key, and it should look the same when viewed next to the editor. + +This is most suitable for your notes, as the result in exported documents cannot be guaranteed to +match. + + +Organising Your Text +-------------------- + + +.. _a_howto_chapter_intro: + +Add Introductory Text to Chapters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Sometimes chapters have a short preface, like a brief piece of text or a quote to set the stage +before the first scene -- Some text that may not be a part of the actual following scene. + +If you add separate files for chapters and scenes, this is the perfect place to add such text. +Separating chapter and scene files also allows you to set meta data for the whole chapter. Like +list all characters present in the chapter, etc. + + +.. _a_howto_soft_hard_breaks: + +Distinguishing Soft and Hard Scene Breaks +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Depending on your writing style, you may need to separate between soft and hard scene breaks within +chapters. Like for instance if you switch point-of-view character often. + +In such cases you may want to use the scene heading for hard scene breaks and section headings for +soft scene breaks. the :guilabel:`Project Build Tool` will let you add separate formatting for the +two when you generate your manuscript. You can for instance add the common "``* * *``" for hard +breaks and select to hide section breaks, which will just insert an empty paragraph in their place. + + +Other Tools +----------- + + +.. _a_howto_convert_ywriter: + +Convert Project to/from yWriter Format +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. _yWriter: http://spacejock.com/yWriter7.html + +There is a tool available that lets you convert a yWriter_ project to a novelWriter project, and +vice versa. + +The tool is available at `peter88213.github.io/yw2nw `__ From 1648ad2d0268c5a375db0f2a727e47ea8733b257 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 25 Feb 2023 18:48:04 +0100 Subject: [PATCH 28/28] Add a contributing note to the howto docs --- docs/source/int_howto.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/source/int_howto.rst b/docs/source/int_howto.rst index ce13261d..09f079fd 100644 --- a/docs/source/int_howto.rst +++ b/docs/source/int_howto.rst @@ -4,8 +4,15 @@ Tips & Tricks ************* +.. _Discussions Page: https://github.com/vkbo/novelWriter/discussions + This is a list of hopefully helpful little tips on how to get the most out of novelWriter. +.. note:: + + This section will be expanded over time, and if you would like to have something added, feel + free to contribute, or start a discussion on the project's `Discussions Page`_ + Overview ========