From a5adb44c0d993bace6e129a09b5f020e3b2c3d99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?tr=C3=A9meur?= Date: Sat, 9 Sep 2023 21:11:12 +0100 Subject: [PATCH] Generate single pages for locked fics, link to single pages from RSS feed, use local CSS file in local build --- build/secret/tufte.css | 447 ------------------------------------ build/{files => }/tufte.css | 2 +- feed.py | 12 +- single.py | 32 +-- 4 files changed, 22 insertions(+), 471 deletions(-) delete mode 100644 build/secret/tufte.css rename build/{files => }/tufte.css (99%) diff --git a/build/secret/tufte.css b/build/secret/tufte.css deleted file mode 100644 index 97a5d4b..0000000 --- a/build/secret/tufte.css +++ /dev/null @@ -1,447 +0,0 @@ -@charset "UTF-8"; - -/* Tufte CSS styles */ -html { - font-size: 15px; -} - -body { - width: 87.5%; - margin-left: auto; - margin-right: auto; - padding-left: 12.5%; - font-family: "EB Garamond", serif; - background-color: #fffff8; - color: #111; - max-width: 1400px; - counter-reset: sidenote-counter; -} - -/* Adds dark mode */ -@media (prefers-color-scheme: dark) { - body { - background-color: #151515; - color: #ddd; - } -} - -h1 { - font-weight: 400; - margin-top: 4rem; - margin-bottom: 1.5rem; - font-size: 3.2rem; - line-height: 1; -} - -h2 { - font-style: italic; - font-weight: 400; - margin-top: 2.1rem; - margin-bottom: 1.4rem; - font-size: 2.2rem; - line-height: 1; -} - -h3 { - font-style: italic; - font-weight: 400; - font-size: 1.7rem; - margin-top: 2rem; - margin-bottom: 1.4rem; - line-height: 1; -} - -hr { - display: block; - height: 1px; - width: 55%; - border: 0; - border-top: 1px solid #ccc; - margin: 1em 0; - padding: 0; -} - -p.subtitle { - font-style: italic; - margin-top: 1rem; - margin-bottom: 1rem; - font-size: 1.8rem; - display: block; - line-height: 1; -} - -.numeral { - font-family: "EB Garamond", serif; -} - -.danger { - color: red; -} - -article { - padding: 5rem 0rem; -} - -section { - padding-top: 1rem; - padding-bottom: 1rem; -} - -p, -dl, -ol, -ul { - font-size: 1.4rem; - line-height: 2rem; -} - -p { - margin-top: 1.4rem; - margin-bottom: 1.4rem; - padding-right: 0; - vertical-align: baseline; -} - -/* Chapter Epigraphs */ -div.epigraph { - margin: 5em 0; -} - -div.epigraph > blockquote { - margin-top: 3em; - margin-bottom: 3em; -} - -div.epigraph > blockquote, -div.epigraph > blockquote > p { - font-style: italic; -} - -div.epigraph > blockquote > footer { - font-style: normal; -} - -div.epigraph > blockquote > footer > cite { - font-style: italic; -} -/* end chapter epigraphs styles */ - -blockquote { - font-size: 1.4rem; -} - -blockquote p { - width: 55%; - margin-right: 40px; -} - -blockquote footer { - width: 55%; - font-size: 1.1rem; - text-align: right; -} - -section > p, -section > footer, -section > table { - width: 55%; -} - -/* 50 + 5 == 55, to be the same width as paragraph */ -section > dl, -section > ol, -section > ul { - width: 50%; - -webkit-padding-start: 5%; -} - -dt:not(:first-child), -li:not(:first-child) { - margin-top: 0.25rem; -} - -figure { - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; - max-width: 55%; - -webkit-margin-start: 0; - -webkit-margin-end: 0; - margin: 0 0 3em 0; -} - -figcaption { - float: right; - clear: right; - margin-top: 0; - margin-bottom: 0; - font-size: 1.1rem; - line-height: 1.6; - vertical-align: baseline; - position: relative; - max-width: 40%; -} - -figure.fullwidth figcaption { - margin-right: 24%; -} - -/* Links: replicate underline that clears descenders */ -a:link, -a:visited { - color: inherit; -} - -.no-tufte-underline:link { - background: unset; - text-shadow: unset; -} - -a:link, .tufte-underline, .hover-tufte-underline:hover { - text-decoration: none; - background: -webkit-linear-gradient(#fffff8, #fffff8), -webkit-linear-gradient(#fffff8, #fffff8), -webkit-linear-gradient(currentColor, currentColor); - background: linear-gradient(#fffff8, #fffff8), linear-gradient(#fffff8, #fffff8), linear-gradient(currentColor, currentColor); - -webkit-background-size: 0.05em 1px, 0.05em 1px, 1px 1px; - -moz-background-size: 0.05em 1px, 0.05em 1px, 1px 1px; - background-size: 0.05em 1px, 0.05em 1px, 1px 1px; - background-repeat: no-repeat, no-repeat, repeat-x; - text-shadow: 0.03em 0 #fffff8, -0.03em 0 #fffff8, 0 0.03em #fffff8, 0 -0.03em #fffff8, 0.06em 0 #fffff8, -0.06em 0 #fffff8, 0.09em 0 #fffff8, -0.09em 0 #fffff8, 0.12em 0 #fffff8, -0.12em 0 #fffff8, 0.15em 0 #fffff8, -0.15em 0 #fffff8; - background-position: 0% 93%, 100% 93%, 0% 93%; -} - -@media screen and (-webkit-min-device-pixel-ratio: 0) { - a:link, .tufte-underline, .hover-tufte-underline:hover { - background-position-y: 87%, 87%, 87%; - } -} - -/* Adds dark mode */ -@media (prefers-color-scheme: dark) { - a:link, .tufte-underline, .hover-tufte-underline:hover { - text-shadow: 0.03em 0 #151515, -0.03em 0 #151515, 0 0.03em #151515, 0 -0.03em #151515, 0.06em 0 #151515, -0.06em 0 #151515, 0.09em 0 #151515, -0.09em 0 #151515, 0.12em 0 #151515, -0.12em 0 #151515, 0.15em 0 #151515, -0.15em 0 #151515; - } -} - -a:link::selection, -a:link::-moz-selection { - text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe; - background: #b4d5fe; -} - -/* Sidenotes, margin notes, figures, captions */ -img { - max-width: 100%; -} - -.sidenote, -.marginnote { - float: right; - clear: right; - margin-right: -60%; - width: 50%; - margin-top: 0.3rem; - margin-bottom: 0; - font-size: 1.1rem; - line-height: 1.3; - vertical-align: baseline; - position: relative; -} - -.sidenote-number { - counter-increment: sidenote-counter; -} - -.sidenote-number:after, -.sidenote:before { - font-family: "EB Garamond", serif; - position: relative; - vertical-align: baseline; -} - -.sidenote-number:after { - content: counter(sidenote-counter); - font-size: 1rem; - top: -0.5rem; - left: 0.1rem; -} - -.sidenote:before { - content: counter(sidenote-counter) " "; - font-size: 1rem; - top: -0.5rem; -} - -blockquote .sidenote, -blockquote .marginnote { - margin-right: -82%; - min-width: 59%; - text-align: left; -} - -div.fullwidth, -table.fullwidth { - width: 100%; -} - -div.table-wrapper { - overflow-x: auto; - font-family: "Trebuchet MS", "Gill Sans", "Gill Sans MT", sans-serif; -} - -.sans { - font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif; - letter-spacing: .03em; -} - -code, pre > code { - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; - font-size: 1.0rem; - line-height: 1.42; - -webkit-text-size-adjust: 100%; /* Prevent adjustments of font size after orientation changes in iOS. See https://github.com/edwardtufte/tufte-css/issues/81#issuecomment-261953409 */ -} - -.sans > code { - font-size: 1.2rem; -} - -h1 > code, -h2 > code, -h3 > code { - font-size: 0.80em; -} - -.marginnote > code, -.sidenote > code { - font-size: 1rem; -} - -pre > code { - font-size: 0.9rem; - width: 52.5%; - margin-left: 2.5%; - overflow-x: auto; - display: block; -} - -pre.fullwidth > code { - width: 90%; -} - -.fullwidth { - max-width: 90%; - clear:both; -} - -span.newthought { - font-variant: small-caps; - font-size: 1.2em; -} - -input.margin-toggle { - display: none; -} - -label.sidenote-number { - display: inline-block; - max-height: 2rem; /* should be less than or equal to paragraph line-height */ -} - -label.margin-toggle:not(.sidenote-number) { - display: none; -} - -.iframe-wrapper { - position: relative; - padding-bottom: 56.25%; /* 16:9 */ - padding-top: 25px; - height: 0; -} - -.iframe-wrapper iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -@media (max-width: 760px) { - body { - width: 84%; - padding-left: 8%; - padding-right: 8%; - } - - hr, - section > p, - section > footer, - section > table { - width: 100%; - } - - pre > code { - width: 97%; - } - - section > dl, - section > ol, - section > ul { - width: 90%; - } - - figure { - max-width: 90%; - } - - figcaption, - figure.fullwidth figcaption { - margin-right: 0%; - max-width: none; - } - - blockquote { - margin-left: 1.5em; - margin-right: 0em; - } - - blockquote p, - blockquote footer { - width: 100%; - } - - label.margin-toggle:not(.sidenote-number) { - display: inline; - } - - .sidenote, - .marginnote { - display: none; - } - - .margin-toggle:checked + .sidenote, - .margin-toggle:checked + .marginnote { - display: block; - float: left; - left: 1rem; - clear: both; - width: 95%; - margin: 1rem 2.5%; - vertical-align: baseline; - position: relative; - } - - label { - cursor: pointer; - } - - div.table-wrapper, - table { - width: 85%; - } - - img { - width: 100%; - } -} diff --git a/build/files/tufte.css b/build/tufte.css similarity index 99% rename from build/files/tufte.css rename to build/tufte.css index 97a5d4b..85377a1 100644 --- a/build/files/tufte.css +++ b/build/tufte.css @@ -334,7 +334,7 @@ pre.fullwidth > code { clear:both; } -span.newthought { +span.newthought, p.newthought::first-line { font-variant: small-caps; font-size: 1.2em; } diff --git a/feed.py b/feed.py index b753439..57a4adf 100644 --- a/feed.py +++ b/feed.py @@ -164,14 +164,12 @@ def feedgen(local=False): filewrite.write(futuredate.strftime("%a, %-d %b %Y")) filewrite.write(" 00:00:00 UT\n") if local: - filewrite.write("/home/mdd/Documents/drive/proj/fic-archive/build/masterlist/index.html") + filewrite.write("/home/mdd/Documents/drive/proj/fic-archive/build/") else: - filewrite.write("https://tre.praze.net/fic/masterlist") - filewrite.write("#fic") - try: - filewrite.write(str(thefile.original)) - except: - filewrite.write(ficcountstring) + filewrite.write("https://tre.praze.net/fic/") + filewrite.write("single/" + ficcountstring) + if local: + filewrite.write("/index.html") filewrite.write("\npraze-fic-" + ficcountstring) datecount = 0 dateindex = 0 diff --git a/single.py b/single.py index 0930100..2bfa069 100644 --- a/single.py +++ b/single.py @@ -27,22 +27,22 @@ def singlepage(ficno,directory,local=False): singlestatus = True except: singlestatus = True - if singlestatus: - singlepath = "build/single/" + ficnostring - if not os.path.isdir(singlepath): - os.mkdir(singlepath) - if os.path.exists(singlepath + "/index.html"): - os.remove(singlepath + "/index.html") - # write to output file - output = singlepath + "/index.html" - headerfooter.headerwrite(output,"Fic no. " + ficnostring,"Fic no. " + ficnostring + "","",False,local) - try: - if fileread.original: - makeheader.ficgen(fileread.original,False,output,local) - else: - makeheader.ficgen(ficno,False,output,local) - except: + singlepath = "build/single/" + ficnostring + if not os.path.isdir(singlepath): + os.mkdir(singlepath) + if os.path.exists(singlepath + "/index.html"): + os.remove(singlepath + "/index.html") + # write to output file + output = singlepath + "/index.html" + headerfooter.headerwrite(output,"Fic no. " + ficnostring,"Fic no. " + ficnostring + "","",False,local) + try: + if fileread.original: + makeheader.ficgen(fileread.original,False,output,local) + else: makeheader.ficgen(ficno,False,output,local) + except: + makeheader.ficgen(ficno,False,output,local) + if singlestatus: filewrite = open(output, "a") filewrite.write("