sectionedFootnotes

This commit is contained in:
Julie Blanc 2026-01-20 21:12:05 +01:00
parent fb365c2f05
commit 35c6271137
13 changed files with 251 additions and 146 deletions

View file

@ -1,48 +1,88 @@
@page { // @page {
@footnote { // @footnote {
float: bottom; // float: bottom;
footnote-policy: auto; // footnote-policy: auto;
} // }
} // }
.pagedjs_footnote_content{ // .pagedjs_footnote_content{
padding-top: calc(var(--baseline)*1); // padding-top: calc(var(--baseline)*1);
} // }
.inline-note { // .inline-note {
float: footnote; // float: footnote;
footnote-policy: auto; // footnote-policy: auto;
font-size: 9px; // font-size: 9px;
line-height: calc(var(--baseline)*0.8); // line-height: calc(var(--baseline)*0.8);
padding-left: var(--indent); // padding-left: var(--indent);
position: relative; // position: relative;
// font-weight: 100; // // font-weight: 100;
&::marker{ // &::marker{
display: none; // display: none;
content: ""; // content: "";
} // }
} // }
[data-counter-note]{ // [data-counter-note]{
&::before{ // &::before{
content: attr(data-counter-note) "."; // content: attr(data-counter-note) ".";
position: absolute; // position: absolute;
// left: calc(var(--indent)*-1); // left: 0px;
left: 0px; // }
} // }
}
[data-footnote-call]{ // [data-footnote-call]{
font-size: 9px; // font-size: 9px;
} // }
.footnote-ref{ .footnote-ref{
font-family: var(--font-title); font-family: var(--font-title);
line-height: 0; line-height: 0;
font-size: 9px; font-size: var(--fs-small);
font-weight: 500; font-weight: 500;
}
#footnotes{
break-before: right;
.title-part{
font-family: var(--font-title);
font-size: 1.1rem;
font-weight: 500;
line-height: calc(var(--baseline)*1.2);
margin-top: calc(var(--baseline)*2);
padding-bottom: calc(var(--baseline)*1);
padding-right: 2ch;
padding-left: 2ch;
text-align: center;
text-wrap: balance;
&::before{
content: attr(data-part-number) ". "
}
}
li{
font-size: var(--fs-small);
// &::marker{
// font-family: var(--font-title);
// font-weight: 500;
// }
}
.footnote-back{
display: none;
}
}
[data-id="footnotes"][data-split-from] > :first-child {
margin-top: 0;
} }

View file

@ -9,8 +9,8 @@
marks: crop; marks: crop;
} }
@page:left { @page:left {
margin-left: 22mm; margin-left: 18mm;
margin-right: 22mm; margin-right: 26mm;
@bottom-left { @bottom-left {
content: counter(page); content: counter(page);
font-family: var(--font-title); font-family: var(--font-title);
@ -24,8 +24,8 @@
// } // }
} }
@page:right { @page:right {
margin-left: 32mm; margin-left: 26mm;
margin-right: 22mm; margin-right: 18mm;
@bottom-right { @bottom-right {
content: counter(page); content: counter(page);
font-family: var(--font-title); font-family: var(--font-title);
@ -44,7 +44,7 @@
transform: rotate(90deg); transform: rotate(90deg);
text-align: left; text-align: left;
position: relative; position: relative;
left: 18mm; left: 14mm;
padding-left: 5px; padding-left: 5px;
} }

View file

@ -39,8 +39,8 @@ ol[type="1"] + p{
blockquote{ blockquote{
padding-left: calc(var(--indent)*1); padding-left: calc(var(--indent)*1);
font-size: 9px; font-size: var(--fs-small);
line-height: calc(var(--baseline)*0.75); // line-height: calc(var(--baseline)*0.75);
margin-top: calc(var(--baseline)*0.5); margin-top: calc(var(--baseline)*0.5);
margin-bottom: calc(var(--baseline)*0.5); margin-bottom: calc(var(--baseline)*0.5);
@ -55,12 +55,8 @@ blockquote + ol + p{
.these{ .these{
font-family: var(--font-title);
font-family: var(--font-title);
// color: red;
margin-bottom: calc(var(--baseline)*1); margin-bottom: calc(var(--baseline)*1);
} }

View file

@ -5,6 +5,7 @@
h1, h2, h3 , h4{ h1, h2, h3 , h4{
break-inside: avoid; break-inside: avoid;
break-after: avoid; break-after: avoid;
text-wrap: balance;
/* hack for avoiding break-after */ /* hack for avoiding break-after */
margin-bottom: calc(var(--baseline)*-3); margin-bottom: calc(var(--baseline)*-3);
@ -18,6 +19,7 @@
h5, h6 { h5, h6 {
break-inside: avoid; break-inside: avoid;
break-after: avoid; break-after: avoid;
text-wrap: balance;
/* hack for avoiding break-after */ /* hack for avoiding break-after */
margin-bottom: calc(var(--baseline)*-2); margin-bottom: calc(var(--baseline)*-2);
@ -70,11 +72,9 @@
font-weight: 500; font-weight: 500;
text-transform: uppercase; text-transform: uppercase;
line-height: calc(var(--baseline)*1.2); line-height: calc(var(--baseline)*1.2);
// text-align: center;
position: relative; position: relative;
margin-top: calc(var(--baseline)*1 + 6px); margin-top: calc(var(--baseline)*1 + 6px);
padding-bottom: calc(var(--baseline)*1); padding-bottom: calc(var(--baseline)*1);
// padding-left: 2ch;
padding-right: 2ch; padding-right: 2ch;
&::before{ &::before{
display: block; display: block;

View file

@ -3,6 +3,7 @@
--font-title: 'Allium Rounded', sans-serif; --font-title: 'Allium Rounded', sans-serif;
--font-sans: 'Allium Rounded', sans-serif; --font-sans: 'Allium Rounded', sans-serif;
--font-size: 11px; --font-size: 11px;
--fs-small: 9.5px;
--fs-num: 14px; --fs-num: 14px;
--baseline: 16px; --baseline: 16px;

View file

@ -4,6 +4,7 @@
--font-title: "Allium Rounded", sans-serif; --font-title: "Allium Rounded", sans-serif;
--font-sans: "Allium Rounded", sans-serif; --font-sans: "Allium Rounded", sans-serif;
--font-size: 11px; --font-size: 11px;
--fs-small: 9.5px;
--fs-num: 14px; --fs-num: 14px;
--baseline: 16px; --baseline: 16px;
--indent: 26px; --indent: 26px;
@ -38,8 +39,8 @@ body {
marks: crop; marks: crop;
} }
@page :left { @page :left {
margin-left: 22mm; margin-left: 18mm;
margin-right: 22mm; margin-right: 26mm;
@bottom-left { @bottom-left {
content: counter(page); content: counter(page);
font-family: var(--font-title); font-family: var(--font-title);
@ -48,8 +49,8 @@ body {
} }
} }
@page :right { @page :right {
margin-left: 32mm; margin-left: 26mm;
margin-right: 22mm; margin-right: 18mm;
@bottom-right { @bottom-right {
content: counter(page); content: counter(page);
font-family: var(--font-title); font-family: var(--font-title);
@ -67,7 +68,7 @@ body {
transform: rotate(90deg); transform: rotate(90deg);
text-align: left; text-align: left;
position: relative; position: relative;
left: 18mm; left: 14mm;
padding-left: 5px; padding-left: 5px;
} }
} }
@ -213,8 +214,7 @@ ol[type="1"] + p {
blockquote { blockquote {
padding-left: calc(var(--indent) * 1); padding-left: calc(var(--indent) * 1);
font-size: 9px; font-size: var(--fs-small);
line-height: calc(var(--baseline) * 0.75);
margin-top: calc(var(--baseline) * 0.5); margin-top: calc(var(--baseline) * 0.5);
margin-bottom: calc(var(--baseline) * 0.5); margin-bottom: calc(var(--baseline) * 0.5);
} }
@ -338,6 +338,7 @@ ol[type="1"]{
break-inside: avoid; break-inside: avoid;
-moz-column-break-after: avoid; -moz-column-break-after: avoid;
break-after: avoid; break-after: avoid;
text-wrap: balance;
/* hack for avoiding break-after */ /* hack for avoiding break-after */
margin-bottom: calc(var(--baseline) * -3); margin-bottom: calc(var(--baseline) * -3);
} }
@ -351,6 +352,7 @@ ol[type="1"]{
break-inside: avoid; break-inside: avoid;
-moz-column-break-after: avoid; -moz-column-break-after: avoid;
break-after: avoid; break-after: avoid;
text-wrap: balance;
/* hack for avoiding break-after */ /* hack for avoiding break-after */
margin-bottom: calc(var(--baseline) * -2); margin-bottom: calc(var(--baseline) * -2);
} }
@ -455,46 +457,43 @@ ol[type="1"]{
margin-top: 0; margin-top: 0;
} }
@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: 9px;
line-height: calc(var(--baseline) * 0.8);
padding-left: var(--indent);
position: relative;
}
.inline-note::marker {
display: none;
content: "";
}
[data-counter-note]::before {
content: attr(data-counter-note) ".";
position: absolute;
left: 0px;
}
[data-footnote-call] {
font-size: 9px;
}
.footnote-ref { .footnote-ref {
font-family: var(--font-title); font-family: var(--font-title);
line-height: 0; line-height: 0;
font-size: 9px; font-size: var(--fs-small);
font-weight: 500; font-weight: 500;
} }
#footnotes {
-moz-column-break-before: right;
break-before: right;
}
#footnotes .title-part {
font-family: var(--font-title);
font-size: 1.1rem;
font-weight: 500;
line-height: calc(var(--baseline) * 1.2);
margin-top: calc(var(--baseline) * 2);
padding-bottom: calc(var(--baseline) * 1);
padding-right: 2ch;
padding-left: 2ch;
text-align: center;
text-wrap: balance;
}
#footnotes .title-part::before {
content: attr(data-part-number) ". ";
}
#footnotes li {
font-size: var(--fs-small);
}
#footnotes .footnote-back {
display: none;
}
[data-id=footnotes][data-split-from] > :first-child {
margin-top: 0;
}
#section__list-of-abbr { #section__list-of-abbr {
display: none; display: none;
color: red; color: red;

View file

@ -1 +1 @@
{"version":3,"sources":["style.css","modules/_var.scss","modules/_init.scss","modules/_layout.scss","modules/_text.scss","modules/_titles-counters.scss","modules/_titles.scss","modules/_footnotes.scss","modules/_list-of-abbr.scss"],"names":[],"mappings":"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","file":"style.css"} {"version":3,"sources":["style.css","modules/_var.scss","modules/_init.scss","modules/_layout.scss","modules/_text.scss","modules/_titles-counters.scss","modules/_titles.scss","modules/_footnotes.scss","modules/_list-of-abbr.scss"],"names":[],"mappings":"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","file":"style.css"}

View file

@ -11,8 +11,7 @@
} }
}, },
"hook": [ "hook": [
"/js/custom-handler-example-1.js", "/js/sectionedFootnotes.js"
"/js/custom-handler-example-2.js"
] ]
} }

View file

@ -1,21 +0,0 @@
import { Handler } from '/csspageweaver/lib/paged.esm.js';
export default class myCustomHandler1 extends Handler {
constructor(chunker, polisher, caller) {
super(chunker, polisher, caller);
}
beforeParsed(content){
// let h2 = content.querySelectorAll('h2');
// h2.forEach( h2 => {
// h2.insertAdjacentHTML("afterbegin", '🍄');
// });
}
afterParsed(parsed) {
console.info("%c [CSS Page Weaver] Example custom handler 1 with afterParsed hook (see js/custom-handler-example-1.js", 'color: green;');
}
}

View file

@ -1,16 +0,0 @@
import { Handler } from '/csspageweaver/lib/paged.esm.js';
export default class myCustomHandler2 extends Handler {
constructor(chunker, polisher, caller) {
super(chunker, polisher, caller);
}
afterPageLayout(pageElement, page, breakToken) {
if(pageElement.id == "page-1"){
console.info("%c [CSS Page Weaver] Example custom handler 2 with afterPageLayout hook (see js/custom-handler-example-2.js", 'color: green;')
}
}
}

124
js/sectionedFootnotes.js Normal file
View file

@ -0,0 +1,124 @@
import { Handler } from '/csspageweaver/lib/paged.esm.js';
export default class SectionedFootnotes extends Handler {
constructor(chunker, polisher, caller) {
super(chunker, polisher, caller);
}
beforeParsed(content){
const sectionContent = content.querySelector('#section__content');
const footnotesSection = content.querySelector('#footnotes');
if (!sectionContent || !footnotesSection) {
console.warn("Section content ou footnotes non trouvé");
return;
}
const originalOl = footnotesSection.querySelector('ol');
if (!originalOl) {
console.warn("Liste de footnotes non trouvée");
return;
}
const allH1s = sectionContent.querySelectorAll('h1');
const noteToPartMap = new Map();
allH1s.forEach((h1, partIndex) => {
// Trouver le prochain h1 ou la fin de la section
const nextH1 = allH1s[partIndex + 1];
// Récupérer tous les éléments entre ce h1 et le suivant
let current = h1.nextElementSibling;
while (current && current !== nextH1) {
// Chercher les footnote-ref dans cet élément
const refs = current.querySelectorAll('.footnote-ref');
refs.forEach(ref => {
const href = ref.getAttribute('href');
if (href && href.startsWith('#fn')) {
const noteNum = href.replace('#fn', '');
noteToPartMap.set(noteNum, partIndex);
}
});
if (current.classList && current.classList.contains('footnote-ref')) {
const href = current.getAttribute('href');
if (href && href.startsWith('#fn')) {
const noteNum = href.replace('#fn', '');
noteToPartMap.set(noteNum, partIndex);
}
}
current = current.nextElementSibling;
}
});
const notesByPart = new Map();
const allNotes = originalOl.querySelectorAll('li[id^="fn"]');
allNotes.forEach(note => {
const noteId = note.getAttribute('id');
const noteNum = noteId.replace('fn', '');
const partIndex = noteToPartMap.get(noteNum);
if (partIndex !== undefined) {
if (!notesByPart.has(partIndex)) {
notesByPart.set(partIndex, []);
}
notesByPart.get(partIndex).push({
num: parseInt(noteNum),
element: note
});
}
});
const sortedParts = Array.from(notesByPart.keys()).sort((a, b) => a - b);
// Vider la section footnotes (garder le hr s'il existe)
const hr = footnotesSection.querySelector('hr');
footnotesSection.innerHTML = '';
if (hr) {
footnotesSection.appendChild(hr);
}
// Add title section
const mainTitle = document.createElement('h1');
mainTitle.textContent = 'Notizen';
footnotesSection.appendChild(mainTitle);
sortedParts.forEach(partIndex => {
const h1 = allH1s[partIndex];
const notes = notesByPart.get(partIndex);
notes.sort((a, b) => a.num - b.num);
if (notes.length > 0) {
// Upper-alpha counter
const titlePart = document.createElement('h2');
titlePart.className = 'title-part';
const letter = String.fromCharCode(65 + partIndex); // 65 = 'A'
titlePart.setAttribute('data-part-number', letter);
titlePart.textContent = h1.textContent.trim();
footnotesSection.appendChild(titlePart);
// New ol with new start
const newOl = document.createElement('ol');
const firstNoteNum = notes[0].num;
newOl.setAttribute('start', firstNoteNum);
notes.forEach(noteData => {
newOl.appendChild(noteData.element.cloneNode(true));
});
footnotesSection.appendChild(newOl);
}
});
sectionContent.parentNode.insertBefore(footnotesSection, sectionContent.nextSibling);
}
}

View file

@ -1,11 +0,0 @@
function Span(el)
local cs = el.attributes['custom-style']
if cs then
local class = cs
:lower()
:gsub("%s+", "-")
:gsub("[^a-z0-9%-]", "")
el.classes:insert("style-" .. class)
end
return el
end

View file

@ -1,6 +0,0 @@
function Para(el)
if el.style then
io.stderr:write("STYLE: " .. el.style .. "\n")
end
return el
end