36 lines
		
	
	
		
			692 B
		
	
	
	
		
			Typst
		
	
	
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
		
			692 B
		
	
	
	
		
			Typst
		
	
	
	
	
	
| 
								 | 
							
								#let inwriting = false
							 | 
						||
| 
								 | 
							
								#let draft = false
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#assert(not(inwriting and not(draft)), message: "If inwriting is true, draft should be true as well.")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#let todo(it) = [
							 | 
						||
| 
								 | 
							
								  #if inwriting [
							 | 
						||
| 
								 | 
							
								    #text(size: 0.8em)[#emoji.pencil]  #text(it, fill: red, weight: 600)
							 | 
						||
| 
								 | 
							
								  ]
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#let silentheading(level, body) = [
							 | 
						||
| 
								 | 
							
								  #heading(outlined: false, level: level, numbering: none, bookmarked: true)[#body]
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#let in-outline = state("in-outline", false)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#let flex-caption-styles = rest => {
							 | 
						||
| 
								 | 
							
								  show outline: it => {
							 | 
						||
| 
								 | 
							
								    in-outline.update(true)
							 | 
						||
| 
								 | 
							
								    it
							 | 
						||
| 
								 | 
							
								    in-outline.update(false)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  rest
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#let flex-caption(long, short) = (
							 | 
						||
| 
								 | 
							
								  context (
							 | 
						||
| 
								 | 
							
								    if in-outline.get() {
							 | 
						||
| 
								 | 
							
								      short
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      long
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  )
							 | 
						||
| 
								 | 
							
								)
							 |