forked from HEL/circuiteria
138 lines
2.9 KiB
Plaintext
138 lines
2.9 KiB
Plaintext
#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") |