forked from HEL/chronos
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Typst
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Typst
		
	
	
	
	
	
/// Creates a group of sequences
 | 
						|
/// #examples.grp
 | 
						|
/// - name (content): The group's name
 | 
						|
/// - desc (none, content): Optional description
 | 
						|
/// - type (str): The groups's type (should only be set through other functions like @@_alt() or @@_loop() )
 | 
						|
/// - elmts (array): Elements inside the group (can be sequences, other groups, notes, etc.)
 | 
						|
#let _grp(
 | 
						|
  name,
 | 
						|
  desc: none,
 | 
						|
  type: "default",
 | 
						|
  elmts
 | 
						|
) = {}
 | 
						|
 | 
						|
/// Creates an alt-else group of sequences
 | 
						|
/// 
 | 
						|
/// It contains at least one section but can have as many as needed
 | 
						|
/// #examples.alt
 | 
						|
/// - desc (content): The alt's label
 | 
						|
/// - elmts (array): Elements inside the alt's first section
 | 
						|
/// - ..args (content, array): Complementary "else" sections.\ You can add as many else sections as you need by passing a content (else section label) followed by an array of elements (see example)
 | 
						|
#let _alt(
 | 
						|
  desc,
 | 
						|
  elmts,
 | 
						|
  ..args
 | 
						|
)
 | 
						|
 | 
						|
/// Creates a looped group of sequences
 | 
						|
/// #examples.loop
 | 
						|
/// - desc (content): Loop description
 | 
						|
/// - min (none, number): Optional lower bound of the loop
 | 
						|
/// - max (auto, number): Upper bound of the loop. If left as `auto` and `min` is set, it will be infinity (`'*'`)
 | 
						|
/// - elmts (array): Elements inside the group
 | 
						|
#let _loop(
 | 
						|
  desc,
 | 
						|
  min: none,
 | 
						|
  max: auto,
 | 
						|
  elmts
 | 
						|
) = {}
 | 
						|
 | 
						|
/// Synchronizes multiple sequences\
 | 
						|
/// All elements inside a synchronized group will start at the same time
 | 
						|
/// #examples.sync
 | 
						|
/// - elmts (array): Synchronized elements (generally sequences or notes)
 | 
						|
#let _sync(
 | 
						|
  elmts
 | 
						|
)
 | 
						|
 | 
						|
/// Creates an optional group\
 | 
						|
/// This is a simple wrapper around @@_grp()
 | 
						|
/// - desc (content): Group description
 | 
						|
/// - elmts (array): Elements inside the group
 | 
						|
#let _opt(desc, elmts) = {}
 | 
						|
 | 
						|
/// Creates a break group\
 | 
						|
/// This is a simple wrapper around @@_grp()
 | 
						|
/// - desc (content): Group description
 | 
						|
/// - elmts (array): Elements inside the group
 | 
						|
#let _break(desc, elmts) = {} |