summaryrefslogtreecommitdiff
path: root/crates/typst-library/src/model/reference.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2025-07-09 10:16:36 +0200
committerGitHub <noreply@github.com>2025-07-09 08:16:36 +0000
commite5e1dcd9c01341d2cd3473ac94a70223d5966086 (patch)
treed648efad9463cb10270d55ba35210eeb1e91ee22 /crates/typst-library/src/model/reference.rs
parent0a3c6939dd274f40672484695d909c2cc0d0d755 (diff)
Target-specific native show rules (#6569)
Diffstat (limited to 'crates/typst-library/src/model/reference.rs')
-rw-r--r--crates/typst-library/src/model/reference.rs20
1 files changed, 12 insertions, 8 deletions
diff --git a/crates/typst-library/src/model/reference.rs b/crates/typst-library/src/model/reference.rs
index 2d04a97a..4877409f 100644
--- a/crates/typst-library/src/model/reference.rs
+++ b/crates/typst-library/src/model/reference.rs
@@ -5,7 +5,7 @@ use crate::diag::{bail, At, Hint, SourceResult};
use crate::engine::Engine;
use crate::foundations::{
cast, elem, Cast, Content, Context, Func, IntoValue, Label, NativeElement, Packed,
- Repr, Show, Smart, StyleChain, Synthesize,
+ Repr, Smart, StyleChain, Synthesize,
};
use crate::introspection::{Counter, CounterKey, Locatable};
use crate::math::EquationElem;
@@ -134,7 +134,7 @@ use crate::text::TextElem;
/// In @beginning we prove @pythagoras.
/// $ a^2 + b^2 = c^2 $ <pythagoras>
/// ```
-#[elem(title = "Reference", Synthesize, Locatable, Show)]
+#[elem(title = "Reference", Synthesize, Locatable)]
pub struct RefElem {
/// The target label that should be referenced.
///
@@ -220,9 +220,13 @@ impl Synthesize for Packed<RefElem> {
}
}
-impl Show for Packed<RefElem> {
- #[typst_macros::time(name = "ref", span = self.span())]
- fn show(&self, engine: &mut Engine, styles: StyleChain) -> SourceResult<Content> {
+impl Packed<RefElem> {
+ /// Realize as a linked, textual reference.
+ pub fn realize(
+ &self,
+ engine: &mut Engine,
+ styles: StyleChain,
+ ) -> SourceResult<Content> {
let elem = engine.introspector.query_label(self.target);
let span = self.span();
@@ -242,7 +246,7 @@ impl Show for Packed<RefElem> {
.at(span)?;
let supplement = engine.introspector.page_supplement(loc);
- return show_reference(
+ return realize_reference(
self,
engine,
styles,
@@ -306,7 +310,7 @@ impl Show for Packed<RefElem> {
))
.at(span)?;
- show_reference(
+ realize_reference(
self,
engine,
styles,
@@ -319,7 +323,7 @@ impl Show for Packed<RefElem> {
}
/// Show a reference.
-fn show_reference(
+fn realize_reference(
reference: &Packed<RefElem>,
engine: &mut Engine,
styles: StyleChain,