style tweak: Extend inpage footnotes (#13554)
Some checks failed
macos / macOS 13 x86-64 🔨15.2 🎯10.15 (push) Has been cancelled
macos / macOS 14 ARM64 🔨15.4 🎯11.0 (push) Has been cancelled

This commit is contained in:
Benedikt McMullin
2025-05-25 13:30:59 +02:00
committed by GitHub
parent 33aa1b6dc4
commit 4116c6d35b
2 changed files with 60 additions and 2 deletions

View File

@@ -879,6 +879,7 @@ You can then paste it here with long-press in the text box.]]), true},
{ _("Private CSS properties"), {
{ "-cr-hint: footnote-inpage;", _("When set on a block element containing the target id of a href, this block element will be shown as an in-page footnote.")},
{ "-cr-hint: extend-footnote-inpage;", _("When set on a block element following a block element marked `footnote-inpage`, this block will be shown as part of the same in-page footnote as the previous element. Can be chained across multiple elements following an in-page footnote.")},
{ "-cr-hint: non-linear;", _("Can be set on some specific DocFragments (e.g. DocFragment[id$=_16]) to ignore them in the linear pages flow.")},
{ "-cr-hint: non-linear-combining;", _("Can be set on contiguous footnote blocks to ignore them in the linear pages flow.")},
{ "-cr-hint: toc-level1;", _("When set on an element, its text can be used to build the alternative table of contents. toc-level2 to toc-level6 can be used for nested chapters.")},

View File

@@ -943,6 +943,11 @@ This only works with footnotes that have specific attributes set by the publishe
-cr-only-if: -fb2-document;
-cr-hint: footnote-inpage;
margin: 0 !important;
}
/* Also applies to extended footnotes */
*, autoBoxing {
-cr-hint: late;
-cr-only-if: inpage-footnote;
font-size: 0.8rem !important;
}
]],
@@ -976,7 +981,12 @@ ol.references > li {
-cr-hint: footnote-inpage;
list-style-position: -cr-outside;
margin: 0 !important;
font-size: 0.8rem !important;
}
/* Also applies to extended footnotes */
*, autoBoxing {
-cr-hint: late;
-cr-only-if: inpage-footnote;
font-size: 0.8rem !important;
}
/* hide backlinks */
ol.references > li > .noprint { display: none; }
@@ -1026,11 +1036,58 @@ This tweak can be duplicated as a user style tweak when books contain footnotes
{
-cr-hint: footnote-inpage;
margin: 0 !important;
font-size: 0.8rem !important;
}
/* Also applies to extended footnotes */
*, autoBoxing {
-cr-hint: late;
-cr-only-if: inpage-footnote;
font-size: 0.8rem !important;
}
]],
separator = true,
},
{
title = _("In-page footnote extension"),
{
id = "extend-footnote-inpage_any",
conflicts_with = function(id) return util.stringStartsWith(id, "extend-footnote-inpage_") end,
title = _("Extend footnote content until next entry"),
description = _([[
Extend in-page footnotes shown at the bottom of pages to include text up to the next footnote.
This might be needed when books don't correctly mark all text that belongs to the footnote.]]),
-- :where() and priority are needed to ensure lower specificity than
-- any other tweaks that check -cr-only-if: (inside-)inpage-footnote
priority = -1,
css = [[
:where(*, autoBoxing) {
-cr-hint: late;
-cr-only-if: following-inpage-footnote -inpage-footnote;
-cr-hint: extend-footnote-inpage;
margin: 0 !important;
}
]],
},
{
id = "extend-footnote-inpage_until_heading",
conflicts_with = function(id) return util.stringStartsWith(id, "extend-footnote-inpage_") end,
title = _("Extend footnote content until next header"),
description = _([[
Extend in-page footnotes shown at the bottom of pages to include text up to the next footnote or heading.
This might be needed when books don't correctly mark all text that belongs to the footnote.
This tweak can be duplicated as a user style tweak when a book contains other elements between footnotes that should not be shown in-page.]]),
-- :where() and priority are needed to ensure lower specificity than
-- any other tweaks that check -cr-only-if: (inside-)inpage-footnote
priority = -1,
css = [[
:where(*:not(h1, h2, h3, h4, h5, h6), autoBoxing) {
-cr-hint: late;
-cr-only-if: following-inpage-footnote -inpage-footnote;
-cr-hint: extend-footnote-inpage;
margin: 0 !important;
}
]],
},
},
-- Next tweaks, with the help of crengine, will apply only to elements that were
-- matched by previous tweaks that have set them the "footnote-inpage" cr-hint,
-- and their children (their content).