From ecb5543985cc0788d9c01e8c2e28d8ca6d8e19b6 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Wed, 15 Mar 2023 12:33:38 +0100 Subject: [PATCH] Node links --- Cargo.lock | 2 +- library/src/layout/hide.rs | 2 +- library/src/meta/bibliography.rs | 245 +++++++++++++++++++------------ library/src/meta/figure.rs | 2 +- library/src/meta/heading.rs | 2 +- library/src/meta/link.rs | 2 +- library/src/meta/outline.rs | 24 +-- library/src/meta/reference.rs | 7 +- library/src/shared/ext.rs | 8 +- src/doc.rs | 34 ++++- src/export/pdf/mod.rs | 3 + src/export/pdf/page.rs | 37 +++-- src/export/render.rs | 2 +- src/ide/analyze.rs | 5 +- src/ide/jump.rs | 22 ++- src/model/typeset.rs | 94 +++++++----- tests/ref/meta/bibliography.png | Bin 38227 -> 86422 bytes tests/typ/meta/bibliography.typ | 5 +- 18 files changed, 306 insertions(+), 190 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9547e3ac1..b0371e780 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -444,7 +444,7 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hayagriva" version = "0.1.1" -source = "git+https://github.com/typst/hayagriva#992389b23f9765198ee8d3f1818d6dbdc8f46b60" +source = "git+https://github.com/typst/hayagriva#754efb7e1034bcd4d4f1366e432197edbbfb9ed5" dependencies = [ "biblatex", "chrono", diff --git a/library/src/layout/hide.rs b/library/src/layout/hide.rs index e939e6c35..1d87d3e8b 100644 --- a/library/src/layout/hide.rs +++ b/library/src/layout/hide.rs @@ -24,6 +24,6 @@ pub struct HideNode { impl Show for HideNode { fn show(&self, _: &mut Vt, _: StyleChain) -> SourceResult { - Ok(self.body().styled(MetaNode::set_data(vec![Meta::Hidden]))) + Ok(self.body().styled(MetaNode::set_data(vec![Meta::Hide]))) } } diff --git a/library/src/meta/bibliography.rs b/library/src/meta/bibliography.rs index 65bdafb6a..8549624af 100644 --- a/library/src/meta/bibliography.rs +++ b/library/src/meta/bibliography.rs @@ -5,14 +5,14 @@ use std::sync::Arc; use ecow::EcoVec; use hayagriva::io::{BibLaTeXError, YamlBibliographyError}; -use hayagriva::style::{self, Citation, Database, DisplayString, Formatting}; -use typst::font::{FontStyle, FontWeight}; +use hayagriva::style::{self, Brackets, Citation, Database, DisplayString, Formatting}; +use hayagriva::Entry; use super::LocalName; -use crate::layout::{GridNode, ParNode, Sizing, TrackSizings, VNode}; +use crate::layout::{BlockNode, GridNode, ParNode, Sizing, TrackSizings, VNode}; use crate::meta::HeadingNode; use crate::prelude::*; -use crate::text::{Hyphenate, TextNode}; +use crate::text::TextNode; /// A bibliography / reference listing. /// @@ -48,7 +48,7 @@ pub struct BibliographyNode { impl BibliographyNode { /// Find the document's bibliography. pub fn find(introspector: Tracked) -> StrResult { - let mut iter = introspector.locate(Selector::node::()).into_iter(); + let mut iter = introspector.query(Selector::node::()).into_iter(); let Some(node) = iter.next() else { return Err("the document does not contain a bibliography".into()); }; @@ -63,7 +63,7 @@ impl BibliographyNode { /// Whether the bibliography contains the given key. pub fn has(vt: &Vt, key: &str) -> bool { vt.introspector - .locate(Selector::node::()) + .query(Selector::node::()) .into_iter() .flat_map(|node| load(vt.world(), &node.to::().unwrap().path())) .flatten() @@ -98,24 +98,19 @@ impl Synthesize for BibliographyNode { impl Show for BibliographyNode { fn show(&self, vt: &mut Vt, styles: StyleChain) -> SourceResult { const COLUMN_GUTTER: Em = Em::new(0.65); - const ROW_GUTTER: Em = Em::new(1.0); const INDENT: Em = Em::new(1.5); let works = match Works::new(vt) { Ok(works) => works, - Err(error) => { - if vt.locatable() { - bail!(self.span(), error) - } else { - return Ok(TextNode::packed("bibliography")); - } - } + Err(error) if vt.locatable() => bail!(self.span(), error), + Err(_) => Arc::new(Works::default()), }; let mut seq = vec![]; if let Some(title) = self.title(styles) { let title = title.clone().unwrap_or_else(|| { TextNode::packed(self.local_name(TextNode::lang_in(styles))) + .spanned(self.span()) }); seq.push( @@ -126,6 +121,7 @@ impl Show for BibliographyNode { ); } + let row_gutter = BlockNode::below_in(styles).amount(); if works.references.iter().any(|(prefix, _)| prefix.is_some()) { let mut cells = vec![]; for (prefix, reference) in &works.references { @@ -133,19 +129,18 @@ impl Show for BibliographyNode { cells.push(reference.clone()); } + seq.push(VNode::new(row_gutter).with_weakness(3).pack()); seq.push( GridNode::new(cells) .with_columns(TrackSizings(vec![Sizing::Auto; 2])) .with_column_gutter(TrackSizings(vec![COLUMN_GUTTER.into()])) - .with_row_gutter(TrackSizings(vec![ROW_GUTTER.into()])) + .with_row_gutter(TrackSizings(vec![row_gutter.into()])) .pack(), ); } else { let mut entries = vec![]; - for (i, (_, reference)) in works.references.iter().enumerate() { - if i > 0 { - entries.push(VNode::new(ROW_GUTTER.into()).with_weakness(1).pack()); - } + for (_, reference) in &works.references { + entries.push(VNode::new(row_gutter).with_weakness(3).pack()); entries.push(reference.clone()); } @@ -204,13 +199,17 @@ impl BibliographyStyle { #[node(Locatable, Synthesize, Show)] pub struct CiteNode { /// The citation key. - #[required] - pub key: EcoString, + #[variadic] + pub keys: Vec, /// A supplement for the citation such as page or chapter number. #[positional] pub supplement: Option, + /// Whether the citation should include brackets. + #[default(true)] + pub brackets: bool, + /// The citation style. /// /// When set to `{auto}`, automatically picks the preferred citation style @@ -221,6 +220,7 @@ pub struct CiteNode { impl Synthesize for CiteNode { fn synthesize(&mut self, _: &Vt, styles: StyleChain) { self.push_supplement(self.supplement(styles)); + self.push_brackets(self.brackets(styles)); self.push_style(self.style(styles)); } } @@ -230,17 +230,12 @@ impl Show for CiteNode { let id = self.0.stable_id().unwrap(); let works = match Works::new(vt) { Ok(works) => works, - Err(error) => { - if vt.locatable() { - bail!(self.span(), error) - } else { - return Ok(TextNode::packed("citation")); - } - } + Err(error) if vt.locatable() => bail!(self.span(), error), + Err(_) => Arc::new(Works::default()), }; let Some(citation) = works.citations.get(&id).cloned() else { - return Ok(TextNode::packed("citation")); + return Ok(TextNode::packed("[1]")); }; citation @@ -268,6 +263,7 @@ pub enum CitationStyle { } /// Fully formatted citations and references. +#[derive(Default)] pub struct Works { citations: HashMap>, references: Vec<(Option, Content)>, @@ -277,20 +273,8 @@ impl Works { /// Prepare all things need to cite a work or format a bibliography. pub fn new(vt: &Vt) -> StrResult> { let bibliography = BibliographyNode::find(vt.introspector)?; - let style = bibliography.style(StyleChain::default()); - let citations = vt - .locate_node::() - .map(|node| { - ( - node.0.stable_id().unwrap(), - node.key(), - node.supplement(StyleChain::default()), - node.style(StyleChain::default()) - .unwrap_or(style.default_citation_style()), - ) - }) - .collect(); - Ok(create(vt.world(), &bibliography.path(), style, citations)) + let citations = vt.query_node::().collect(); + Ok(create(vt.world(), &bibliography, citations)) } } @@ -298,21 +282,37 @@ impl Works { #[comemo::memoize] fn create( world: Tracked, - path: &str, - style: BibliographyStyle, - citations: Vec<(StableId, EcoString, Option, CitationStyle)>, + bibliography: &BibliographyNode, + citations: Vec<&CiteNode>, ) -> Arc { - let entries = load(world, path).unwrap(); + let entries = load(world, &bibliography.path()).unwrap(); + let style = bibliography.style(StyleChain::default()); + let bib_id = bibliography.0.stable_id().unwrap(); + let ref_id = |target: &Entry| { + let i = entries + .iter() + .position(|entry| entry.key() == target.key()) + .unwrap_or_default(); + bib_id.variant(i as u64) + }; let mut db = Database::new(); + let mut ids = HashMap::new(); let mut preliminary = vec![]; - for (id, key, supplement, style) in citations { - let entry = entries.iter().find(|entry| entry.key() == key); - if let Some(entry) = &entry { - db.push(entry); - } - preliminary.push((id, entry, supplement, style)); + for citation in citations { + let cite_id = citation.0.stable_id().unwrap(); + let entries = citation + .keys() + .into_iter() + .map(|key| { + let entry = entries.iter().find(|entry| entry.key() == key)?; + ids.entry(entry.key()).or_insert(cite_id); + db.push(entry); + Some(entry) + }) + .collect::>>(); + preliminary.push((citation, entries)); } let mut current = CitationStyle::Numerical; @@ -321,34 +321,71 @@ fn create( let citations = preliminary .into_iter() - .map(|(id, result, supplement, style)| { - let formatted = result.map(|entry| { - if style != current { - current = style; - citation_style = match style { - CitationStyle::Numerical => Box::new(style::Numerical::new()), - CitationStyle::Alphanumerical => { - Box::new(style::Alphanumerical::new()) - } - CitationStyle::AuthorDate => { - Box::new(style::ChicagoAuthorDate::new()) - } - CitationStyle::AuthorTitle => Box::new(style::AuthorTitle::new()), - CitationStyle::Keys => Box::new(style::Keys::new()), - }; + .map(|(citation, cited)| { + let id = citation.0.stable_id().unwrap(); + let Some(cited) = cited else { return (id, None) }; + + let mut supplement = citation.supplement(StyleChain::default()); + let brackets = citation.brackets(StyleChain::default()); + let style = citation + .style(StyleChain::default()) + .unwrap_or(style.default_citation_style()); + + if style != current { + current = style; + citation_style = match style { + CitationStyle::Numerical => Box::new(style::Numerical::new()), + CitationStyle::Alphanumerical => { + Box::new(style::Alphanumerical::new()) + } + CitationStyle::AuthorDate => { + Box::new(style::ChicagoAuthorDate::new()) + } + CitationStyle::AuthorTitle => Box::new(style::AuthorTitle::new()), + CitationStyle::Keys => Box::new(style::Keys::new()), + }; + } + + let len = cited.len(); + let mut content = Content::empty(); + for (i, entry) in cited.into_iter().enumerate() { + let supplement = if i + 1 == len { supplement.take() } else { None }; + let mut display = db + .citation( + &mut *citation_style, + &[Citation { + entry, + supplement: supplement.is_some().then(|| SUPPLEMENT), + }], + ) + .display; + + if brackets && len == 1 { + display = display.with_default_brackets(&*citation_style); } - let citation = db.citation( - &mut *citation_style, - &[Citation { - entry, - supplement: supplement.is_some().then(|| SUPPLEMENT), - }], - ); - let bracketed = citation.display.with_default_brackets(&*citation_style); - format_display_string(&bracketed, supplement) - }); - (id, formatted) + if i > 0 { + content += TextNode::packed(",\u{a0}"); + } + + // Format and link to the reference entry. + content += format_display_string(&display, supplement) + .linked(Link::Node(ref_id(entry))); + } + + if brackets && len > 1 { + content = match citation_style.brackets() { + Brackets::None => content, + Brackets::Round => { + TextNode::packed('(') + content + TextNode::packed(')') + } + Brackets::Square => { + TextNode::packed('[') + content + TextNode::packed(']') + } + }; + } + + (id, Some(content)) }) .collect(); @@ -363,11 +400,26 @@ fn create( .bibliography(&*bibliography_style, None) .into_iter() .map(|reference| { + // Make link from citation to here work. + let backlink = { + let mut content = Content::empty(); + content.set_stable_id(ref_id(&reference.entry)); + MetaNode::set_data(vec![Meta::Node(content)]) + }; + let prefix = reference.prefix.map(|prefix| { + // Format and link to first citation. let bracketed = prefix.with_default_brackets(&*citation_style); format_display_string(&bracketed, None) + .linked(Link::Node(ids[reference.entry.key()])) + .styled(backlink.clone()) }); - let reference = format_display_string(&reference.display, None); + + let mut reference = format_display_string(&reference.display, None); + if prefix.is_none() { + reference = reference.styled(backlink); + } + (prefix, reference) }) .collect(); @@ -443,28 +495,27 @@ fn format_display_string( continue; } - let mut styles = StyleMap::new(); - for (range, fmt) in &string.formatting { - if !range.contains(&start) { - continue; - } - - styles.set(match fmt { - Formatting::Bold => TextNode::set_weight(FontWeight::BOLD), - Formatting::Italic => TextNode::set_style(FontStyle::Italic), - Formatting::NoHyphenation => { - TextNode::set_hyphenate(Hyphenate(Smart::Custom(false))) - } - }); - } - - let content = if segment == SUPPLEMENT && supplement.is_some() { + let mut content = if segment == SUPPLEMENT && supplement.is_some() { supplement.take().unwrap_or_default() } else { TextNode::packed(segment) }; - seq.push(content.styled_with_map(styles)); + for (range, fmt) in &string.formatting { + if !range.contains(&start) { + continue; + } + + content = match fmt { + Formatting::Bold => content.strong(), + Formatting::Italic => content.emph(), + Formatting::Link(link) => { + content.linked(Link::Dest(Destination::Url(link.as_str().into()))) + } + }; + } + + seq.push(content); start = stop; } diff --git a/library/src/meta/figure.rs b/library/src/meta/figure.rs index 562e43bbe..a7668ffb5 100644 --- a/library/src/meta/figure.rs +++ b/library/src/meta/figure.rs @@ -66,7 +66,7 @@ impl Synthesize for FigureNode { if numbering.is_some() { number = NonZeroUsize::new( 1 + vt - .locate_node::() + .query_node::() .take_while(|figure| figure.0.stable_id() != my_id) .filter(|figure| figure.element() == element) .count(), diff --git a/library/src/meta/heading.rs b/library/src/meta/heading.rs index 44a940f8a..527a93a35 100644 --- a/library/src/meta/heading.rs +++ b/library/src/meta/heading.rs @@ -91,7 +91,7 @@ impl Synthesize for HeadingNode { if numbering.is_some() { // Advance past existing headings. for heading in vt - .locate_node::() + .query_node::() .take_while(|figure| figure.0.stable_id() != my_id) { if heading.numbering(StyleChain::default()).is_some() { diff --git a/library/src/meta/link.rs b/library/src/meta/link.rs index bca1945a5..e9b8bcc67 100644 --- a/library/src/meta/link.rs +++ b/library/src/meta/link.rs @@ -86,7 +86,7 @@ impl Show for LinkNode { impl Finalize for LinkNode { fn finalize(&self, realized: Content, _: StyleChain) -> Content { realized - .linked(self.dest()) + .linked(Link::Dest(self.dest())) .styled(TextNode::set_hyphenate(Hyphenate(Smart::Custom(false)))) } } diff --git a/library/src/meta/outline.rs b/library/src/meta/outline.rs index 216f7a909..1a3e8606c 100644 --- a/library/src/meta/outline.rs +++ b/library/src/meta/outline.rs @@ -76,9 +76,13 @@ pub struct OutlineNode { impl Synthesize for OutlineNode { fn synthesize(&mut self, vt: &Vt, _: StyleChain) { let headings = vt - .locate_node::() - .filter(|node| node.outlined(StyleChain::default())) - .cloned() + .introspector + .query(Selector::Node( + NodeId::of::(), + Some(dict! { "outlined" => true }), + )) + .into_iter() + .map(|node| node.to::().unwrap().clone()) .collect(); self.push_headings(headings); @@ -91,6 +95,7 @@ impl Show for OutlineNode { if let Some(title) = self.title(styles) { let title = title.clone().unwrap_or_else(|| { TextNode::packed(self.local_name(TextNode::lang_in(styles))) + .spanned(self.span()) }); seq.push( @@ -107,6 +112,7 @@ impl Show for OutlineNode { let mut ancestors: Vec<&HeadingNode> = vec![]; for heading in self.headings().iter() { + let stable_id = heading.0.stable_id().unwrap(); if !heading.outlined(StyleChain::default()) { continue; } @@ -123,11 +129,6 @@ impl Show for OutlineNode { ancestors.pop(); } - // Adjust the link destination a bit to the topleft so that the - // heading is fully visible. - let mut loc = heading.0.expect_field::("location"); - loc.pos -= Point::splat(Abs::pt(10.0)); - // Add hidden ancestors numberings to realize the indent. if indent { let mut hidden = Content::empty(); @@ -155,7 +156,7 @@ impl Show for OutlineNode { }; // Add the numbering and section name. - seq.push(start.linked(Destination::Internal(loc))); + seq.push(start.linked(Link::Node(stable_id))); // Add filler symbols between the section name and page number. if let Some(filler) = self.fill(styles) { @@ -172,8 +173,9 @@ impl Show for OutlineNode { } // Add the page number and linebreak. - let end = TextNode::packed(eco_format!("{}", loc.page)); - seq.push(end.linked(Destination::Internal(loc))); + let page = vt.introspector.page(stable_id).unwrap(); + let end = TextNode::packed(eco_format!("{}", page)); + seq.push(end.linked(Link::Node(stable_id))); seq.push(LinebreakNode::new().pack()); ancestors.push(heading); } diff --git a/library/src/meta/reference.rs b/library/src/meta/reference.rs index e84da56b6..1616adb3c 100644 --- a/library/src/meta/reference.rs +++ b/library/src/meta/reference.rs @@ -68,14 +68,14 @@ impl Show for RefNode { let target = self.target(); let supplement = self.supplement(styles); - let matches: Vec<_> = vt.locate(Selector::Label(self.target())).collect(); + let matches = vt.introspector.query(Selector::Label(self.target())); if !vt.locatable() || BibliographyNode::has(vt, &target.0) { if !matches.is_empty() { bail!(self.span(), "label occurs in the document and its bibliography"); } - return Ok(CiteNode::new(target.0) + return Ok(CiteNode::new(vec![target.0]) .with_supplement(match supplement { Smart::Custom(Some(Supplement::Content(content))) => Some(content), _ => None, @@ -133,8 +133,7 @@ impl Show for RefNode { bail!(self.span(), "cannot reference {}", target.id().name); }; - let loc = target.expect_field::("location"); - Ok(formatted.linked(Destination::Internal(loc))) + Ok(formatted.linked(Link::Node(target.stable_id().unwrap()))) } } diff --git a/library/src/shared/ext.rs b/library/src/shared/ext.rs index e335b4c8f..14674c9d0 100644 --- a/library/src/shared/ext.rs +++ b/library/src/shared/ext.rs @@ -15,8 +15,8 @@ pub trait ContentExt { /// Underline this content. fn underlined(self) -> Self; - /// Link the content to a destination. - fn linked(self, dest: Destination) -> Self; + /// Link the content somewhere. + fn linked(self, link: Link) -> Self; /// Set alignments for this content. fn aligned(self, aligns: Axes>) -> Self; @@ -41,8 +41,8 @@ impl ContentExt for Content { UnderlineNode::new(self).pack() } - fn linked(self, dest: Destination) -> Self { - self.styled(MetaNode::set_data(vec![Meta::Link(dest)])) + fn linked(self, link: Link) -> Self { + self.styled(MetaNode::set_data(vec![Meta::Link(link)])) } fn aligned(self, aligns: Axes>) -> Self { diff --git a/src/doc.rs b/src/doc.rs index ffa056cd0..6add64fc4 100644 --- a/src/doc.rs +++ b/src/doc.rs @@ -14,7 +14,7 @@ use crate::geom::{ Numeric, Paint, Point, Rel, RgbaColor, Shape, Sides, Size, Stroke, Transform, }; use crate::image::Image; -use crate::model::{node, Content, Fold, StyleChain}; +use crate::model::{node, Content, Fold, Introspector, StableId, StyleChain}; use crate::syntax::Span; /// A finished document with metadata and page frames. @@ -276,7 +276,7 @@ impl Frame { return; } for meta in MetaNode::data_in(styles) { - if matches!(meta, Meta::Hidden) { + if matches!(meta, Meta::Hide) { self.clear(); break; } @@ -593,13 +593,37 @@ cast_to_value! { /// Meta information that isn't visible or renderable. #[derive(Debug, Clone, Hash)] pub enum Meta { + /// Indicates that the content should be hidden. + Hide, /// An internal or external link. - Link(Destination), + Link(Link), /// An identifiable piece of content that produces something within the /// area this metadata is attached to. Node(Content), - /// Indicates that the content is hidden. - Hidden, +} + +/// A possibly unresolved link. +#[derive(Debug, Clone, Hash)] +pub enum Link { + /// A fully resolved. + Dest(Destination), + /// An unresolved link to a node. + Node(StableId), +} + +impl Link { + /// Resolve a destination. + /// + /// Needs to lazily provide an introspector. + pub fn resolve<'a>( + &self, + introspector: impl FnOnce() -> &'a Introspector, + ) -> Option { + match self { + Self::Dest(dest) => Some(dest.clone()), + Self::Node(id) => introspector().location(*id).map(Destination::Internal), + } + } } /// Host for metadata. diff --git a/src/export/pdf/mod.rs b/src/export/pdf/mod.rs index 3813bad50..bdbb2bb76 100644 --- a/src/export/pdf/mod.rs +++ b/src/export/pdf/mod.rs @@ -19,6 +19,7 @@ use crate::doc::{Document, Lang}; use crate::font::Font; use crate::geom::{Abs, Dir, Em}; use crate::image::Image; +use crate::model::Introspector; /// Export a document into a PDF file. /// @@ -40,6 +41,7 @@ const D65_GRAY: Name<'static> = Name(b"d65gray"); /// Context for exporting a whole PDF document. pub struct PdfContext<'a> { document: &'a Document, + introspector: Introspector, writer: PdfWriter, pages: Vec, page_heights: Vec, @@ -61,6 +63,7 @@ impl<'a> PdfContext<'a> { let page_tree_ref = alloc.bump(); Self { document, + introspector: Introspector::new(&document.pages), writer: PdfWriter::new(), pages: vec![], page_heights: vec![], diff --git a/src/export/pdf/page.rs b/src/export/pdf/page.rs index 94af6c70b..7f8c20ef8 100644 --- a/src/export/pdf/page.rs +++ b/src/export/pdf/page.rs @@ -4,7 +4,7 @@ use pdf_writer::writers::ColorSpace; use pdf_writer::{Content, Filter, Finish, Name, Rect, Ref, Str}; use super::{deflate, AbsExt, EmExt, PdfContext, RefExt, D65_GRAY, SRGB}; -use crate::doc::{Destination, Element, Frame, Group, Meta, Text}; +use crate::doc::{Destination, Element, Frame, Group, Link, Meta, Text}; use crate::font::Font; use crate::geom::{ self, Abs, Color, Em, Geometry, Numeric, Paint, Point, Ratio, Shape, Size, Stroke, @@ -110,22 +110,31 @@ fn write_page(ctx: &mut PdfContext, page: Page) { page_writer.contents(content_id); let mut annotations = page_writer.annotations(); - for (dest, rect) in page.links { - let mut link = annotations.push(); - link.subtype(AnnotationType::Link).rect(rect); - link.border(0.0, 0.0, 0.0, None); + for (link, rect) in page.links { + let mut annotation = annotations.push(); + annotation.subtype(AnnotationType::Link).rect(rect); + annotation.border(0.0, 0.0, 0.0, None); + + let dest = link.resolve(|| &ctx.introspector); + let Some(dest) = dest else { continue }; + match dest { Destination::Url(uri) => { - link.action().action_type(ActionType::Uri).uri(Str(uri.as_bytes())); + annotation + .action() + .action_type(ActionType::Uri) + .uri(Str(uri.as_bytes())); } Destination::Internal(loc) => { let index = loc.page.get() - 1; + let y = (loc.pos.y - Abs::pt(10.0)).max(Abs::zero()); if let Some(&height) = ctx.page_heights.get(index) { - link.action() + annotation + .action() .action_type(ActionType::GoTo) .destination_direct() .page(ctx.page_refs[index]) - .xyz(loc.pos.x.to_f32(), height - loc.pos.y.to_f32(), None); + .xyz(loc.pos.x.to_f32(), height - y.to_f32(), None); } } } @@ -148,7 +157,7 @@ pub struct Page { /// The page's content stream. pub content: Content, /// Links in the PDF coordinate system. - pub links: Vec<(Destination, Rect)>, + pub links: Vec<(Link, Rect)>, } /// An exporter for the contents of a single PDF page. @@ -159,7 +168,7 @@ struct PageContext<'a, 'b> { state: State, saves: Vec, bottom: f32, - links: Vec<(Destination, Rect)>, + links: Vec<(Link, Rect)>, } /// A simulated graphics state used to deduplicate graphics state changes and @@ -287,9 +296,9 @@ fn write_frame(ctx: &mut PageContext, frame: &Frame) { Element::Shape(shape) => write_shape(ctx, x, y, shape), Element::Image(image, size) => write_image(ctx, x, y, image, *size), Element::Meta(meta, size) => match meta { - Meta::Link(dest) => write_link(ctx, pos, dest, *size), + Meta::Link(link) => write_link(ctx, pos, link, *size), Meta::Node(_) => {} - Meta::Hidden => {} + Meta::Hide => {} }, } } @@ -449,7 +458,7 @@ fn write_image(ctx: &mut PageContext, x: f32, y: f32, image: &Image, size: Size) } /// Save a link for later writing in the annotations dictionary. -fn write_link(ctx: &mut PageContext, pos: Point, dest: &Destination, size: Size) { +fn write_link(ctx: &mut PageContext, pos: Point, link: &Link, size: Size) { let mut min_x = Abs::inf(); let mut min_y = Abs::inf(); let mut max_x = -Abs::inf(); @@ -475,5 +484,5 @@ fn write_link(ctx: &mut PageContext, pos: Point, dest: &Destination, size: Size) let y2 = min_y.to_f32(); let rect = Rect::new(x1, y1, x2, y2); - ctx.links.push((dest.clone(), rect)); + ctx.links.push((link.clone(), rect)); } diff --git a/src/export/render.rs b/src/export/render.rs index 2fca88272..bf183ebe0 100644 --- a/src/export/render.rs +++ b/src/export/render.rs @@ -61,7 +61,7 @@ fn render_frame( Element::Meta(meta, _) => match meta { Meta::Link(_) => {} Meta::Node(_) => {} - Meta::Hidden => {} + Meta::Hide => {} }, } } diff --git a/src/ide/analyze.rs b/src/ide/analyze.rs index 7338ba57c..ed868e53d 100644 --- a/src/ide/analyze.rs +++ b/src/ide/analyze.rs @@ -74,12 +74,11 @@ pub fn analyze_labels( frames: &[Frame], ) -> (Vec<(Label, Option)>, usize) { let mut output = vec![]; - let mut introspector = Introspector::new(); + let introspector = Introspector::new(frames); let items = &world.library().items; - introspector.update(frames); // Labels in the document. - for node in introspector.iter() { + for node in introspector.nodes() { let Some(label) = node.label() else { continue }; let details = node .field("caption") diff --git a/src/ide/jump.rs b/src/ide/jump.rs index 033d0f7fa..95f2fa029 100644 --- a/src/ide/jump.rs +++ b/src/ide/jump.rs @@ -2,6 +2,7 @@ use std::num::NonZeroUsize; use crate::doc::{Destination, Element, Frame, Location, Meta}; use crate::geom::{Point, Size}; +use crate::model::Introspector; use crate::syntax::{LinkedNode, Source, SourceId, Span, SyntaxKind}; use crate::World; @@ -15,11 +16,19 @@ pub enum Jump { } /// Determine where to jump to based on a click in a frame. -pub fn jump_from_click(world: &dyn World, frame: &Frame, click: Point) -> Option { +pub fn jump_from_click( + world: &dyn World, + frames: &[Frame], + frame: &Frame, + click: Point, +) -> Option { + let mut introspector = None; + for (mut pos, element) in frame.elements() { if let Element::Group(group) = element { // TODO: Handle transformation. - if let Some(span) = jump_from_click(world, &group.frame, click - pos) { + if let Some(span) = jump_from_click(world, frames, &group.frame, click - pos) + { return Some(span); } } @@ -55,9 +64,14 @@ pub fn jump_from_click(world: &dyn World, frame: &Frame, click: Point) -> Option } } - if let Element::Meta(Meta::Link(dest), size) = element { + if let Element::Meta(Meta::Link(link), size) = element { if is_in_rect(pos, *size, click) { - return Some(Jump::Dest(dest.clone())); + let dest = link.resolve(|| { + introspector.get_or_insert_with(|| Introspector::new(frames)) + }); + + let Some(dest) = dest else { continue }; + return Some(Jump::Dest(dest)); } } } diff --git a/src/model/typeset.rs b/src/model/typeset.rs index 8120f58f3..f68d337d1 100644 --- a/src/model/typeset.rs +++ b/src/model/typeset.rs @@ -20,7 +20,7 @@ pub fn typeset(world: Tracked, content: &Content) -> SourceResult, content: &Content) -> SourceResult Vt<'a> { self.introspector.init() } - /// Locate all metadata matches for the given selector. - pub fn locate(&self, selector: Selector) -> impl Iterator { - self.introspector.locate(selector).into_iter() - } - /// Locate all metadata matches for the given node. - pub fn locate_node(&self) -> impl Iterator { - self.locate(Selector::node::()) + pub fn query_node(&self) -> impl Iterator { + self.introspector + .query(Selector::node::()) + .into_iter() .map(|content| content.to::().unwrap()) } } @@ -97,7 +92,14 @@ impl<'a> Vt<'a> { /// /// This struct is created by [`Vt::identify`]. #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] -pub struct StableId(u128, u64); +pub struct StableId(u128, u64, u64); + +impl StableId { + /// Produce a variant of this id. + pub fn variant(self, n: u64) -> Self { + Self(self.0, self.1, n) + } +} /// Provides stable identities to nodes. #[derive(Clone)] @@ -115,7 +117,7 @@ impl StabilityProvider { /// Produce a stable identifier for this call site. fn identify(&mut self, hash: u128) -> StableId { let slot = self.0.entry(hash).or_default(); - let id = StableId(hash, *slot); + let id = StableId(hash, *slot, 0); *slot += 1; id } @@ -124,35 +126,33 @@ impl StabilityProvider { /// Provides access to information about the document. pub struct Introspector { init: bool, - nodes: Vec, + nodes: Vec<(Content, Location)>, queries: RefCell>, } impl Introspector { /// Create a new introspector. - pub fn new() -> Self { - Self { + pub fn new(frames: &[Frame]) -> Self { + let mut introspector = Self { init: false, nodes: vec![], queries: RefCell::new(vec![]), - } + }; + introspector.extract_from_frames(frames); + introspector } /// Update the information given new frames and return whether we can stop /// layouting. pub fn update(&mut self, frames: &[Frame]) -> bool { self.nodes.clear(); - - for (i, frame) in frames.iter().enumerate() { - let page = NonZeroUsize::new(1 + i).unwrap(); - self.extract(frame, page, Transform::identity()); - } + self.extract_from_frames(frames); let was_init = std::mem::replace(&mut self.init, true); let queries = std::mem::take(&mut self.queries).into_inner(); for (selector, hash) in &queries { - let nodes = self.locate_impl(selector); + let nodes = self.query_impl(selector); if hash128(&nodes) != *hash { return false; } @@ -166,32 +166,36 @@ impl Introspector { } /// Iterate over all nodes. - pub fn iter(&self) -> impl Iterator { - self.nodes.iter() + pub fn nodes(&self) -> impl Iterator { + self.nodes.iter().map(|(node, _)| node) + } + + /// Extract metadata from frames. + fn extract_from_frames(&mut self, frames: &[Frame]) { + for (i, frame) in frames.iter().enumerate() { + let page = NonZeroUsize::new(1 + i).unwrap(); + self.extract_from_frame(frame, page, Transform::identity()); + } } /// Extract metadata from a frame. - fn extract(&mut self, frame: &Frame, page: NonZeroUsize, ts: Transform) { + fn extract_from_frame(&mut self, frame: &Frame, page: NonZeroUsize, ts: Transform) { for (pos, element) in frame.elements() { match element { Element::Group(group) => { let ts = ts .pre_concat(Transform::translate(pos.x, pos.y)) .pre_concat(group.transform); - self.extract(&group.frame, page, ts); + self.extract_from_frame(&group.frame, page, ts); } - Element::Meta(Meta::Node(content), _) => { + Element::Meta(Meta::Node(content), _) if !self .nodes .iter() - .any(|prev| prev.stable_id() == content.stable_id()) - { - let pos = pos.transform(ts); - let mut node = content.clone(); - let loc = Location { page, pos }; - node.push_field("location", loc); - self.nodes.push(node); - } + .any(|(prev, _)| prev.stable_id() == content.stable_id()) => + { + let pos = pos.transform(ts); + self.nodes.push((content.clone(), Location { page, pos })); } _ => {} } @@ -206,19 +210,29 @@ impl Introspector { self.init } - /// Locate all metadata matches for the given selector. - pub fn locate(&self, selector: Selector) -> Vec<&Content> { - let nodes = self.locate_impl(&selector); + /// Query for all metadata matches for the given selector. + pub fn query(&self, selector: Selector) -> Vec<&Content> { + let nodes = self.query_impl(&selector); let mut queries = self.queries.borrow_mut(); if !queries.iter().any(|(prev, _)| prev == &selector) { queries.push((selector, hash128(&nodes))); } nodes } + + /// Find the page number for the given stable id. + pub fn page(&self, id: StableId) -> Option { + Some(self.location(id)?.page) + } + + /// Find the location for the given stable id. + pub fn location(&self, id: StableId) -> Option { + Some(self.nodes.iter().find(|(node, _)| node.stable_id() == Some(id))?.1) + } } impl Introspector { - fn locate_impl(&self, selector: &Selector) -> Vec<&Content> { - self.nodes.iter().filter(|target| selector.matches(target)).collect() + fn query_impl(&self, selector: &Selector) -> Vec<&Content> { + self.nodes().filter(|node| selector.matches(node)).collect() } } diff --git a/tests/ref/meta/bibliography.png b/tests/ref/meta/bibliography.png index 3ff542d16db4722ad72d4fc5317dddedb1857c06..15b99ec004fa776d71181e7e828d8ea05b857967 100644 GIT binary patch literal 86422 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
SH))^i*YtK^@QWfbnLNc7! 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 z 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 DSG6$< diff --git a/tests/typ/meta/bibliography.typ b/tests/typ/meta/bibliography.typ index 2e2ddd358..ce4b8f31c 100644 --- a/tests/typ/meta/bibliography.typ +++ b/tests/typ/meta/bibliography.typ @@ -14,7 +14,7 @@ --- #set page(width: 200pt) = Details -See also #cite("arrgh", [p. 22]), @arrgh[p. 4], and @cannonfodder[p. 5]. +See also #cite("arrgh", "cannonfodder", [p. 22]), @arrgh[p. 4], and @cannonfodder[p. 5]. #bibliography("/works.bib") --- @@ -22,6 +22,7 @@ See also #cite("arrgh", [p. 22]), @arrgh[p. 4], and @cannonfodder[p. 5]. #set page(width: 200pt) #bibliography("/works.bib", title: [Works to be cited], style: "author-date") #line(length: 100%) -The net-work is a creature of its own. @stupid +As described by #cite("stupid", brackets: false), +the net-work is a creature of its own. This is close to piratery! @arrgh And quark! @quark