diff --git a/nw/core/tohtml.py b/nw/core/tohtml.py
index 0fb517b8..9b5eb425 100644
--- a/nw/core/tohtml.py
+++ b/nw/core/tohtml.py
@@ -148,30 +148,26 @@ class ToHtml(Tokenizer):
# Styles
aStyle = []
if tStyle is not None:
- # if tStyle & self.A_LEFT:
- # aStyle.append("text-align: left;")
- # if tStyle & self.A_RIGHT:
- # aStyle.append("text-align: right;")
+ if tStyle & self.A_LEFT:
+ aStyle.append("text-align: left;")
+ if tStyle & self.A_RIGHT:
+ aStyle.append("text-align: right;")
if tStyle & self.A_CENTRE:
aStyle.append("text-align: center;")
- # if tStyle & self.A_JUSTIFY:
- # aStyle.append("text-align: justify;")
- # if tStyle & self.A_PBB:
- # aStyle.append("page-break-before: always;")
- # if tStyle & self.A_PBB_L:
- # aStyle.append("page-break-before: left;")
- # if tStyle & self.A_PBB_R:
- # aStyle.append("page-break-before: right;")
- # if tStyle & self.A_PBB_AV:
- # aStyle.append("page-break-before: avoid;")
- # if tStyle & self.A_PBA:
- # aStyle.append("page-break-after: always;")
- # if tStyle & self.A_PBA_L:
- # aStyle.append("page-break-after: left;")
- # if tStyle & self.A_PBA_R:
- # aStyle.append("page-break-after: right;")
- # if tStyle & self.A_PBA_AV:
- # aStyle.append("page-break-after: avoid;")
+ if tStyle & self.A_JUSTIFY:
+ aStyle.append("text-align: justify;")
+ if tStyle & self.A_PBB:
+ aStyle.append("page-break-before: always;")
+ if tStyle & self.A_PBB_AV:
+ aStyle.append("page-break-before: avoid;")
+ if tStyle & self.A_PBB_NO:
+ aStyle.append("page-break-before: never;")
+ if tStyle & self.A_PBA:
+ aStyle.append("page-break-after: always;")
+ if tStyle & self.A_PBA_AV:
+ aStyle.append("page-break-after: avoid;")
+ if tStyle & self.A_PBA_NO:
+ aStyle.append("page-break-after: never;")
if len(aStyle) > 0:
hStyle = " style='%s'" % (" ".join(aStyle))
@@ -195,7 +191,7 @@ class ToHtml(Tokenizer):
elif tType == self.T_TITLE:
tHead = tText.replace(r"\\", "
")
- tmpResult.append("\n" % (hStyle, tHead))
+ tmpResult.append("
%s
\n" % (hStyle, tHead))
elif tType == self.T_HEAD1:
tHead = tText.replace(r"\\", "
")
@@ -258,8 +254,7 @@ class ToHtml(Tokenizer):
theStyles.append(r"h1, h2 {color: rgb(66, 113, 174);}")
theStyles.append(r"h3, h4 {color: rgb(50, 50, 50);}")
theStyles.append(r"h1, h2, h3, h4 {page-break-after: avoid;}")
- theStyles.append(r"h1 {page-break-before: always;}")
- theStyles.append(r".title {font-size: 2.5em; font-weight: bold; page-break-before: never;}")
+ theStyles.append(r".title {font-size: 2.5em; font-weight: bold;}")
theStyles.append(r".tags {color: rgb(245, 135, 31); font-weight: bold;}")
theStyles.append(r".break {text-align: left;}")
theStyles.append(r".sep {text-align: center; margin-top: 1em; margin-bottom: 1em;}")
diff --git a/nw/core/tokenizer.py b/nw/core/tokenizer.py
index 8773cdb1..d4e001f5 100644
--- a/nw/core/tokenizer.py
+++ b/nw/core/tokenizer.py
@@ -60,14 +60,17 @@ class Tokenizer():
T_SEP = 11 # Scene separator
T_SKIP = 12 # Paragraph break
+ A_NONE = 0 # No special style
A_LEFT = 1 # Left aligned
A_RIGHT = 2 # Right aligned
A_CENTRE = 4 # Centred
A_JUSTIFY = 8 # Justified
- A_PBB = 16 # Page break before
- A_PBB_AV = 32 # Page break, avoid
- A_PBA = 64 # Page break after
- A_PBA_AV = 128 # Page break, avoid
+ A_PBB = 16 # Page break before always
+ A_PBB_AV = 32 # Page break before avoid
+ A_PBB_NO = 64 # Page break before never
+ A_PBA = 128 # Page break after always
+ A_PBA_AV = 256 # Page break after avoid
+ A_PBA_NO = 512 # Page break after avoid
def __init__(self, theProject, theParent):
@@ -288,7 +291,7 @@ class Tokenizer():
# Tag lines starting with specific characters
if len(aLine.strip()) == 0:
self.theTokens.append((
- self.T_EMPTY, "", None, None
+ self.T_EMPTY, "", None, self.A_NONE
))
tmpMarkdown.append("\n")
@@ -296,45 +299,45 @@ class Tokenizer():
cLine = aLine[1:].strip()
if cLine.lower().startswith("synopsis:"):
self.theTokens.append((
- self.T_SYNOPSIS, cLine[9:].strip(), None, None
+ self.T_SYNOPSIS, cLine[9:].strip(), None, self.A_NONE
))
if self.doSynopsis:
tmpMarkdown.append("%s\n" % aLine)
else:
self.theTokens.append((
- self.T_COMMENT, aLine[1:].strip(), None, None
+ self.T_COMMENT, aLine[1:].strip(), None, self.A_NONE
))
if self.doComments:
tmpMarkdown.append("%s\n" % aLine)
elif aLine[0] == "@":
self.theTokens.append((
- self.T_KEYWORD, aLine[1:].strip(), None, None
+ self.T_KEYWORD, aLine[1:].strip(), None, self.A_NONE
))
if self.doKeywords:
tmpMarkdown.append("%s\n" % aLine)
elif aLine[:2] == "# ":
self.theTokens.append((
- self.T_HEAD1, aLine[2:].strip(), None, None
+ self.T_HEAD1, aLine[2:].strip(), None, self.A_PBB
))
tmpMarkdown.append("%s\n" % aLine)
elif aLine[:3] == "## ":
self.theTokens.append((
- self.T_HEAD2, aLine[3:].strip(), None, None
+ self.T_HEAD2, aLine[3:].strip(), None, self.A_NONE
))
tmpMarkdown.append("%s\n" % aLine)
elif aLine[:4] == "### ":
self.theTokens.append((
- self.T_HEAD3, aLine[4:].strip(), None, None
+ self.T_HEAD3, aLine[4:].strip(), None, self.A_NONE
))
tmpMarkdown.append("%s\n" % aLine)
elif aLine[:5] == "#### ":
self.theTokens.append((
- self.T_HEAD4, aLine[5:].strip(), None, None
+ self.T_HEAD4, aLine[5:].strip(), None, self.A_NONE
))
tmpMarkdown.append("%s\n" % aLine)
@@ -359,13 +362,13 @@ class Tokenizer():
# sorted by position
fmtPos = sorted(fmtPos, key=itemgetter(0))
self.theTokens.append((
- self.T_TEXT, aLine, fmtPos, None
+ self.T_TEXT, aLine, fmtPos, self.A_NONE
))
tmpMarkdown.append("%s\n" % aLine)
# Always add an empty line at the end
self.theTokens.append((
- self.T_EMPTY, "", None, None
+ self.T_EMPTY, "", None, self.A_NONE
))
tmpMarkdown.append("\n")
@@ -402,7 +405,7 @@ class Tokenizer():
tText = self._formatHeading(self.fmtTitle, tText)
self.theTokens[n] = (
- tType, tText, None, None
+ tType, tText, None, self.A_NONE
)
elif tType == self.T_HEAD2:
@@ -418,7 +421,7 @@ class Tokenizer():
# Format the chapter header
self.theTokens[n] = (
- tType, tText, None, None
+ tType, tText, None, self.A_PBB
)
# Set scene variables
@@ -435,21 +438,21 @@ class Tokenizer():
tTemp = self._formatHeading(self.fmtScene, tText)
if tTemp == "" and self.hideScene:
self.theTokens[n] = (
- self.T_EMPTY, "", None, None
+ self.T_EMPTY, "", None, self.A_NONE
)
elif tTemp == "" and not self.hideScene:
if self.firstScene:
self.theTokens[n] = (
- self.T_EMPTY, "", None, None
+ self.T_EMPTY, "", None, self.A_NONE
)
else:
self.theTokens[n] = (
- self.T_SKIP, "", None, None
+ self.T_SKIP, "", None, self.A_NONE
)
elif tTemp == self.fmtScene:
if self.firstScene:
self.theTokens[n] = (
- self.T_EMPTY, "", None, None
+ self.T_EMPTY, "", None, self.A_NONE
)
else:
self.theTokens[n] = (
@@ -457,7 +460,7 @@ class Tokenizer():
)
else:
self.theTokens[n] = (
- tType, tTemp, None, None
+ tType, tTemp, None, self.A_NONE
)
# Definitely no longer the first scene
@@ -470,11 +473,11 @@ class Tokenizer():
tTemp = self._formatHeading(self.fmtSection, tText)
if tTemp == "" and self.hideSection:
self.theTokens[n] = (
- self.T_EMPTY, "", None, None
+ self.T_EMPTY, "", None, self.A_NONE
)
elif tTemp == "" and not self.hideSection:
self.theTokens[n] = (
- self.T_SKIP, "", None, None
+ self.T_SKIP, "", None, self.A_NONE
)
elif tTemp == self.fmtSection:
self.theTokens[n] = (
@@ -482,7 +485,7 @@ class Tokenizer():
)
else:
self.theTokens[n] = (
- tType, tTemp, None, None
+ tType, tTemp, None, self.A_NONE
)
# For title page and partitions, we need to centre all text.
@@ -494,12 +497,19 @@ class Tokenizer():
tType = tToken[0]
tText = tToken[1]
tFormat = tToken[2]
- if self.isTitle:
- if tType == self.T_HEAD1:
- tType = self.T_TITLE
- self.theTokens[n] = (
- tType, tText, tFormat, self.A_CENTRE
- )
+ if tType == self.T_HEAD1:
+ if self.isTitle:
+ self.theTokens[n] = (
+ self.T_TITLE, tText, tFormat, self.A_PBB_NO | self.A_CENTRE
+ )
+ else:
+ self.theTokens[n] = (
+ tType, tText, tFormat, self.A_PBB | self.A_CENTRE
+ )
+ else:
+ self.theTokens[n] = (
+ tType, tText, tFormat, self.A_CENTRE
+ )
# Add a page break after the last entry
n = len(self.theTokens) - 1
diff --git a/sample/sampleNovel/data_e/dca4be2fcaf8_main.nwd b/sample/sampleNovel/data_e/dca4be2fcaf8_main.nwd
new file mode 100644
index 00000000..679e4e27
--- /dev/null
+++ b/sample/sampleNovel/data_e/dca4be2fcaf8_main.nwd
@@ -0,0 +1,4 @@
+%%~ edca4be2fcaf8:7031beac91f75:Part 1
+# Part One
+
+The first part.
\ No newline at end of file
diff --git a/sample/sampleNovel/nwProject.nwx b/sample/sampleNovel/nwProject.nwx
index 9e0468e6..d0405ad5 100644
--- a/sample/sampleNovel/nwProject.nwx
+++ b/sample/sampleNovel/nwProject.nwx
@@ -1,5 +1,5 @@
-
+
Sample Project
Sample Project
@@ -10,7 +10,7 @@
True
True
- 96b68994dfa3d
+ 636b6aa9b697b
6a2d6d5f4f401
875
@@ -44,7 +44,7 @@
Main
-
+
-
Novel
ROOT
@@ -65,7 +65,20 @@
2
78
- -
+
-
+ Part 1
+ FILE
+ NOVEL
+ New
+ False
+ True
+ PARTITION
+ 0
+ 0
+ 0
+ 0
+
+ -
A Folder
FOLDER
NOVEL