From 8527517258cf62a2f229796cc3f118d8bf0494b6 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Thu, 22 Dec 2022 18:25:29 +0100 Subject: [PATCH] Rename `desc` to `terms` --- library/src/basics/enum.rs | 4 +- library/src/basics/list.rs | 4 +- library/src/basics/mod.rs | 4 +- library/src/basics/{desc.rs => terms.rs} | 52 +++++++++++------------ library/src/layout/mod.rs | 18 ++++---- library/src/layout/page.rs | 50 ++++++++++------------ library/src/lib.rs | 6 +-- library/src/meta/link.rs | 5 +++ src/ide/complete.rs | 10 ++--- src/ide/highlight.rs | 10 ++--- src/model/eval.rs | 6 +-- src/model/library.rs | 10 ++--- src/syntax/ast.rs | 28 ++++++------ src/syntax/kind.rs | 19 ++++----- src/syntax/parsing.rs | 6 +-- tests/ref/basics/enum.png | Bin 27690 -> 29431 bytes tests/ref/basics/{desc.png => terms.png} | Bin tests/typ/basics/enum.typ | 6 +-- tests/typ/basics/list.typ | 2 +- tests/typ/basics/{desc.typ => terms.typ} | 8 ++-- 20 files changed, 121 insertions(+), 127 deletions(-) rename library/src/basics/{desc.rs => terms.rs} (79%) rename tests/ref/basics/{desc.png => terms.png} (100%) rename tests/typ/basics/{desc.typ => terms.typ} (86%) diff --git a/library/src/basics/enum.rs b/library/src/basics/enum.rs index f0ca217ac..81a36b615 100644 --- a/library/src/basics/enum.rs +++ b/library/src/basics/enum.rs @@ -5,8 +5,8 @@ use crate::layout::{BlockNode, GridNode, ParNode, Spacing, TrackSizing}; use crate::prelude::*; use crate::text::TextNode; -/// # Enumeration -/// An ordered list. +/// # Numbered List +/// A numbered list. /// /// Displays a sequence of items vertically and numbers them consecutively. /// diff --git a/library/src/basics/list.rs b/library/src/basics/list.rs index eaba65943..24c7b21c2 100644 --- a/library/src/basics/list.rs +++ b/library/src/basics/list.rs @@ -2,8 +2,8 @@ use crate::layout::{BlockNode, GridNode, ParNode, Spacing, TrackSizing}; use crate::prelude::*; use crate::text::TextNode; -/// # List -/// An unordered list. +/// # Bullet List +/// An bullet list. /// /// Displays a sequence of items vertically, with each item introduced by a /// marker. diff --git a/library/src/basics/mod.rs b/library/src/basics/mod.rs index 431cb004f..7520c42d9 100644 --- a/library/src/basics/mod.rs +++ b/library/src/basics/mod.rs @@ -1,14 +1,14 @@ //! Common document elements. -mod desc; #[path = "enum.rs"] mod enum_; mod heading; mod list; mod table; +mod terms; -pub use self::desc::*; pub use self::enum_::*; pub use self::heading::*; pub use self::list::*; pub use self::table::*; +pub use self::terms::*; diff --git a/library/src/basics/desc.rs b/library/src/basics/terms.rs similarity index 79% rename from library/src/basics/desc.rs rename to library/src/basics/terms.rs index 2c764c595..1570d177f 100644 --- a/library/src/basics/desc.rs +++ b/library/src/basics/terms.rs @@ -2,7 +2,7 @@ use crate::layout::{BlockNode, GridNode, HNode, ParNode, Spacing, TrackSizing}; use crate::prelude::*; use crate::text::{SpaceNode, TextNode}; -/// # Description List +/// # Term List /// A list of terms and their descriptions. /// /// Displays a sequence of terms and their descriptions vertically. When the @@ -11,8 +11,7 @@ use crate::text::{SpaceNode, TextNode}; /// /// ## Syntax /// This function also has dedicated syntax: Starting a line with a slash, -/// followed by a term, a colon and a description creates a description list -/// item. +/// followed by a term, a colon and a description creates a term list item. /// /// ## Example /// ``` @@ -23,10 +22,10 @@ use crate::text::{SpaceNode, TextNode}; /// /// ## Parameters /// - items: Content (positional, variadic) -/// The descrition list's children. +/// The term list's children. /// -/// When using the description list syntax, adjacents items are automatically -/// collected into description lists, even through constructs like for loops. +/// When using the term list syntax, adjacents items are automatically +/// collected into term lists, even through constructs like for loops. /// /// ### Example /// ``` @@ -38,17 +37,17 @@ use crate::text::{SpaceNode, TextNode}; /// ``` /// /// - tight: bool (named) -/// If this is `{false}`, the items are spaced apart with [description list -/// spacing](@desc/spacing). If it is `{true}`, they use normal -/// [leading](@par/leading) instead. This makes the description list more -/// compact, which can look better if the items are short. +/// If this is `{false}`, the items are spaced apart with [term list +/// spacing](@terms/spacing). If it is `{true}`, they use normal +/// [leading](@par/leading) instead. This makes the term list more compact, +/// which can look better if the items are short. /// /// ### Example /// ``` -/// / Fact: If a description list has -/// a lot of text, and maybe other -/// inline content, it should not be -/// tight anymore. +/// / Fact: If a term list has a lot +/// of text, and maybe other inline +/// content, it should not be tight +/// anymore. /// /// / Tip: To make it wide, simply /// insert a blank line between the @@ -60,15 +59,15 @@ use crate::text::{SpaceNode, TextNode}; #[func] #[capable(Layout)] #[derive(Debug, Hash)] -pub struct DescNode { +pub struct TermsNode { /// If true, the items are separated by leading instead of list spacing. pub tight: bool, /// The individual bulleted or numbered items. - pub items: StyleVec, + pub items: StyleVec, } #[node] -impl DescNode { +impl TermsNode { /// The indentation of each item's term. #[property(resolve)] pub const INDENT: Length = Length::zero(); @@ -77,15 +76,14 @@ impl DescNode { /// /// # Example /// ``` - /// #set desc(hanging-indent: 0pt) - /// / Term: This description list - /// does not make use of hanging - /// indents. + /// #set terms(hanging-indent: 0pt) + /// / Term: This term list does not + /// make use of hanging indents. /// ``` #[property(resolve)] pub const HANGING_INDENT: Length = Em::new(1.0).into(); - /// The spacing between the items of a wide (non-tight) description list. + /// The spacing between the items of a wide (non-tight) term list. /// /// If set to `{auto}` uses the spacing [below blocks](@block/below). pub const SPACING: Smart = Smart::Auto; @@ -109,7 +107,7 @@ impl DescNode { } } -impl Layout for DescNode { +impl Layout for TermsNode { fn layout( &self, vt: &mut Vt, @@ -151,16 +149,16 @@ impl Layout for DescNode { } } -/// A description list item. +/// A term list item. #[derive(Debug, Clone, Hash)] -pub struct DescItem { +pub struct TermItem { /// The term described by the list item. pub term: Content, /// The description of the term. pub description: Content, } -impl DescItem { +impl TermItem { /// Encode the item into a value. fn encode(&self) -> Value { Value::Array(array![ @@ -171,7 +169,7 @@ impl DescItem { } castable! { - DescItem, + TermItem, array: Array => { let mut iter = array.into_iter(); let (term, description) = match (iter.next(), iter.next(), iter.next()) { diff --git a/library/src/layout/mod.rs b/library/src/layout/mod.rs index bd4b04304..67b53e1b4 100644 --- a/library/src/layout/mod.rs +++ b/library/src/layout/mod.rs @@ -40,7 +40,7 @@ use typst::model::{ StyleVecBuilder, StyledNode, }; -use crate::basics::{DescItem, DescNode, EnumNode, ListNode}; +use crate::basics::{EnumNode, ListNode, TermItem, TermsNode}; use crate::meta::DocumentNode; use crate::prelude::*; use crate::shared::BehavedBuilder; @@ -418,7 +418,7 @@ impl<'a, 'v, 't> Builder<'a, 'v, 't> { self.interrupt_par()?; } else if map.interruption::().is_some() || map.interruption::().is_some() - || map.interruption::().is_some() + || map.interruption::().is_some() { self.interrupt_list()?; } @@ -519,7 +519,7 @@ impl<'a> FlowBuilder<'a> { node.tight } else if let Some(node) = content.to::() { node.tight - } else if let Some(node) = content.to::() { + } else if let Some(node) = content.to::() { node.tight } else { false @@ -621,10 +621,10 @@ impl<'a> ListBuilder<'a> { }), } .pack(), - ListItem::Desc(_) => DescNode { + ListItem::Term(_) => TermsNode { tight: self.tight, items: items.map(|item| match item { - ListItem::Desc(item) => item.clone(), + ListItem::Term(item) => item.clone(), _ => panic!("wrong list item"), }), } @@ -648,12 +648,12 @@ impl Default for ListBuilder<'_> { #[capable] #[derive(Debug, Clone, Hash)] pub enum ListItem { - /// An item of an unordered list. + /// An item of a bullet list. List(Content), - /// An item of an ordered list. + /// An item of a numbered list. Enum(Option, Content), - /// An item of a description list. - Desc(DescItem), + /// An item of a term list. + Term(TermItem), } #[node] diff --git a/library/src/layout/page.rs b/library/src/layout/page.rs index c1ac6118f..beedf4c50 100644 --- a/library/src/layout/page.rs +++ b/library/src/layout/page.rs @@ -125,17 +125,15 @@ impl PageNode { /// # Example /// ``` /// #set page(columns: 2, height: 4.8cm) - /// Climate change is one of the - /// most pressing issues of our - /// time, with the potential to - /// devastate communities, - /// ecosystems, and economies - /// around the world. It's clear - /// that we need to take urgent + /// Climate change is one of the most + /// pressing issues of our time, with + /// the potential to devastate + /// communities, ecosystems, and + /// economies around the world. It's + /// clear that we need to take urgent /// action to reduce our carbon - /// emissions and mitigate the - /// impacts of a rapidly changing - /// climate. + /// emissions and mitigate the impacts + /// of a rapidly changing climate. /// ``` pub const COLUMNS: NonZeroUsize = NonZeroUsize::new(1).unwrap(); @@ -191,13 +189,13 @@ impl PageNode { /// ``` /// #set par(justify: true) /// #set page( - /// margin: (x: 24pt, y: 32pt), - /// footer: i => align(horizon + right, - /// text(8pt, numbering("I", i)) - /// ) + /// margin: (x: 24pt, y: 32pt), + /// footer: i => align(horizon + right, + /// text(8pt, numbering("I", i)) /// ) + /// ) /// - /// #lorem(18) + /// #lorem(18) /// ``` #[property(referenced)] pub const FOOTER: Marginal = Marginal::None; @@ -209,14 +207,12 @@ impl PageNode { /// /// # Example /// ``` - /// #set page( - /// background: align( - /// center + horizon, - /// rotate(24deg, - /// text(18pt, fill: rgb("FFCBC4"))[*CONFIDENTIAL*] - /// ) + /// #set page(background: align( + /// center + horizon, + /// rotate(24deg, + /// text(18pt, fill: rgb("FFCBC4"))[*CONFIDENTIAL*] /// ), - /// ) + /// )) /// /// = Typst's secret plans /// @@ -232,12 +228,10 @@ impl PageNode { /// /// # Example /// ``` - /// #set page( - /// foreground: align( - /// center + horizon, - /// text(24pt)[🥸] - /// ), - /// ) + /// #set page(foreground: align( + /// center + horizon, + /// text(24pt)[🥸], + /// )) /// /// Reviewer 2 has marked our paper /// "Weak Reject" because they did diff --git a/library/src/lib.rs b/library/src/lib.rs index 267277118..a4c6fc30e 100644 --- a/library/src/lib.rs +++ b/library/src/lib.rs @@ -28,7 +28,7 @@ fn scope() -> Scope { std.def_func::("heading"); std.def_func::("list"); std.def_func::("enum"); - std.def_func::("desc"); + std.def_func::("terms"); std.def_func::("table"); // Text. @@ -200,8 +200,8 @@ fn items() -> LangItems { heading: |level, body| basics::HeadingNode { level, title: body }.pack(), list_item: |body| layout::ListItem::List(body).pack(), enum_item: |number, body| layout::ListItem::Enum(number, body).pack(), - desc_item: |term, description| { - layout::ListItem::Desc(basics::DescItem { term, description }).pack() + term_item: |term, description| { + layout::ListItem::Term(basics::TermItem { term, description }).pack() }, math: |children, block| math::MathNode { children, block }.pack(), math_atom: |atom| math::AtomNode(atom).pack(), diff --git a/library/src/meta/link.rs b/library/src/meta/link.rs index 60d57a5fa..ebb7a7e99 100644 --- a/library/src/meta/link.rs +++ b/library/src/meta/link.rs @@ -13,12 +13,17 @@ use crate::text::TextNode; /// ``` /// #show link: underline /// +/// https://example.com \ /// #link("https://example.com") \ /// #link("https://example.com")[ /// See example.com /// ] /// ``` /// +/// ## Syntax +/// This function also has dedicated syntax: Text that starts with `http://` or +/// `https://` is automatically turned into a link. +/// /// ## Parameters /// - dest: Destination (positional, required) /// The destination the link points to. diff --git a/src/ide/complete.rs b/src/ide/complete.rs index 27b81fb2a..e069391f6 100644 --- a/src/ide/complete.rs +++ b/src/ide/complete.rs @@ -712,25 +712,25 @@ impl<'a> CompletionContext<'a> { self.snippet_completion( "list item", "- ${item}", - "Inserts an item of an unordered list.", + "Inserts an item of a bullet list.", ); self.snippet_completion( "enumeration item", "+ ${item}", - "Inserts an item of an ordered list.", + "Inserts an item of a numbered list.", ); self.snippet_completion( "enumeration item (numbered)", "${number}. ${item}", - "Inserts an explicitly numbered item of an ordered list.", + "Inserts an explicitly numbered list item.", ); self.snippet_completion( - "description list item", + "term list item", "/ ${term}: ${description}", - "Inserts an item of a description list.", + "Inserts an item of a term list.", ); self.snippet_completion( diff --git a/src/ide/highlight.rs b/src/ide/highlight.rs index ff9b8450c..1f52ae95a 100644 --- a/src/ide/highlight.rs +++ b/src/ide/highlight.rs @@ -23,9 +23,9 @@ pub enum Category { Ref, /// A section heading. Heading, - /// A marker of a list, enumeration, or description list. + /// A marker of a list, enumeration, or term list. ListMarker, - /// A term in a description list. + /// A term in a term list. ListTerm, /// The delimiters of a math formula. MathDelimiter, @@ -114,7 +114,7 @@ pub fn highlight(node: &LinkedNode) -> Option { _ => Category::Operator, }), SyntaxKind::Slash => Some(match node.parent_kind() { - Some(SyntaxKind::DescItem) => Category::ListMarker, + Some(SyntaxKind::TermItem) => Category::ListMarker, Some(SyntaxKind::Frac) => Category::MathOperator, _ => Category::Operator, }), @@ -159,7 +159,7 @@ pub fn highlight(node: &LinkedNode) -> Option { SyntaxKind::From => Some(Category::Keyword), SyntaxKind::Markup { .. } - if node.parent_kind() == Some(&SyntaxKind::DescItem) + if node.parent_kind() == Some(&SyntaxKind::TermItem) && node.next_sibling().as_ref().map(|v| v.kind()) == Some(&SyntaxKind::Colon) => { @@ -183,7 +183,7 @@ pub fn highlight(node: &LinkedNode) -> Option { SyntaxKind::ListItem => None, SyntaxKind::EnumItem => None, SyntaxKind::EnumNumbering(_) => Some(Category::ListMarker), - SyntaxKind::DescItem => None, + SyntaxKind::TermItem => None, SyntaxKind::Math => None, SyntaxKind::Atom(_) => None, SyntaxKind::Script => None, diff --git a/src/model/eval.rs b/src/model/eval.rs index 6ad27d6ec..ce1739eda 100644 --- a/src/model/eval.rs +++ b/src/model/eval.rs @@ -274,7 +274,7 @@ impl Eval for ast::MarkupNode { Self::Heading(v) => v.eval(vm)?, Self::List(v) => v.eval(vm)?, Self::Enum(v) => v.eval(vm)?, - Self::Desc(v) => v.eval(vm)?, + Self::Term(v) => v.eval(vm)?, Self::Ref(v) => v.eval(vm)?, Self::Expr(_) => unimplemented!("handled above"), } @@ -393,13 +393,13 @@ impl Eval for ast::EnumItem { } } -impl Eval for ast::DescItem { +impl Eval for ast::TermItem { type Output = Content; fn eval(&self, vm: &mut Vm) -> SourceResult { let term = self.term().eval(vm)?; let description = self.description().eval(vm)?; - Ok((vm.items.desc_item)(term, description)) + Ok((vm.items.term_item)(term, description)) } } diff --git a/src/model/library.rs b/src/model/library.rs index 41a5e8d41..c6449e278 100644 --- a/src/model/library.rs +++ b/src/model/library.rs @@ -59,12 +59,12 @@ pub struct LangItems { pub ref_: fn(target: EcoString) -> Content, /// A section heading: `= Introduction`. pub heading: fn(level: NonZeroUsize, body: Content) -> Content, - /// An item in an unordered list: `- ...`. + /// An item in a bullet list: `- ...`. pub list_item: fn(body: Content) -> Content, - /// An item in an enumeration (ordered list): `+ ...` or `1. ...`. + /// An item in an enumeration (numbered list): `+ ...` or `1. ...`. pub enum_item: fn(number: Option, body: Content) -> Content, - /// An item in a description list: `/ Term: Details`. - pub desc_item: fn(term: Content, description: Content) -> Content, + /// An item in a term list: `/ Term: Details`. + pub term_item: fn(term: Content, description: Content) -> Content, /// A mathematical formula: `$x$`, `$ x^2 $`. pub math: fn(children: Vec, block: bool) -> Content, /// An atom in a formula: `x`, `+`, `12`. @@ -102,7 +102,7 @@ impl Hash for LangItems { self.heading.hash(state); self.list_item.hash(state); self.enum_item.hash(state); - self.desc_item.hash(state); + self.term_item.hash(state); self.math.hash(state); self.math_atom.hash(state); self.math_script.hash(state); diff --git a/src/syntax/ast.rs b/src/syntax/ast.rs index 5847e8168..d2b19ee3e 100644 --- a/src/syntax/ast.rs +++ b/src/syntax/ast.rs @@ -101,12 +101,12 @@ pub enum MarkupNode { Ref(Ref), /// A section heading: `= Introduction`. Heading(Heading), - /// An item in an unordered list: `- ...`. + /// An item in a bullet list: `- ...`. List(ListItem), - /// An item in an enumeration (ordered list): `+ ...` or `1. ...`. + /// An item in an enumeration (numbered list): `+ ...` or `1. ...`. Enum(EnumItem), - /// An item in a description list: `/ Term: Details`. - Desc(DescItem), + /// An item in a term list: `/ Term: Details`. + Term(TermItem), /// An expression. Expr(Expr), } @@ -129,7 +129,7 @@ impl AstNode for MarkupNode { SyntaxKind::Heading => node.cast().map(Self::Heading), SyntaxKind::ListItem => node.cast().map(Self::List), SyntaxKind::EnumItem => node.cast().map(Self::Enum), - SyntaxKind::DescItem => node.cast().map(Self::Desc), + SyntaxKind::TermItem => node.cast().map(Self::Term), _ => node.cast().map(Self::Expr), } } @@ -151,7 +151,7 @@ impl AstNode for MarkupNode { Self::Heading(v) => v.as_untyped(), Self::List(v) => v.as_untyped(), Self::Enum(v) => v.as_untyped(), - Self::Desc(v) => v.as_untyped(), + Self::Term(v) => v.as_untyped(), Self::Expr(v) => v.as_untyped(), } } @@ -362,7 +362,7 @@ impl Heading { } node! { - /// An item in an unordered list: `- ...`. + /// An item in a bullet list: `- ...`. ListItem } @@ -374,7 +374,7 @@ impl ListItem { } node! { - /// An item in an enumeration (ordered list): `+ ...` or `1. ...`. + /// An item in an enumeration (numbered list): `+ ...` or `1. ...`. EnumItem } @@ -394,23 +394,21 @@ impl EnumItem { } node! { - /// An item in a description list: `/ Term: Details`. - DescItem + /// An item in a term list: `/ Term: Details`. + TermItem } -impl DescItem { +impl TermItem { /// The term described by the item. pub fn term(&self) -> Markup { - self.0 - .cast_first_child() - .expect("description list item is missing term") + self.0.cast_first_child().expect("term list item is missing term") } /// The description of the term. pub fn description(&self) -> Markup { self.0 .cast_last_child() - .expect("description list item is missing description") + .expect("term list item is missing description") } } diff --git a/src/syntax/kind.rs b/src/syntax/kind.rs index 02e972c4c..27a8da0f5 100644 --- a/src/syntax/kind.rs +++ b/src/syntax/kind.rs @@ -39,8 +39,7 @@ pub enum SyntaxKind { /// A semicolon terminating an expression: `;`. Semicolon, /// A colon between name/key and value in a dictionary, argument or - /// parameter list, or between the term and body of a description list - /// term: `:`. + /// parameter list, or between the term and body of a term list term: `:`. Colon, /// The strong text toggle, multiplication operator, and wildcard import /// symbol: `*`. @@ -54,8 +53,8 @@ pub enum SyntaxKind { /// The unary negation, binary subtraction operator, and start of list /// items: `-`. Minus, - /// The division operator, start of description list items, and fraction - /// operator in a formula: `/`. + /// The division operator, start of term list items, and fraction operator + /// in a formula: `/`. Slash, /// The superscript operator in a formula: `^`. Hat, @@ -163,14 +162,14 @@ pub enum SyntaxKind { Ref(EcoString), /// A section heading: `= Introduction`. Heading, - /// An item in an unordered list: `- ...`. + /// An item in a bullet list: `- ...`. ListItem, - /// An item in an enumeration (ordered list): `+ ...` or `1. ...`. + /// An item in an enumeration (numbered list): `+ ...` or `1. ...`. EnumItem, /// An explicit enumeration numbering: `23.`. EnumNumbering(NonZeroUsize), - /// An item in a description list: `/ Term: Details`. - DescItem, + /// An item in a term list: `/ Term: Details`. + TermItem, /// A mathematical formula: `$x$`, `$ x^2 $`. Math, /// An atom in a formula: `x`, `+`, `12`. @@ -405,7 +404,7 @@ impl SyntaxKind { Self::ListItem => "list item", Self::EnumItem => "enumeration item", Self::EnumNumbering(_) => "enumeration item numbering", - Self::DescItem => "description list item", + Self::TermItem => "term list item", Self::Math => "math formula", Self::Atom(s) => match s.as_str() { "(" => "opening paren", @@ -533,7 +532,7 @@ impl Hash for SyntaxKind { Self::ListItem => {} Self::EnumItem => {} Self::EnumNumbering(num) => num.hash(state), - Self::DescItem => {} + Self::TermItem => {} Self::Math => {} Self::Atom(c) => c.hash(state), Self::Script => {} diff --git a/src/syntax/parsing.rs b/src/syntax/parsing.rs index d751b6aab..e04054072 100644 --- a/src/syntax/parsing.rs +++ b/src/syntax/parsing.rs @@ -247,7 +247,7 @@ fn markup_node(p: &mut Parser, at_start: &mut bool) { SyntaxKind::Minus => list_item(p, *at_start), SyntaxKind::Plus | SyntaxKind::EnumNumbering(_) => enum_item(p, *at_start), SyntaxKind::Slash => { - desc_item(p, *at_start).ok(); + term_item(p, *at_start).ok(); } SyntaxKind::Colon => { let marker = p.marker(); @@ -341,7 +341,7 @@ fn enum_item(p: &mut Parser, at_start: bool) { } } -fn desc_item(p: &mut Parser, at_start: bool) -> ParseResult { +fn term_item(p: &mut Parser, at_start: bool) -> ParseResult { let marker = p.marker(); let text: EcoString = p.peek_src().into(); p.eat(); @@ -351,7 +351,7 @@ fn desc_item(p: &mut Parser, at_start: bool) -> ParseResult { markup_line(p, |node| matches!(node, SyntaxKind::Colon)); p.expect(SyntaxKind::Colon)?; markup_indented(p, min_indent); - marker.end(p, SyntaxKind::DescItem); + marker.end(p, SyntaxKind::TermItem); } else { marker.convert(p, SyntaxKind::Text(text)); } diff --git a/tests/ref/basics/enum.png b/tests/ref/basics/enum.png index 0c9c94878a283f6a4fd64531418a7fa011b0d13f..5ccdb1ad0dccaa7eef53240e5d26791b91b06c9e 100644 GIT binary patch literal 29431 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 JYqaXb&pTI;^=>pIWhbY6j)r;cxA+Rj8rN4N2W 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 diff --git a/tests/ref/basics/desc.png b/tests/ref/basics/terms.png similarity index 100% rename from tests/ref/basics/desc.png rename to tests/ref/basics/terms.png diff --git a/tests/typ/basics/enum.typ b/tests/typ/basics/enum.typ index 2bec3e9e9..e651ca31b 100644 --- a/tests/typ/basics/enum.typ +++ b/tests/typ/basics/enum.typ @@ -32,9 +32,9 @@ --- // Mix of different lists -- List -+ Enum -/ Desc: List +- Bullet List ++ Numbered List +/ Term: List --- // Test numbering with closure. diff --git a/tests/typ/basics/list.typ b/tests/typ/basics/list.typ index 4a9481315..fc3e5ca72 100644 --- a/tests/typ/basics/list.typ +++ b/tests/typ/basics/list.typ @@ -1,4 +1,4 @@ -// Test unordered lists. +// Test bullet lists. --- - diff --git a/tests/typ/basics/desc.typ b/tests/typ/basics/terms.typ similarity index 86% rename from tests/typ/basics/desc.typ rename to tests/typ/basics/terms.typ index a638098b7..ba23f9095 100644 --- a/tests/typ/basics/desc.typ +++ b/tests/typ/basics/terms.typ @@ -1,4 +1,4 @@ -// Test description lists. +// Test term list. --- / @@ -7,7 +7,7 @@ No: list \ --- // Test with constructor. -#desc( +#terms( ([One], [First]), ([Two], [Second]), ) @@ -32,12 +32,12 @@ No: list \ #set text(8pt) / First list: #lorem(4) -#set desc(hanging-indent: 30pt) +#set terms(hanging-indent: 30pt) / Second list: #lorem(4) --- // Test grid like show rule. -#show desc: it => table( +#show terms: it => table( columns: 2, inset: 3pt, ..it.items.map(item => (emph(item(0)), item(1))).flatten(),