diff --git a/css/modules/_followingNotes.scss b/css/modules/_followingNotes.scss new file mode 100644 index 0000000..add30be --- /dev/null +++ b/css/modules/_followingNotes.scss @@ -0,0 +1,27 @@ +.container-following-note{ + font-size: var(--fs-small); + line-height: calc(var(--baseline)*0.8); + // padding-left: var(--indent); + position: relative; + + columns: 2; +} + +.body_note{ + padding-left: calc(var(--indent)*1); + position: relative; +} + +.following-note_marker{ + position: absolute; + // left: calc(var(--indent)*2); + left: 0; +} + +.following-note_call{ + font-size: var(--fs-small); + line-height: 1; + position: relative; + top: -4px; +} + diff --git a/css/modules/_text.scss b/css/modules/_text.scss index 0695543..e1501ac 100644 --- a/css/modules/_text.scss +++ b/css/modules/_text.scss @@ -2,6 +2,9 @@ sup{ line-height: 0; } +.smallcaps{ + font-variant: small-caps; +} hr{ border: none; height: var(--baseline); diff --git a/css/style.css b/css/style.css index 78bb725..4761304 100644 --- a/css/style.css +++ b/css/style.css @@ -1,9 +1,9 @@ @charset "UTF-8"; :root { - --font: "Akkurat Std", sans-serif; - --font-serif: "Edgar", sans-serif; - --font-title: "Allium Rounded", sans-serif; - --font-sans: "Allium Rounded", sans-serif; + --font: 'Akkurat Std', sans-serif; + --font-serif: 'Edgar', sans-serif; + --font-title: 'Allium Rounded', sans-serif; + --font-sans: 'Allium Rounded', sans-serif; --font-size: 11px; --fs-small: 8.5px; --fs-num: 14px; @@ -183,6 +183,10 @@ sup { line-height: 0; } +.smallcaps { + font-variant: small-caps; +} + hr { border: none; height: var(--baseline); @@ -200,8 +204,7 @@ p { } p, li { - -webkit-hyphens: auto; - hyphens: auto; + hyphens: auto; hyphenate-limit-chars: 7 3 4; hyphenate-limit-lines: 2; hyphenate-limit-zone: 8%; @@ -394,50 +397,32 @@ section h1:first-of-type { margin-top: 3px !important; } -@page { - @footnote { - float: bottom; - footnote-policy: auto; - } -} -.pagedjs_footnote_content { - padding-top: calc(var(--baseline) * 1); -} - -.inline-note { - float: footnote; - footnote-policy: auto; - font-size: var(--fs-small); - line-height: calc(var(--baseline) * 0.8); - padding-left: var(--indent); - position: relative; - font-weight: 600; -} -.inline-note::marker { - display: none; - content: ""; -} - -[data-counter-note]::before { - content: attr(data-counter-note) "."; - position: absolute; - left: 0px; -} - -.inline-note::after { - font-family: var(--font); - font-size: var(--fs-small); - line-height: 0; - position: relative; - top: -3px; - font-variant-position: normal !important; -} - -blockquote .inline-note { - font-variant-position: normal !important; -} - #section__list-of-abbr { display: none; color: red; +} + +.container-following-note { + font-size: var(--fs-small); + line-height: calc(var(--baseline) * 0.8); + position: relative; + -moz-columns: 2; + columns: 2; +} + +.body_note { + padding-left: calc(var(--indent) * 1); + position: relative; +} + +.following-note_marker { + position: absolute; + left: 0; +} + +.following-note_call { + font-size: var(--fs-small); + line-height: 1; + position: relative; + top: -4px; }/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/css/style.css.map b/css/style.css.map index 1cd0617..233d3d8 100644 --- a/css/style.css.map +++ b/css/style.css.map @@ -1 +1 @@ -{"version":3,"sources":["style.css","modules/_var.scss","modules/_init.scss","modules/_layout.scss","modules/_text.scss","modules/_titles.scss","modules/_footnotes.scss","modules/_list-of-abbr.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file +{"version":3,"sources":["style.css","modules/_var.scss","modules/_init.scss","modules/_layout.scss","modules/_text.scss","modules/_titles.scss","modules/_list-of-abbr.scss","modules/_followingNotes.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file diff --git a/css/style.scss b/css/style.scss index 59fbe83..e90d3a3 100644 --- a/css/style.scss +++ b/css/style.scss @@ -4,5 +4,6 @@ @import 'modules/layout'; @import 'modules/text'; @import 'modules/titles'; -@import 'modules/footnotes'; -@import 'modules/list-of-abbr'; \ No newline at end of file +// @import 'modules/footnotes'; +@import 'modules/list-of-abbr'; +@import 'modules/followingNotes'; \ No newline at end of file diff --git a/csspageweaver/manifest.json b/csspageweaver/manifest.json index 5bd177d..dd86589 100644 --- a/csspageweaver/manifest.json +++ b/csspageweaver/manifest.json @@ -1,5 +1,12 @@ { - "plugins": ["baseline","grid","marginBox","imposition","spread","previewPage","reloadInPlace","inlineNotes"], + "plugins": [ + "baseline", + "grid", + "marginBox", + "imposition","spread","previewPage","reloadInPlace", + "inlineNotes", + "followingNotes" + ], "pluginsParameters":{}, "css": [ "css/style.css" @@ -7,7 +14,12 @@ "pluginsParameters": { "inlineNotes": { "input": ".footnote-ref", - "containerNotes": ".footnotes" + "containerNotes": "#footnotes", + "newClass": "inline-note" + }, + "followingNotes": { + "selector": ".inline-note", + "reset": ".chapter" } }, "hook": [ diff --git a/csspageweaver/plugins/followingNotes/.gitignore b/csspageweaver/plugins/followingNotes/.gitignore new file mode 100644 index 0000000..496ee2c --- /dev/null +++ b/csspageweaver/plugins/followingNotes/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/csspageweaver/plugins/followingNotes/config.json b/csspageweaver/plugins/followingNotes/config.json new file mode 100644 index 0000000..bc66d35 --- /dev/null +++ b/csspageweaver/plugins/followingNotes/config.json @@ -0,0 +1,8 @@ +{ + "name": "FollowingNotes", + "description": "Create followingNotes with call & markers", + "author": ["Julie Blanc"], + "licence": "MIT", + "version": "1.0", + "hook": "followingNotes.js" +} diff --git a/csspageweaver/plugins/followingNotes/followingNotes.js b/csspageweaver/plugins/followingNotes/followingNotes.js new file mode 100644 index 0000000..15b4c17 --- /dev/null +++ b/csspageweaver/plugins/followingNotes/followingNotes.js @@ -0,0 +1,220 @@ +/** + * @name FollowingNotes + * @author Julie Blanc + * @see { @link https://gitlab.com/csspageweaver/plugins/followingNotes/ } + */ + +import { Handler } from '/csspageweaver/lib/paged.esm.js'; + +export default class followingNotes extends Handler { + + constructor(chunker, polisher, caller) { + super(chunker, polisher, caller); + this.parameters = cssPageWeaver.features.followingNotes.parameters; + this.notesClass = this.parameters?.selector || ".inline-note"; + this.newNotesClass = this.parameters?.newNotesClass || "following-note"; + this.reset = this.parameters?.reset; + this.align = this.parameters?.align; + this.followingNoteOverflow = new Set(); + } + + beforeParsed(content) { + + console.log("floatnotes"); + + let newNotesClass = this.newNotesClass; + resetCounter(content, this.reset, this.notesClass); + createCallandMarker(content, this.notesClass, newNotesClass); + + + let notes = content.querySelectorAll(this.notesClass); + notes.forEach(function (note) { + let paragraph = note.closest("p"); + if (!paragraph) return; + + let container = paragraph.nextElementSibling; + if (!container || !container.classList.contains("container-following-note")) { + container = document.createElement("div"); + container.classList.add("container-following-note"); + paragraph.after(container); + } + + container.appendChild(note); + }); + + + } + + + +} + + + + +/// FUNCTIONS ----------------------------------------------------- + + +// RESET COUNTER + +function resetCounter(content, reset, notesClass){ + + if(reset && reset != ""){ + const elements = content.querySelectorAll(reset + ", " + notesClass); + let resetEligible = false; + elements.forEach(element => { + if (element.matches(reset)) { + resetEligible = true; + } else if (resetEligible && element.matches(notesClass)) { + element.dataset.resetCounterFollowingNote = true; + resetEligible = false; + } + }); + } + +} + + +// CALL & MARKER +function createCallandMarker(content, notesClass, newNotesClass){ + + let notes = content.querySelectorAll(notesClass); + let resetNum = 0; + + notes.forEach(function (note, index) { + + if (note.dataset.resetCounterFollowingNote === "true") { + resetNum = index; + } + let num = index + 1 - resetNum; + + note.classList.add(newNotesClass); + note.dataset.counterNote = num; + + // call + let ref_note = document.createElement('span'); + ref_note.className = newNotesClass + "_call"; + ref_note.dataset.counterNote = num; + ref_note.innerHTML = num; + + // wrap preceding word + call in .wrapper__note-call + let wrapper = document.createElement('span'); + wrapper.className = 'wrapper__note-call'; + + let prevSibling = note.previousSibling; + if (prevSibling && prevSibling.nodeType === Node.TEXT_NODE) { + let text = prevSibling.textContent; + let m = text.match(/^([\s\S]*\s)(\S+\s*)$/); + if (m) { + let before = m[1]; + let extracted = m[2]; + + // Si le dernier mot extrait est uniquement », prendre aussi le mot d'avant + if (/^»\s*$/.test(extracted)) { + let m2 = before.trimEnd().match(/^([\s\S]*\s|)(\S+)$/); + if (m2) { + let spaceBetween = before.slice(m2[1].length + m2[2].length); + before = m2[1]; + extracted = m2[2] + spaceBetween + extracted; + } + } + + prevSibling.textContent = before; + wrapper.appendChild(document.createTextNode(extracted)); + } else { + prevSibling.textContent = ''; + wrapper.appendChild(document.createTextNode(text)); + } + } + + wrapper.appendChild(ref_note); + note.after(wrapper); + + // marker + content note wrapped in body_note + let marker_note = document.createElement('span'); + marker_note.className = newNotesClass + "_marker"; + //marker_note.innerHTML = num + ". "; + marker_note.innerHTML = num; + + let body_note = document.createElement('div'); + body_note.className = 'body_note'; + while (note.firstChild) { + body_note.appendChild(note.firstChild); + } + body_note.prepend(marker_note); + note.appendChild(body_note); + + }); + + } + + + + +// MARGINS + +function marginNoteTop(elem) { + let marginTop = parseInt(window.getComputedStyle(elem).marginTop, 10) + return marginTop; +} + +function marginNoteBottom(elem) { + let marginBottom = parseInt(window.getComputedStyle(elem).marginBottom, 10) + return marginBottom; +} + +function biggestMargin(a, b) { + let margin; + let marginBottom = marginNoteBottom(a); + let marginTop = marginNoteTop(b); + if (marginBottom > marginTop) { + margin = marginBottom; + } else { + margin = marginTop; + } + return margin; +} + + + +function checkOverflownote(notesClass, pageElement, maxHeight, arrayOverflow, container) { + let notes = pageElement.querySelectorAll(notesClass); + + let notesHeightAll = []; + + for (let n = 0; n < notes.length; ++n) { + + // Add height of the notes to array notesHeightAll + let noteHeight = notes[n].offsetHeight; + notesHeightAll.push(noteHeight); + // Add margins of the notes to array notesHeightAll + if (n >= 1) { + let margins = biggestMargin(notes[n - 1], notes[n]); + notesHeightAll.push(margins); + } + } + + // If notes on page + if (notesHeightAll.length > 0) { + + // Calculate if all notes fit on the page; + let reducer = (accumulator, currentValue) => accumulator + currentValue; + let allHeight = notesHeightAll.reduce(reducer); + let paddingTop = getComputedStyle(container).paddingTop; + let paddingContainer = parseInt(paddingTop); + + let totalHeight = allHeight + paddingContainer; + + if (totalHeight > maxHeight) { + + let lastNote = notes[notes.length - 1]; + arrayOverflow.add(lastNote); + lastNote.remove(); + + checkOverflownote(notesClass, pageElement, maxHeight, arrayOverflow, container); + + } + + + } +} diff --git a/csspageweaver/plugins/inlineNotes/README.md b/csspageweaver/plugins/inlineNotes/README.md index 72c4526..8f2fca1 100644 --- a/csspageweaver/plugins/inlineNotes/README.md +++ b/csspageweaver/plugins/inlineNotes/README.md @@ -35,7 +35,7 @@ In `manifest.json`, you can modify/add some parameters: // parameters of other plugins ... "inlineNotes": { "input": ".footnote-ref", - "containerNotes": ".footnotes" + "containerNotes": "#footnotes" } }, ``` @@ -54,7 +54,7 @@ Before : Among his many contributions to printing are: the invention of a process for mass-producing movable type; the use of oil-based ink for printing books; 1 adjustable molds; mechanical movable type; and the use of a wooden printing press similar to the agricultural screw presses of the period.

-