diff --git a/build.py b/build.py
index 75a13f1..3469853 100755
--- a/build.py
+++ b/build.py
@@ -354,7 +354,7 @@ def BuildOnePageSidebar(fs):
levelNums = [0]*3
for i in range(len(fs)):
- # Handle Part/Chapter/subchapter/section/subsection numbering
+ # Handle Part/Chapter/subchapter numbering
level = fs[i]['level']
if level < 2:
levelNums[2] = 0
@@ -515,22 +515,22 @@ for header in fileStruct:
print(header['title'])
- # Handle TOC scriblings and one-page titles...
+ # Handle TOC scriblings...
+ if level == 0:
+ toc = toc + '
Part ' + num2roman(levelNums[level]) + ': ' + header['title'] + '
\n';
+ elif level == 1:
+ toc = toc + '\tCh. ' + str(levelNums[level]) + ': ' + header['title'] + '
\n'
+ elif level == 2:
+ toc = toc + '\t\t' + header['title'] + '
\n'
+
+ # Handle one-page and PDF titles...
opl = ''
if 'link' in header:
opl = ' id="' + header['link'] + '"'
else:
opl = ' id="' + header['filename'] + '"'
+ oph = '' + header['title'] + '\n';
- if level == 0:
- toc = toc + 'Part ' + num2roman(levelNums[level]) + ': ' + header['title'] + '
\n';
- oph = 'Part ' + num2roman(levelNums[level]) + ' - ' + header['title'] + '
\n';
- elif level == 1:
- toc = toc + '\tCh. ' + str(levelNums[level]) + ': ' + header['title'] + '
\n'
- oph = '' + str(levelNums[level]) + ' - ' + header['title'] + '\n';
- elif level == 2:
- toc = toc + '\t\t
' + header['title'] + '
\n'
- oph = '' + str(levelNums[level-1]) + '.' + str(levelNums[level]) + ' - ' + header['title'] + '
\n';
# Make the 'this thing contains...' stuff
if HaveChildren(fileStruct, pageNumber):
@@ -680,17 +680,21 @@ if not nopdf:
print('Generating the PDF...')
# Create the PDF version of the documentation
- pdfpageFile = open(global_site_dir + 'pdf.html', 'w')
pdfpage = pdfpage.replace('{% tree %}', opsidebar) # create the TOC
pdfpage = pdfpage.replace('{{ content }}', '') # cleans up the last spaceholder
pdfpage = pdfpage.replace('src="/images/', 'src="images/') # makes images links relative
pdfpage = pdfpage.replace('url(\'/images/', 'url(\'images/') # CSS images links relative
+ # Write it to disk (optional, can be removed)
+ pdfpageFile = open(global_site_dir + 'pdf.html', 'w')
pdfpageFile.write(pdfpage)
pdfpageFile.close()
+ # Generating the actual PDF with weasyprint (https://weasyprint.org/)
from weasyprint import HTML
- doc = HTML(filename = global_site_dir + 'pdf.html')
- doc.write_pdf(global_site_dir + 'manual.pdf')
+ #from weasyprint.fonts import FontConfiguration
+ #html_font_config = FontConfiguration()
+ doc = HTML(string = pdfpage, base_url = global_site_dir)
+ doc.write_pdf(global_site_dir + 'manual.pdf')#, font_config = html_font_config)
if not quiet:
print('Processed ' + str(fileCount) + ' files.')
diff --git a/pdf-template.html b/pdf-template.html
index 18389c8..bd9edd5 100644
--- a/pdf-template.html
+++ b/pdf-template.html
@@ -14,13 +14,12 @@
-
-
-
-
+
+ The Ardour Manual
+
-
Table of contents
+ Table of contents
{% tree %}
diff --git a/source/css/common.css b/source/css/common.css
index e4716fb..967d65e 100644
--- a/source/css/common.css
+++ b/source/css/common.css
@@ -1,3 +1,17 @@
+@font-face {
+ font-family: 'junge-regular';
+ src: url('junge-regular-webfont.woff') format('woff'),
+ url('junge-regular-webfont.ttf') format('truetype');
+ font-weight: normal;
+ font-style: normal;
+}
+
+body {
+ font-family: 'junge-regular';
+ font-size: 16px;
+ line-height: 2ex;
+}
+
kbd {
display: inline-block;
min-width: 1em;
diff --git a/source/css/pdf.css b/source/css/pdf.css
index 5429085..c5ae24e 100644
--- a/source/css/pdf.css
+++ b/source/css/pdf.css
@@ -5,26 +5,23 @@
margin: 1.5cm 1.5cm 1.5cm 1.5cm;
}
-@page :first {
- size: A4;
- margin: 1.5cm 1.5cm 1.5cm 1.5cm;
- background: url("../images/ardour_logo.svg") no-repeat center;
- background-size: contain;
-}
-
img {
max-width: 100%;
}
div.frontcover {
page-break-after: always;
+ margin: auto;
+ width: 80%;
+ font-size: 4em;
+ text-align: center;
}
/* styles for the right hand spread
Bottom left we display the title of the book, bottom right the page using a CSS
counter, top right the content of the current chapter
*/
-@page:right {
+@page :right {
@bottom-left {
margin: 10pt 0 30pt 0;
/*border-top: .25pt solid #666;*/
@@ -49,7 +46,7 @@ div.frontcover {
/* styles for the left hand spread
Bottom right book title, bottom left current page
*/
-@page:left {
+@page :left {
@bottom-right {
margin: 10pt 0 30pt 0;
/*border-top: .25pt solid #666;*/
@@ -66,7 +63,7 @@ div.frontcover {
}
/* first page */
-@page:first {
+@page :first {
@bottom-right {
content: normal;
margin: 0;
@@ -78,39 +75,57 @@ div.frontcover {
}
}
-/* reset chapter and figure counters on the body */
body {
- counter-reset: chapternum figurenum;
- font-family: "Trebuchet MS", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Tahoma, sans-serif;
- line-height: 1.2;
- font-size: 9pt;
+ counter-reset: partnum chapternum subchapternum figurenum; /* resets all counters */
+ /*font-family: "Trebuchet MS", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Tahoma, sans-serif;*/
+ font-size: 10pt;
+ line-height: 1.25em;
+
}
-/* get the title of the current chapter - this will be the content of the h1
-reset figure counter as figures start from 1 in each chapter */
h1 {
- string-set: doctitle content();
+ string-set: doctitle content(); /* get the title of the current chapter */
page-break-before: always;
- counter-reset: figurenum;
- line-height: 1.3;
- counter-increment: chapternum;
}
-h1:first-of-type { /* the ToC should not count...*/
+#toc::before { /* the ToC should not count...*/
content: none;
- counter-reset: chapternum;
+ counter-reset: partnum;
+ /*counter-increment: partnum -1;*/
}
-/* increment and display figure counter */
-figcaption:before {
- counter-increment: figurenum;
- content: counter(chapternum) "-" counter(figurenum) ". ";
+h1::before { /* parts */
+ counter-increment: partnum;
+ content: "Part " counter(partnum) " - ";
}
+h2::before { /* chapter */
+ counter-increment: chapternum;
+ content: "Chapter " counter(chapternum) " - ";
+}
+
+h3::before { /* subchapter */
+ counter-increment: subchapternum;
+ content: counter(chapternum) "." counter(subchapternum) " - " ;
+}
+
+figcaption::before {
+ counter-increment: figurenum;
+ content: "Fig. " counter(chapternum) "." counter(figurenum) " - ";
+}
+
+h1 { font-size: 3em; }
+h2 { font-size: 2.25em; counter-reset: subchapternum figurenum; }
+h3 { font-size: 1.75em; }
+h4 { font-size: 1.4em; }
+h5 { font-size: 1.2em; }
+h6 { font-size: 1.1em; }
+
h1,h2,h3,h4,h5 {
font-weight: bold;
page-break-after: avoid;
page-break-inside:avoid;
+ line-height: 1.25em;
}
h1+p, h2+p, h3+p {
@@ -154,6 +169,6 @@ a {
}
/* add page number to cross references */
-a.xref:after {
+a.xref::after {
content: " (page " target-counter(attr(href, url), page) ")";
}
diff --git a/source/css/screen.css b/source/css/screen.css
index 0d6486f..bb0f469 100644
--- a/source/css/screen.css
+++ b/source/css/screen.css
@@ -1,17 +1,3 @@
-@font-face {
- font-family: 'junge-regular';
- src: url('junge-regular-webfont.woff2') format('woff2'),
- url('junge-regular-webfont.woff') format('woff'),
- url('junge-regular-webfont.ttf') format('truetype');
- font-weight: normal;
- font-style: normal;
-}
-
-body {
- font-family: 'junge-regular';
- font-size: 16px;
- line-height: 2ex;
-}
.clear {
clear:both;