forked from HEL/circuiteria
		
	
		
			
				
	
	
		
			138 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Typst
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Typst
		
	
	
	
	
	
| #import "@preview/tidy:0.3.0"
 | |
| #import "@preview/cetz:0.2.2": draw, canvas
 | |
| #import "src/lib.typ"
 | |
| #import "doc/examples.typ"
 | |
| #import "src/circuit.typ": circuit
 | |
| #import "src/element.typ"
 | |
| #import "src/util.typ"
 | |
| #import "src/wire.typ"
 | |
| 
 | |
| #set heading(numbering: (..num) => if num.pos().len() < 4 {
 | |
|   numbering("1.1", ..num)
 | |
| })
 | |
| #{
 | |
|   outline(indent: true, depth: 3)
 | |
| }
 | |
| #set page(numbering: "1/1", header: align(right)[circuiteria #sym.dash.em v#lib.version])
 | |
| #show link: set text(blue)
 | |
| #show heading.where(level: 3): it => context {
 | |
|   let cnt = counter(heading)
 | |
|   let i = cnt.get().at(it.depth) - 1
 | |
|   let color = util.colors.values().at(i)
 | |
|   block(width: 100%)[
 | |
|     #grid(
 | |
|       columns: (auto, 1fr),
 | |
|       column-gutter: 1em,
 | |
|       align: horizon,
 | |
|       it,
 | |
|       {
 | |
|         place(horizon)[
 | |
|           #line(
 | |
|             start: (0%, 0%),
 | |
|             end: (100%, 0%),
 | |
|             stroke: color + 1pt
 | |
|           )
 | |
|         ]
 | |
|         place(horizon)[
 | |
|           #circle(radius: 3pt, stroke: none, fill: color)
 | |
|         ]
 | |
|         place(horizon+right)[
 | |
|           #circle(radius: 3pt, stroke: none, fill: color)
 | |
|         ]
 | |
|       }
 | |
|     )
 | |
|   ]
 | |
| }
 | |
| 
 | |
| #let doc-ref(target, full: false, var: false) = {
 | |
|   let (module, func) = target.split(".")
 | |
|   let label-name = module + func
 | |
|   let display-name = func
 | |
|   if full {
 | |
|     display-name = target
 | |
|   }
 | |
|   if not var {
 | |
|     label-name += "()"
 | |
|     display-name += "()"
 | |
|   }
 | |
|   link(label(label-name))[#display-name]
 | |
| }
 | |
| 
 | |
| = Introduction
 | |
| 
 | |
| This package provides a way to make beautiful block circuit diagrams using the CeTZ package.
 | |
| 
 | |
| = Usage
 | |
| 
 | |
| Simply import #link("src/lib.typ") and call the `circuit` function:
 | |
| #pad(left: 1em)[```typ
 | |
| #import "src/lib.typ"
 | |
| #lib.circuit({
 | |
|   import lib: *
 | |
|   ...
 | |
| })
 | |
| ```]
 | |
| 
 | |
| = Reference
 | |
| 
 | |
| #let circuit-docs = tidy.parse-module(
 | |
|   read("src/circuit.typ"),
 | |
|   name: "circuit",
 | |
|   require-all-parameters: true
 | |
| )
 | |
| #tidy.show-module(circuit-docs)
 | |
| 
 | |
| #pagebreak()
 | |
| 
 | |
| #let util-docs = tidy.parse-module(
 | |
|   read("src/util.typ"),
 | |
|   name: "util",
 | |
|   require-all-parameters: true,
 | |
|   scope: (
 | |
|     util: util,
 | |
|     canvas: canvas,
 | |
|     draw: draw
 | |
|   )
 | |
| )
 | |
| #tidy.show-module(util-docs)
 | |
| 
 | |
| #pagebreak()
 | |
| 
 | |
| #let wire-docs = tidy.parse-module(
 | |
|   read("src/wire.typ"),
 | |
|   name: "wire",
 | |
|   require-all-parameters: true,
 | |
|   scope: (
 | |
|     wire: wire,
 | |
|     circuit: circuit,
 | |
|     draw: draw,
 | |
|     examples: examples,
 | |
|     doc-ref: doc-ref
 | |
|   )
 | |
| )
 | |
| #tidy.show-module(wire-docs)
 | |
| 
 | |
| #pagebreak()
 | |
| 
 | |
| #let element-docs = tidy.parse-module(
 | |
|   read("src/elements/element.typ") + "\n" +
 | |
|   read("src/elements/alu.typ") + "\n" +
 | |
|   read("src/elements/block.typ") + "\n" +
 | |
|   read("src/elements/extender.typ") + "\n" +
 | |
|   read("src/elements/multiplexer.typ"),
 | |
|   name: "element",
 | |
|   require-all-parameters: true,
 | |
|   scope: (
 | |
|     element: element,
 | |
|     circuit: circuit,
 | |
|     draw: draw,
 | |
|     wire: wire,
 | |
|     tidy: tidy,
 | |
|     examples: examples,
 | |
|     doc-ref: doc-ref
 | |
|   )
 | |
| )
 | |
| 
 | |
| #tidy.show-module(element-docs, sort-functions: false)
 | |
| 
 | |
| #(tidy.utilities.get-style-functions(tidy.styles.default).show-reference)(label("wirewire()"), "test") |