Add page-break option

This commit is contained in:
Evian-Zhang 2021-03-12 14:00:29 +08:00
parent 536873ca26
commit e78a8471c7
3 changed files with 14 additions and 1 deletions

View File

@ -224,6 +224,7 @@ Available configuration options for the `[output.html.print]` table:
- **enable:** Enable print support. When `false`, all print support will not be
rendered. Defaults to `true`.
- **page-break** Insert page breaks between chapters. Defaults to `true`.
Available configuration options for the `[output.html.fold]` table:
@ -292,6 +293,7 @@ input-404 = "not-found.md"
[output.html.print]
enable = true
page-break = true
[output.html.fold]
enable = false

View File

@ -580,11 +580,16 @@ impl HtmlConfig {
pub struct Print {
/// Whether print support is enabled.
pub enable: bool,
/// Insert page breaks between chapters. Default: `true`.
pub page_break: bool,
}
impl Default for Print {
fn default() -> Self {
Self { enable: true }
Self {
enable: true,
page_break: true,
}
}
}

View File

@ -45,6 +45,12 @@ impl HtmlHandlebars {
ctx.html_config.curly_quotes,
Some(&path),
);
if !ctx.is_index && ctx.html_config.print.page_break {
// Add page break between chapters
// See https://developer.mozilla.org/en-US/docs/Web/CSS/break-before and https://developer.mozilla.org/en-US/docs/Web/CSS/page-break-before
// Add both two CSS properties because of the compatibility issue
print_content.push_str(r#"<div id="chapter_begin" style="break-before: page; page-break-before: always;"></div>"#);
}
print_content.push_str(&fixed_content);
// Update the context with data for this file