summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-04-24 21:58:45 +0200
committerLaurenz <laurmaedje@gmail.com>2022-04-24 21:58:45 +0200
commit7163b4a6c57c99fda085bf9b364c82bdba8ea698 (patch)
tree935d953e3019b602e814e882bdedf6fe6b72dbda /src
parent2f33ad0e0aa3d1f4a949025597bf1ea36256831f (diff)
Soft pagebreak
Diffstat (limited to 'src')
-rw-r--r--src/library/layout/page.rs5
-rw-r--r--src/model/content.rs8
2 files changed, 7 insertions, 6 deletions
diff --git a/src/library/layout/page.rs b/src/library/layout/page.rs
index 13583f09..38ba53e9 100644
--- a/src/library/layout/page.rs
+++ b/src/library/layout/page.rs
@@ -164,8 +164,9 @@ pub struct PagebreakNode;
#[node]
impl PagebreakNode {
- fn construct(_: &mut Context, _: &mut Args) -> TypResult<Content> {
- Ok(Content::Pagebreak)
+ fn construct(_: &mut Context, args: &mut Args) -> TypResult<Content> {
+ let soft = args.named("soft")?.unwrap_or(false);
+ Ok(Content::Pagebreak(soft))
}
}
diff --git a/src/model/content.rs b/src/model/content.rs
index 4077f696..04d5fc5f 100644
--- a/src/model/content.rs
+++ b/src/model/content.rs
@@ -63,7 +63,7 @@ pub enum Content {
/// An item in an ordered list.
Enum(ListItem),
/// A page break.
- Pagebreak,
+ Pagebreak(bool),
/// A page node.
Page(PageNode),
/// A node that can be realized with styles.
@@ -262,7 +262,7 @@ impl Debug for Content {
f.write_str(". ")?;
item.body.fmt(f)
}
- Self::Pagebreak => f.pad("Pagebreak"),
+ Self::Pagebreak(soft) => write!(f, "Pagebreak({soft})"),
Self::Page(page) => page.fmt(f),
Self::Show(node) => {
f.write_str("Show(")?;
@@ -463,8 +463,8 @@ impl<'a> Builder<'a> {
staged: vec![],
});
}
- Content::Pagebreak => {
- self.finish_page(ctx, true, true, styles)?;
+ Content::Pagebreak(soft) => {
+ self.finish_page(ctx, !soft, !soft, styles)?;
}
Content::Page(page) => {
self.finish_page(ctx, false, false, styles)?;