Merge branch 'master' into fix-bugs

This commit is contained in:
Fuad Hasan 2025-02-04 08:24:34 +06:00
commit 0ba58881f7
No known key found for this signature in database
GPG key ID: 3FB5E37EEA838518
59 changed files with 9709 additions and 4128 deletions

View file

@ -261,6 +261,7 @@ let us know and we'll be happy to include it here!
- **ent2d2**: [https://github.com/tmc/ent2d2](https://github.com/tmc/ent2d2)
- **MkDocs Plugin**: [https://github.com/landmaj/mkdocs-d2-plugin](https://github.com/landmaj/mkdocs-d2-plugin)
- **Remark Plugin**: [https://github.com/mech-a/remark-d2](https://github.com/mech-a/remark-d2)
- **VitePress Plugin**: [https://github.com/BadgerHobbs/vitepress-plugin-d2](https://github.com/BadgerHobbs/vitepress-plugin-d2)
- **Zed extension**: [https://github.com/gabeidx/zed-d2](https://github.com/gabeidx/zed-d2)
### Misc

View file

@ -20,6 +20,7 @@
- Compiler: reserved keywords with missing values error instead of silently doing nothing [#2251](https://github.com/terrastruct/d2/pull/2251)
- Render: SVG outputs conform to stricter HTML standards, e.g. no duplicate ids [#2273](https://github.com/terrastruct/d2/issues/2273)
- Themes: theme names are consistently cased [#2322](https://github.com/terrastruct/d2/pull/2322)
- Nears: constant nears avoid collision with edge routes [#2327](https://github.com/terrastruct/d2/pull/2327)
#### Bugfixes ⛑️
@ -27,4 +28,6 @@
- Markdown: fixes ampersands in URLs in markdown [#2219](https://github.com/terrastruct/d2/pull/2219)
- Globs: fixes edge case where globs with imported boards would create empty boards [#2247](https://github.com/terrastruct/d2/pull/2247)
- Sequence diagrams: fixes alignment of notes when self messages are above it [#2264](https://github.com/terrastruct/d2/pull/2264)
- Null: fixes `null`ing a connection with absolute syntax [#2318](https://github.com/terrastruct/d2/issues/2318)
- Null: fixes `null`ing a connection with absolute syntax [#2318](https://github.com/terrastruct/d2/issues/2318)
- Gradients: works with connection fills [#2326](https://github.com/terrastruct/d2/pull/2326)
- Latex: fixes backslashes doubling on successive parses [#2328](https://github.com/terrastruct/d2/pull/2328)

View file

@ -15,6 +15,8 @@
.Ar layout Op Ar name
.Nm d2
.Ar fmt Ar file.d2 ...
.Nm d2
.Ar play Ar file.d2
.Sh DESCRIPTION
.Nm
compiles and renders
@ -141,6 +143,9 @@ Print version information and exit
.It Fl -stdout-format Ar string
Set the output format when writing to stdout. Supported formats are: png, svg. Only used when output is set to stdout (-)
.Ns .
.It Fl -no-xml-tag Ar false
Omit XML tag (<?xml ...?>) from output SVG files. Useful when generating SVGs for direct HTML embedding
.Ns .
.El
.Sh SUBCOMMANDS
.Bl -tag -width Fl
@ -155,10 +160,8 @@ Lists available themes
.Ns .
.It Ar fmt Ar file.d2 ...
Format all passed files
.It Fl -no-xml-tag Ar false
Omit XML tag (<?xml ...?>) from output SVG files. Useful when generating SVGs for direct HTML embedding
.Ns .
.Ns .
.It Ar play Ar file.d2
Opens the file in playground, an online web viewer (https://play.d2lang.com)
.El
.Sh ENVIRONMENT VARIABLES
Many flags can also be set with environment variables.

View file

@ -22,6 +22,7 @@ Usage:
%[1]s [--watch=false] [--theme=0] file.d2 [file.svg | file.png]
%[1]s layout [name]
%[1]s fmt file.d2 ...
%[1]s play [--theme=0] [--sketch] file.d2
%[1]s compiles and renders file.d2 to file.svg | file.png
It defaults to file.svg if an output path is not provided.
@ -38,6 +39,7 @@ Subcommands:
%[1]s layout [name] - Display long help for a particular layout engine, including its configuration options
%[1]s themes - Lists available themes
%[1]s fmt file.d2 ... - Format passed files
%[1]s play file.d2 - Opens the file in playground, an online web viewer (https://play.d2lang.com)
See more docs and the source code at https://oss.terrastruct.com/d2.
Hosted icons at https://icons.terrastruct.com.

View file

@ -171,6 +171,8 @@ func Run(ctx context.Context, ms *xmain.State) (err error) {
return nil
case "fmt":
return fmtCmd(ctx, ms, *checkFlag)
case "play":
return playCmd(ctx, ms)
case "version":
if len(ms.Opts.Flags.Args()) > 1 {
return xmain.UsageErrorf("version subcommand accepts no arguments")

75
d2cli/play.go Normal file
View file

@ -0,0 +1,75 @@
package d2cli
import (
"context"
"fmt"
"io"
"os"
"oss.terrastruct.com/d2/lib/urlenc"
"oss.terrastruct.com/util-go/xbrowser"
"oss.terrastruct.com/util-go/xmain"
)
func playCmd(ctx context.Context, ms *xmain.State) error {
if len(ms.Opts.Flags.Args()) != 2 {
return xmain.UsageErrorf("play must be passed one argument: either a filepath or '-' for stdin")
}
filepath := ms.Opts.Flags.Args()[1]
theme, err := ms.Opts.Flags.GetInt64("theme")
if err != nil {
return err
}
sketch, err := ms.Opts.Flags.GetBool("sketch")
if err != nil {
return err
}
var sketchNumber int
if sketch {
sketchNumber = 1
} else {
sketchNumber = 0
}
fileRaw, err := readInput(filepath)
if err != nil {
return err
}
encoded, err := urlenc.Encode(fileRaw)
if err != nil {
return err
}
url := fmt.Sprintf("https://play.d2lang.com/?script=%s&sketch=%d&theme=%d&", encoded, sketchNumber, theme)
openBrowser(ctx, ms, url)
return nil
}
func readInput(filepath string) (string, error) {
if filepath == "-" {
data, err := io.ReadAll(os.Stdin)
if err != nil {
return "", fmt.Errorf("error reading from stdin: %w", err)
}
return string(data), nil
}
data, err := os.ReadFile(filepath)
if err != nil {
return "", xmain.UsageErrorf(err.Error())
}
return string(data), nil
}
func openBrowser(ctx context.Context, ms *xmain.State, url string) {
ms.Log.Info.Printf("opening playground: %s", url)
err := xbrowser.Open(ctx, ms.Env, url)
if err != nil {
ms.Log.Warn.Printf("failed to open browser to %v: %v", url, err)
}
}

View file

@ -190,6 +190,20 @@ func boundingBox(g *d2graph.Graph) (tl, br *geo.Point) {
}
}
for _, edge := range g.Edges {
if edge.Src.OuterNearContainer() != nil || edge.Dst.OuterNearContainer() != nil {
continue
}
if edge.Route != nil {
for _, point := range edge.Route {
x1 = math.Min(x1, point.X)
y1 = math.Min(y1, point.Y)
x2 = math.Max(x2, point.X)
y2 = math.Max(y2, point.Y)
}
}
}
if math.IsInf(x1, 1) && math.IsInf(x2, -1) {
x1 = 0
x2 = 0

View file

@ -1480,12 +1480,6 @@ func (p *parser) parseBlockString() *d2ast.BlockString {
}
if r != endHint {
if (bs.Tag == "latex" || bs.Tag == "tex") && r == '\\' {
// For LaTeX, where single backslash is common, we escape it so that users don't have to write double the backslashes
sb.WriteRune('\\')
sb.WriteRune('\\')
continue
}
sb.WriteRune(r)
continue
}

View file

@ -6,6 +6,7 @@ import (
"math"
"regexp"
"strconv"
"strings"
"oss.terrastruct.com/d2/lib/jsrunner"
"oss.terrastruct.com/util-go/xdefer"
@ -28,6 +29,7 @@ var svgRe = regexp.MustCompile(`<svg[^>]+width="([0-9\.]+)ex" height="([0-9\.]+)
func Render(s string) (_ string, err error) {
defer xdefer.Errorf(&err, "latex failed to parse")
s = doubleBackslashes(s)
runner := jsrunner.NewJSRunner()
if _, err := runner.RunString(polyfillsJS); err != nil {
@ -82,3 +84,15 @@ func Measure(s string) (width, height int, err error) {
return int(math.Ceil(wf * float64(pxPerEx))), int(math.Ceil(hf * float64(pxPerEx))), nil
}
func doubleBackslashes(s string) string {
var result strings.Builder
for i := 0; i < len(s); i++ {
if s[i] == '\\' {
result.WriteString("\\\\")
} else {
result.WriteByte(s[i])
}
}
return result.String()
}

View file

@ -8,7 +8,7 @@ import (
func TestRender(t *testing.T) {
txts := []string{
`a + b = c`,
`\\frac{1}{2}`,
`\frac{1}{2}`,
`a + b
= c
`,
@ -24,10 +24,3 @@ func TestRender(t *testing.T) {
}
}
}
func TestRenderError(t *testing.T) {
_, err := Render(`\frac{1}{2}`)
if err == nil {
t.Fatal("expected to error on invalid latex syntax")
}
}

View file

@ -840,6 +840,22 @@ func ArrowheadJS(r jsrunner.JSRunner, arrowhead d2target.Arrowhead, stroke strin
stroke,
BG_COLOR,
)
case d2target.BoxArrowhead:
arrowJS = fmt.Sprintf(
`node = rc.polygon(%s, { strokeWidth: %d, stroke: "%s", fill: "%s", fillStyle: "solid", seed: 1})`,
`[[0, -10], [0, 10], [-20, 10], [-20, -10]]`,
strokeWidth,
stroke,
BG_COLOR,
)
case d2target.FilledBoxArrowhead:
arrowJS = fmt.Sprintf(
`node = rc.polygon(%s, { strokeWidth: %d, stroke: "%s", fill: "%s", fillStyle: "solid", seed: 1})`,
`[[0, -10], [0, 10], [-20, 10], [-20, -10]]`,
strokeWidth,
stroke,
stroke,
)
}
return
}

View file

@ -462,6 +462,20 @@ a.9 <-> b.9: cf-one-required {
source-arrowhead.shape: cf-one-required
target-arrowhead.shape: cf-one-required
}
a.10 <-> b.10: box {
source-arrowhead.shape: box
target-arrowhead.shape: box
}
a.11 <-> b.11: box-filled {
source-arrowhead: {
shape: box
style.filled: true
}
target-arrowhead: {
shape: box
style.filled: true
}
}
`,
},
{

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 146 KiB

View file

@ -289,6 +289,54 @@ func arrowheadMarker(isTarget bool, id string, connection d2target.Connection, i
}
path = circleEl.Render()
case d2target.FilledBoxArrowhead:
polygonEl := d2themes.NewThemableElement("polygon", inlineTheme)
polygonEl.ClassName = "connection"
polygonEl.Fill = connection.Stroke
polygonEl.Attributes = fmt.Sprintf(`stroke-width="%d"`, connection.StrokeWidth)
if isTarget {
polygonEl.Points = fmt.Sprintf("%f,%f %f,%f %f,%f %f,%f",
0., 0.,
0., height,
width, height,
width, 0.,
)
} else {
polygonEl.Points = fmt.Sprintf("%f,%f %f,%f %f,%f %f,%f",
0., 0.,
0., height,
width, height,
width, 0.,
)
}
path = polygonEl.Render()
case d2target.BoxArrowhead:
polygonEl := d2themes.NewThemableElement("polygon", inlineTheme)
polygonEl.ClassName = "connection"
polygonEl.Fill = d2target.BG_COLOR
polygonEl.Stroke = connection.Stroke
polygonEl.Attributes = fmt.Sprintf(`stroke-width="%d"`, connection.StrokeWidth)
polygonEl.Style = fmt.Sprintf("%sstroke-linejoin:miter;", polygonEl.Style)
inset := strokeWidth / 2
if isTarget {
polygonEl.Points = fmt.Sprintf("%f,%f %f,%f %f,%f %f,%f",
inset, inset,
inset, height-inset,
width-inset, height-inset,
width-inset, inset,
)
} else {
polygonEl.Points = fmt.Sprintf("%f,%f %f,%f %f,%f %f,%f",
inset, inset,
inset, height-inset,
width-inset, height-inset,
width-inset, inset,
)
}
path = polygonEl.Render()
case d2target.CfOne, d2target.CfMany, d2target.CfOneRequired, d2target.CfManyRequired:
offset := 3.0 + float64(connection.StrokeWidth)*1.8
@ -1906,6 +1954,9 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) {
if color.IsGradient(c.Stroke) {
defineGradients(buf, c.Stroke)
}
if color.IsGradient(c.Fill) {
defineGradients(buf, c.Fill)
}
}
// Apply hash on IDs for targeting, to be specific for this diagram

View file

@ -755,6 +755,8 @@ const (
FilledDiamondArrowhead Arrowhead = "filled-diamond"
CircleArrowhead Arrowhead = "circle"
FilledCircleArrowhead Arrowhead = "filled-circle"
BoxArrowhead Arrowhead = "box"
FilledBoxArrowhead Arrowhead = "filled-box"
// For fat arrows
LineArrowhead Arrowhead = "line"
@ -775,6 +777,7 @@ var Arrowheads = map[string]struct{}{
string(TriangleArrowhead): {},
string(DiamondArrowhead): {},
string(CircleArrowhead): {},
string(BoxArrowhead): {},
string(CfOne): {},
string(CfMany): {},
string(CfOneRequired): {},
@ -802,6 +805,11 @@ func ToArrowhead(arrowheadType string, filled *bool) Arrowhead {
return UnfilledTriangleArrowhead
}
return TriangleArrowhead
case string(BoxArrowhead):
if filled != nil && *filled {
return FilledBoxArrowhead
}
return BoxArrowhead
case string(CfOne):
return CfOne
case string(CfMany):
@ -856,6 +864,11 @@ func (arrowhead Arrowhead) Dimensions(strokeWidth float64) (width, height float6
baseHeight = 8
widthMultiplier = 5
heightMultiplier = 5
case FilledBoxArrowhead, BoxArrowhead:
baseWidth = 6
baseHeight = 6
widthMultiplier = 5
heightMultiplier = 5
case CfOne, CfMany, CfOneRequired, CfManyRequired:
baseWidth = 9
baseHeight = 9

View file

@ -16,6 +16,7 @@ You may install `d2` through any of the following methods.
- [Windows](#windows)
- [Release archives](#release-archives)
- [WSL](#wsl)
- [Native Package managers](#native-package-managers)
- [Docker](#docker)
- [Coming soon](#coming-soon)
@ -209,6 +210,23 @@ under plain Windows.
aka Windows Subsystem for Linux if that's what you prefer. Installation is just like any
other Linux system.
### Native Package managers
The following are community-managed Windows releases of d2 on popular package managers
#### Scoop
[![scoop/d2 badge](https://img.shields.io/scoop/v/d2)](https://scoop.sh/#/apps?q=d2&id=06d1259ce6446dd25dafa1a6c57285159ec927b0)
```sh
scoop install main/d2
```
#### Chocolatey
[![chocolatey/d2_badge](https://img.shields.io/chocolatey/v/d2)]([https://chocolatey.org/](https://community.chocolatey.org/packages/d2/0.6.6))
```sh
choco install d2
```
## Docker
https://hub.docker.com/repository/docker/terrastruct/d2

View file

@ -2325,6 +2325,29 @@ c <-> d: filled-circle {
shape: circle
style.filled: true
}
}`,
},
{
name: "box_arrowhead",
script: `
a <-> b: box {
source-arrowhead: {
shape: box
}
target-arrowhead: {
shape: box
}
}
c <-> d: filled-box {
source-arrowhead: {
shape: box
style.filled: true
}
target-arrowhead: {
shape: box
style.filled: true
}
}`,
},
{

View file

@ -215,6 +215,78 @@ filled circle: {
}
}
box: {
start: ""
end: ""
start.1 <-> end.1: 1 {
style.stroke-width: 1
source-arrowhead.shape: box
target-arrowhead.shape: box
}
start.2 <-> end.2: 2 {
style.stroke-width: 2
source-arrowhead.shape: box
target-arrowhead.shape: box
}
start.4 <-> end.4: 4 {
style.stroke-width: 4
source-arrowhead.shape: box
target-arrowhead.shape: box
}
start.8 <-> end.8: 8 {
style.stroke-width: 8
source-arrowhead.shape: box
target-arrowhead.shape: box
}
start.15 <-> end.15: 15 {
style.stroke-width: 15
source-arrowhead.shape: box
target-arrowhead.shape: box
}
}
filled-box: {
start: ""
end: ""
start.1 <-> end.1: 1 {
style.stroke-width: 1
source-arrowhead.shape: box
target-arrowhead.shape: box
source-arrowhead.style.filled: true
target-arrowhead.style.filled: true
}
start.2 <-> end.2: 2 {
style.stroke-width: 2
source-arrowhead.shape: box
target-arrowhead.shape: box
source-arrowhead.style.filled: true
target-arrowhead.style.filled: true
}
start.4 <-> end.4: 4 {
style.stroke-width: 4
source-arrowhead.shape: box
target-arrowhead.shape: box
source-arrowhead.style.filled: true
target-arrowhead.style.filled: true
}
start.8 <-> end.8: 8 {
style.stroke-width: 8
source-arrowhead.shape: box
target-arrowhead.shape: box
source-arrowhead.style.filled: true
target-arrowhead.style.filled: true
}
start.15 <-> end.15: 15 {
style.stroke-width: 15
source-arrowhead.shape: box
target-arrowhead.shape: box
source-arrowhead.style.filled: true
target-arrowhead.style.filled: true
}
}
cf one: {
start: ""
end: ""

View file

@ -333,7 +333,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\lim_{h \\\\rightarrow 0 } \\\\frac{f(x+h)-f(x)}{h}",
"label": "\\lim_{h \\rightarrow 0 } \\frac{f(x+h)-f(x)}{h}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View file

@ -333,7 +333,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\lim_{h \\\\rightarrow 0 } \\\\frac{f(x+h)-f(x)}{h}",
"label": "\\lim_{h \\rightarrow 0 } \\frac{f(x+h)-f(x)}{h}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 181 KiB

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 173 KiB

View file

@ -0,0 +1,322 @@
{
"name": "",
"config": {
"sketch": false,
"themeID": 0,
"darkThemeID": null,
"pad": null,
"center": null,
"layoutEngine": null
},
"isFolderOnly": false,
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "a",
"type": "rectangle",
"pos": {
"x": 0,
"y": 0
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "a",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "b",
"type": "rectangle",
"pos": {
"x": 0,
"y": 187
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "b",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "c",
"type": "rectangle",
"pos": {
"x": 114,
"y": 0
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "c",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "d",
"type": "rectangle",
"pos": {
"x": 113,
"y": 187
},
"width": 54,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "d",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 9,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
}
],
"connections": [
{
"id": "(a <-> b)[0]",
"src": "a",
"srcArrow": "box",
"dst": "b",
"dstArrow": "box",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"borderRadius": 10,
"label": "box",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 25,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"link": "",
"route": [
{
"x": 26.5,
"y": 65.5
},
{
"x": 26.5,
"y": 114.30000305175781
},
{
"x": 26.5,
"y": 138.6999969482422
},
{
"x": 26.5,
"y": 187.5
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
},
{
"id": "(c <-> d)[0]",
"src": "c",
"srcArrow": "filled-box",
"dst": "d",
"dstArrow": "filled-box",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"borderRadius": 10,
"label": "filled-box",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 63,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"link": "",
"route": [
{
"x": 140,
"y": 65.5
},
{
"x": 140,
"y": 114.30000305175781
},
{
"x": 140,
"y": 138.6999969482422
},
{
"x": 140,
"y": 187.5
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
}
],
"root": {
"id": "",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 0,
"borderRadius": 0,
"fill": "N7",
"stroke": "",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "",
"fontSize": 0,
"fontFamily": "",
"language": "",
"color": "",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"zIndex": 0,
"level": 0
}
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -0,0 +1,304 @@
{
"name": "",
"config": {
"sketch": false,
"themeID": 0,
"darkThemeID": null,
"pad": null,
"center": null,
"layoutEngine": null
},
"isFolderOnly": false,
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "a",
"type": "rectangle",
"pos": {
"x": 12,
"y": 12
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "a",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "b",
"type": "rectangle",
"pos": {
"x": 12,
"y": 239
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "b",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "c",
"type": "rectangle",
"pos": {
"x": 85,
"y": 12
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "c",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "d",
"type": "rectangle",
"pos": {
"x": 85,
"y": 239
},
"width": 54,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "d",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 9,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
}
],
"connections": [
{
"id": "(a <-> b)[0]",
"src": "a",
"srcArrow": "box",
"dst": "b",
"dstArrow": "box",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"borderRadius": 10,
"label": "box",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 25,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"link": "",
"route": [
{
"x": 38.5,
"y": 78
},
{
"x": 38.5,
"y": 239
}
],
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
},
{
"id": "(c <-> d)[0]",
"src": "c",
"srcArrow": "filled-box",
"dst": "d",
"dstArrow": "filled-box",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"borderRadius": 10,
"label": "filled-box",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 63,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"link": "",
"route": [
{
"x": 112,
"y": 78
},
{
"x": 112,
"y": 239
}
],
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
}
],
"root": {
"id": "",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 0,
"borderRadius": 0,
"fill": "N7",
"stroke": "",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "",
"fontSize": 0,
"fontFamily": "",
"language": "",
"color": "",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"zIndex": 0,
"level": 0
}
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -123,7 +123,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\begin{CD} B @>{\\\\text{very long label}}>> C S^{{\\\\mathcal{W}}_\\\\Lambda}\\\\otimes T @>j>> T\\\\\\\\ @VVV V \\\\end{CD}",
"label": "\\begin{CD} B @>{\\text{very long label}}>> C S^{{\\mathcal{W}}_\\Lambda}\\otimes T @>j>> T\\\\ @VVV V \\end{CD}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -206,7 +206,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\bra{a}\\\\ket{b}",
"label": "\\bra{a}\\ket{b}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -289,7 +289,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\cancel{Culture + 5}",
"label": "\\cancel{Culture + 5}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -384,7 +384,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\textcolor{red}{y} = \\\\textcolor{green}{\\\\sin} x",
"label": "\\textcolor{red}{y} = \\textcolor{green}{\\sin} x",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -467,7 +467,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\lambda = 10.6\\\\,\\\\micro\\\\mathrm{m}",
"label": "\\lambda = 10.6\\,\\micro\\mathrm{m}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -550,7 +550,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\ce{SO4^2- + Ba^2+ -> BaSO4 v}",
"label": "\\ce{SO4^2- + Ba^2+ -> BaSO4 v}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -633,7 +633,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\var{F[g(x)]}\n\\\\dd(\\\\cos\\\\theta)",
"label": "\\var{F[g(x)]}\n\\dd(\\cos\\theta)",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -716,7 +716,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\displaylines{x = a + b \\\\\\\\ y = b + c}\n\\\\sum_{k=1}^{n} h_{k} \\\\int_{0}^{1} \\\\bigl(\\\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\\\partial_{k} f(a)\\\\bigr) \\\\,dt",
"label": "\\displaylines{x = a + b \\\\ y = b + c}\n\\sum_{k=1}^{n} h_{k} \\int_{0}^{1} \\bigl(\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\partial_{k} f(a)\\bigr) \\,dt",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -799,7 +799,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\min_{ \\\\mathclap{\\\\substack{ x \\\\in \\\\mathbb{R}^n \\\\ x \\\\geq 0 \\\\ Ax \\\\leq b }}} c^T x",
"label": "\\min_{ \\mathclap{\\substack{ x \\in \\mathbb{R}^n \\ x \\geq 0 \\ Ax \\leq b }}} c^T x",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 120 KiB

View file

@ -123,7 +123,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\begin{CD} B @>{\\\\text{very long label}}>> C S^{{\\\\mathcal{W}}_\\\\Lambda}\\\\otimes T @>j>> T\\\\\\\\ @VVV V \\\\end{CD}",
"label": "\\begin{CD} B @>{\\text{very long label}}>> C S^{{\\mathcal{W}}_\\Lambda}\\otimes T @>j>> T\\\\ @VVV V \\end{CD}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -206,7 +206,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\bra{a}\\\\ket{b}",
"label": "\\bra{a}\\ket{b}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -289,7 +289,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\cancel{Culture + 5}",
"label": "\\cancel{Culture + 5}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -384,7 +384,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\textcolor{red}{y} = \\\\textcolor{green}{\\\\sin} x",
"label": "\\textcolor{red}{y} = \\textcolor{green}{\\sin} x",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -467,7 +467,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\lambda = 10.6\\\\,\\\\micro\\\\mathrm{m}",
"label": "\\lambda = 10.6\\,\\micro\\mathrm{m}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -550,7 +550,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\ce{SO4^2- + Ba^2+ -> BaSO4 v}",
"label": "\\ce{SO4^2- + Ba^2+ -> BaSO4 v}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -633,7 +633,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\var{F[g(x)]}\n\\\\dd(\\\\cos\\\\theta)",
"label": "\\var{F[g(x)]}\n\\dd(\\cos\\theta)",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -716,7 +716,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\displaylines{x = a + b \\\\\\\\ y = b + c}\n\\\\sum_{k=1}^{n} h_{k} \\\\int_{0}^{1} \\\\bigl(\\\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\\\partial_{k} f(a)\\\\bigr) \\\\,dt",
"label": "\\displaylines{x = a + b \\\\ y = b + c}\n\\sum_{k=1}^{n} h_{k} \\int_{0}^{1} \\bigl(\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\partial_{k} f(a)\\bigr) \\,dt",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -799,7 +799,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\min_{ \\\\mathclap{\\\\substack{ x \\\\in \\\\mathbb{R}^n \\\\ x \\\\geq 0 \\\\ Ax \\\\leq b }}} c^T x",
"label": "\\min_{ \\mathclap{\\substack{ x \\in \\mathbb{R}^n \\ x \\geq 0 \\ Ax \\leq b }}} c^T x",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 120 KiB

View file

@ -39,7 +39,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\Huge{\\\\frac{\\\\alpha g^2}{\\\\omega^5} e^{[ -0.74\\\\bigl\\\\{\\\\frac{\\\\omega U_\\\\omega 19.5}{g}\\\\bigr\\\\}^{\\\\!-4}\\\\,]}}",
"label": "\\Huge{\\frac{\\alpha g^2}{\\omega^5} e^{[ -0.74\\bigl\\{\\frac{\\omega U_\\omega 19.5}{g}\\bigr\\}^{\\!-4}\\,]}}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -121,7 +121,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "gibberish\\\\; math:\\\\sum_{i=0}^\\\\infty i^2",
"label": "gibberish\\; math:\\sum_{i=0}^\\infty i^2",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -330,7 +330,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\min_{ \\\\mathclap{\\\\substack{ x \\\\in \\\\mathbb{R}^n \\\\ x \\\\geq 0 \\\\ Ax \\\\leq b }}} c^T x",
"label": "\\min_{ \\mathclap{\\substack{ x \\in \\mathbb{R}^n \\ x \\geq 0 \\ Ax \\leq b }}} c^T x",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View file

@ -39,7 +39,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\Huge{\\\\frac{\\\\alpha g^2}{\\\\omega^5} e^{[ -0.74\\\\bigl\\\\{\\\\frac{\\\\omega U_\\\\omega 19.5}{g}\\\\bigr\\\\}^{\\\\!-4}\\\\,]}}",
"label": "\\Huge{\\frac{\\alpha g^2}{\\omega^5} e^{[ -0.74\\bigl\\{\\frac{\\omega U_\\omega 19.5}{g}\\bigr\\}^{\\!-4}\\,]}}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -121,7 +121,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "gibberish\\\\; math:\\\\sum_{i=0}^\\\\infty i^2",
"label": "gibberish\\; math:\\sum_{i=0}^\\infty i^2",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",
@ -330,7 +330,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\min_{ \\\\mathclap{\\\\substack{ x \\\\in \\\\mathbb{R}^n \\\\ x \\\\geq 0 \\\\ Ax \\\\leq b }}} c^T x",
"label": "\\min_{ \\mathclap{\\substack{ x \\in \\mathbb{R}^n \\ x \\geq 0 \\ Ax \\leq b }}} c^T x",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View file

@ -833,7 +833,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\displaylines{x = a + b \\\\\\\\ y = b + c}\n\\\\sum_{k=1}^{n} h_{k} \\\\int_{0}^{1} \\\\bigl(\\\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\\\partial_{k} f(a)\\\\bigr) \\\\,dt",
"label": "\\displaylines{x = a + b \\\\ y = b + c}\n\\sum_{k=1}^{n} h_{k} \\int_{0}^{1} \\bigl(\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\partial_{k} f(a)\\bigr) \\,dt",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 119 KiB

View file

@ -833,7 +833,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\displaylines{x = a + b \\\\\\\\ y = b + c}\n\\\\sum_{k=1}^{n} h_{k} \\\\int_{0}^{1} \\\\bigl(\\\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\\\partial_{k} f(a)\\\\bigr) \\\\,dt",
"label": "\\displaylines{x = a + b \\\\ y = b + c}\n\\sum_{k=1}^{n} h_{k} \\int_{0}^{1} \\bigl(\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\partial_{k} f(a)\\bigr) \\,dt",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 118 KiB

View file

@ -837,7 +837,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\displaylines{x = a + b \\\\\\\\ y = b + c}\n\\\\sum_{k=1}^{n} h_{k} \\\\int_{0}^{1} \\\\bigl(\\\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\\\partial_{k} f(a)\\\\bigr) \\\\,dt",
"label": "\\displaylines{x = a + b \\\\ y = b + c}\n\\sum_{k=1}^{n} h_{k} \\int_{0}^{1} \\bigl(\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\partial_{k} f(a)\\bigr) \\,dt",
"fontSize": 16,
"fontFamily": "mono",
"language": "latex",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 122 KiB

View file

@ -837,7 +837,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\displaylines{x = a + b \\\\\\\\ y = b + c}\n\\\\sum_{k=1}^{n} h_{k} \\\\int_{0}^{1} \\\\bigl(\\\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\\\partial_{k} f(a)\\\\bigr) \\\\,dt",
"label": "\\displaylines{x = a + b \\\\ y = b + c}\n\\sum_{k=1}^{n} h_{k} \\int_{0}^{1} \\bigl(\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\partial_{k} f(a)\\bigr) \\,dt",
"fontSize": 16,
"fontFamily": "mono",
"language": "latex",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

View file

@ -0,0 +1,503 @@
{
"name": "",
"config": {
"sketch": false,
"themeID": 0,
"darkThemeID": null,
"pad": null,
"center": null,
"layoutEngine": null
},
"isFolderOnly": false,
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "title",
"type": "rectangle",
"pos": {
"x": -121,
"y": -107
},
"width": 408,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "diagram title : Red-line hits 'near: top-center' in elk",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 363,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "a",
"type": "rectangle",
"pos": {
"x": 10,
"y": 20
},
"width": 146,
"height": 292,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B4",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "a",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 12,
"labelHeight": 36,
"labelPosition": "OUTSIDE_TOP_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "a.a",
"type": "rectangle",
"pos": {
"x": 73,
"y": 50
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "a",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "a.b",
"type": "rectangle",
"pos": {
"x": 40,
"y": 216
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "b",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "b",
"type": "rectangle",
"pos": {
"x": 43,
"y": 452
},
"width": 113,
"height": 126,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B4",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "b",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 13,
"labelHeight": 36,
"labelPosition": "OUTSIDE_TOP_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "b.c",
"type": "rectangle",
"pos": {
"x": 73,
"y": 482
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "c",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
}
],
"connections": [
{
"id": "a.(a -> b)[0]",
"src": "a.a",
"srcArrow": "none",
"dst": "a.b",
"dstArrow": "triangle",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"borderRadius": 10,
"label": "",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"labelPosition": "",
"labelPercentage": 0,
"link": "",
"route": [
{
"x": 86.5,
"y": 116
},
{
"x": 70.5,
"y": 156
},
{
"x": 66.5,
"y": 176
},
{
"x": 66.5,
"y": 216
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
},
{
"id": "(a.b -> b.c)[0]",
"src": "a.b",
"srcArrow": "none",
"dst": "b.c",
"dstArrow": "triangle",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"borderRadius": 10,
"label": "",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"labelPosition": "",
"labelPercentage": 0,
"link": "",
"route": [
{
"x": 66.5,
"y": 282
},
{
"x": 66.5,
"y": 322
},
{
"x": 66.5,
"y": 342
},
{
"x": 66.5,
"y": 357
},
{
"x": 66.5,
"y": 372
},
{
"x": 70.5,
"y": 442
},
{
"x": 86.5,
"y": 482
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
},
{
"id": "(b.c -> a.a)[0]",
"src": "b.c",
"srcArrow": "none",
"dst": "a.a",
"dstArrow": "triangle",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "red",
"fill": "mistyrose",
"borderRadius": 10,
"label": "",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "red",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"labelPosition": "",
"labelPercentage": 0,
"link": "",
"route": [
{
"x": 113,
"y": 482
},
{
"x": 129,
"y": 442
},
{
"x": 133,
"y": 422
},
{
"x": 133,
"y": 407
},
{
"x": 133,
"y": 392
},
{
"x": 133,
"y": 372
},
{
"x": 133,
"y": 357
},
{
"x": 133,
"y": 342
},
{
"x": 133,
"y": 315.3999938964844
},
{
"x": 133,
"y": 290.5
},
{
"x": 133,
"y": 265.6000061035156
},
{
"x": 129,
"y": 156
},
{
"x": 113,
"y": 116
}
],
"isCurve": true,
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
}
],
"root": {
"id": "",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 0,
"borderRadius": 0,
"fill": "N7",
"stroke": "",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "",
"fontSize": 0,
"fontFamily": "",
"language": "",
"color": "",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"zIndex": 0,
"level": 0
}
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

View file

@ -0,0 +1,444 @@
{
"name": "",
"config": {
"sketch": false,
"themeID": 0,
"darkThemeID": null,
"pad": null,
"center": null,
"layoutEngine": null
},
"isFolderOnly": false,
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "title",
"type": "rectangle",
"pos": {
"x": -95,
"y": -74
},
"width": 408,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "diagram title : Red-line hits 'near: top-center' in elk",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 363,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "a",
"type": "rectangle",
"pos": {
"x": 52,
"y": 57
},
"width": 153,
"height": 302,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B4",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "a",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 12,
"labelHeight": 36,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "a.a",
"type": "rectangle",
"pos": {
"x": 102,
"y": 107
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "a",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "a.b",
"type": "rectangle",
"pos": {
"x": 102,
"y": 243
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "b",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "b",
"type": "rectangle",
"pos": {
"x": 52,
"y": 439
},
"width": 153,
"height": 166,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B4",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "b",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 13,
"labelHeight": 36,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "b.c",
"type": "rectangle",
"pos": {
"x": 102,
"y": 489
},
"width": 53,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "c",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
}
],
"connections": [
{
"id": "a.(a -> b)[0]",
"src": "a.a",
"srcArrow": "none",
"dst": "a.b",
"dstArrow": "triangle",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"borderRadius": 10,
"label": "",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"labelPosition": "",
"labelPercentage": 0,
"link": "",
"route": [
{
"x": 128.5,
"y": 173
},
{
"x": 128.5,
"y": 243
}
],
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
},
{
"id": "(a.b -> b.c)[0]",
"src": "a.b",
"srcArrow": "none",
"dst": "b.c",
"dstArrow": "triangle",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"borderRadius": 10,
"label": "",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"labelPosition": "",
"labelPercentage": 0,
"link": "",
"route": [
{
"x": 128.5,
"y": 309
},
{
"x": 128.5,
"y": 489
}
],
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
},
{
"id": "(b.c -> a.a)[0]",
"src": "b.c",
"srcArrow": "none",
"dst": "a.a",
"dstArrow": "triangle",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "red",
"fill": "mistyrose",
"borderRadius": 10,
"label": "",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "red",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"labelPosition": "",
"labelPercentage": 0,
"link": "",
"route": [
{
"x": 128.5,
"y": 555
},
{
"x": 128.5,
"y": 650
},
{
"x": 12,
"y": 650
},
{
"x": 12,
"y": 12
},
{
"x": 128.5,
"y": 12
},
{
"x": 128.5,
"y": 107
}
],
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
}
],
"root": {
"id": "",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 0,
"borderRadius": 0,
"fill": "N7",
"stroke": "",
"animated": false,
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "",
"fontSize": 0,
"fontFamily": "",
"language": "",
"color": "",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"zIndex": 0,
"level": 0
}
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

View file

@ -58,7 +58,7 @@
"type": "rectangle",
"pos": {
"x": 9,
"y": 166
"y": 187
},
"width": 89,
"height": 66,
@ -106,37 +106,38 @@
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"stroke": "red",
"fill": "radial-gradient(#ffffff, #000000)",
"borderRadius": 10,
"label": "",
"label": "foobar",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"color": "red",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"labelPosition": "",
"labelWidth": 46,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"link": "",
"route": [
{
"x": 53,
"y": 66
"y": 65.5
},
{
"x": 53,
"y": 106
"y": 114.30000305175781
},
{
"x": 53,
"y": 126
"y": 138.6999969482422
},
{
"x": 53,
"y": 166
"y": 187.5
}
],
"isCurve": true,

View file

@ -1,10 +1,17 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="v0.6.8-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 108 234"><svg class="d2-1875635527 d2-svg" width="108" height="234" viewBox="-1 -1 108 234"><rect x="-1.000000" y="-1.000000" width="108.000000" height="234.000000" rx="0.000000" fill="url('#grad-748b4596c77533b881df8829b0adfb302f4dd5d0')" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-1875635527 .text-bold {
font-family: "d2-1875635527-font-bold";
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="v0.6.8-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 108 255"><svg class="d2-1069291522 d2-svg" width="108" height="255" viewBox="-1 -1 108 255"><rect x="-1.000000" y="-1.000000" width="108.000000" height="255.000000" rx="0.000000" fill="url('#grad-748b4596c77533b881df8829b0adfb302f4dd5d0')" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-1069291522 .text-bold {
font-family: "d2-1069291522-font-bold";
}
@font-face {
font-family: d2-1875635527-font-bold;
src: url("data:application/font-woff;base64,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");
font-family: d2-1069291522-font-bold;
src: url("data:application/font-woff;base64,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");
}
.d2-1069291522 .text-italic {
font-family: "d2-1069291522-font-italic";
}
@font-face {
font-family: d2-1069291522-font-italic;
src: url("data:application/font-woff;base64,d09GRgABAAAAAApEAAoAAAAAEHAAARhRAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAGAAAABgW1SVeGNtYXAAAAFUAAAAWQAAAGoBNAILZ2x5ZgAAAbAAAARmAAAFwNv0j5poZWFkAAAGGAAAADYAAAA2G7Ur2mhoZWEAAAZQAAAAJAAAACQLeAi1aG10eAAABnQAAABEAAAARBqNAlVsb2NhAAAGuAAAACQAAAAkDYYO5G1heHAAAAbcAAAAIAAAACAAKQD2bmFtZQAABvwAAAMmAAAIMgntVzNwb3N0AAAKJAAAACAAAAAg/8YAMgADAeEBkAAFAAACigJY//EASwKKAlgARAFeADIBIwAAAgsFAwMEAwkCBCAAAHcAAAADAAAAAAAAAABBREJPAAEAIP//Au7/BgAAA9gBESAAAZMAAAAAAeYClAAAACAAA3icRMvBCoFBAAfx337fYrE8onKSEiVPI+JN/2ov5jLNYVDMCrrqMNxMqpOzi5tHguOoq3uSbz5555Xn+P4Uk1m1sLTSrG1sdTt7fgAAAP//AQAA///d3RE2AAAAeJx8k0tsG1Ufxf/3jjOTxM7DnvFM7NieeGZ8x4+xY894PHUTj+0470fTtHW+fG2TNoVWBQqKVBagUhW6qNiAQOoGVkhsiroLKzZlwyJCqsSiQkWwhCC1LJCVBVTURuOkqdsFm7u855zfOX/oAgUAv4VvAwU9MAA+8AMYbJSiDMuSBcpQVZlhLJVlGeUm2rn5uat2+rf4F39romvmg68W/jh/F99+egW9v37jRvPMhxcv/u/x42YS/fgYAACD2tpDf6EGcCADCBIx8zY2dF4wLIOSLZmmVb1gWYTIUj/2c/zXlUVtfsNQS14Xa2+Wu13ymo8sK5pfDyk1U8x5ztSn3z1rxKOlZnA2NlrJjP5EpOTcul4u7euJrT30J94Bv5NKkIgqMzJrMIxRKBg67+f6sarb2MwTWaIZhucfqSUvxZU/XlJ5rJxKt+VNpWZGsglpRc5whiceLeGde+fDqdOrjnQlObdu2KVk7HciAYJYaw9towaEXkjHOIFo2s/xhl6wBJp+uPyqtrRpauN8miXh7GqheHSkwEvBJc+l9cmr9VEpkBX8k1u1iemgV+dih+yw2pHlObv/hnfURw2SpU8O6B2LvUxPHTl37+mRl/HhdpZvUQOCEOvU4/0czURp/lkWyigUzHw74a+rr6UXzmatasTT1fyuZ6SWDBeFSHjlsxamfAnZ3PC8vjm1dULLHNdDRn/5eCzgNfwiirmH+kI5sQ4IUgDoI/wABGdzchm3azrgxzAGI1OpetldHRw4VgomfcO9w95oott7wfNKHd0pdq3Mn+xzW0yvnjppN9ccZqiloAZqgAiZ/f6tfd8WTcsvro+mqRfo3c2tykpoKm7P9wfIqdHS8dTc2RyxvRRbvsReLcorUorPheSqERn9hYRNQVqsXCbaar329v91Z4/UuUsomkr+QKTE9Fp2bAwAWi0QAeAJ3sYEBgCAhsFZp1sEWmsPnuAd8DkuzbzFOob83AHiN6v0taXrCHkpmkG9vKfsDeA3nn7K9FA+hMdcrv0/RAD0EDVgyGFnHE6coWTWacghSImbZcaVOJGxzW57cdzlmg3NZqbQ7pySqx4Rleb3SOOG+haSmead5/f6M2rAAIQ7N7B/OO3eD4b9YHlDm9/Ql89pCxvJ9IpR0J3Hc/nM1NV6Zv+tTGxNTszUtiYnpg/9vocaMNjhV2DIM59uV3gxHfAPDwaVRbGEdte1Us9kd3mseR9Q65/WHrqOGqB2tmrmiUqIme8cjZ/jhfZk6S9z64GsUCHJUuJIpqjNaZn5UIY1oiRXGLHz2ROefJyI8YwcVMWgnUhVY0okzgXTYoT4pHEtPRlzPI+39tAavnJ43wXLWanRXmbHfX9TybtQcca9qFSHr3muF6mQ1B90ewdHPeX0QLAP+Ypdt27ZzUc+XyTS22UxAwc84D7aBarNgxI3ly6g3WawzWoGL8A23gY3ANvWbZdAv8NGZIELy3hB4APRIT4w8i8AAAD//wEAAP//DEAiLwAAAAEAAAABGFGCZNFBXw889QABA+gAAAAA2F2gzAAAAADdZi83/r3+3QgdA8kAAgADAAIAAAAAAAAAAQAAA9j+7wAACED+vf28CB0D6ADC/9EAAAAAAAAAAAAAABECdAAkAhkAJwIYAB8BswAlAhcAJwHhACUBGgArAhMAAQDtAB8A+AAsAg0AHwIDACcBVgAfAZL//AFFADwA7QAfAAAARwAAAC4AZgCeAMwBBAE+AWYBrgG6AdwCBgI0AlICjgK8AsoC4AABAAAAEQCMAAwAZgAHAAEAAAAAAAAAAAAAAAAABAADeJyclNtOG1cUhj8H2216uqhQRG7QvkylZEyjECXhypSgjIpw6nF6kKpKgz0+iPHMyDOYkifodd+ib5GrPkafoup1tX8vgx1FQSAE/Hv2OvxrrX9tYJP/2KBWvwv83ZwbrrHd/NnwHb5oHhneYL/5meE6Dxv/GG4waLw13ORBo2v4E97V/zT8KU/qvxm+y1b90PDnPK5vGv5yw/Gv4a94wrsFrsEz/jBcY4vC8B02+dXwBvewmLU699gx3OBrtg032QZ6TKhImZAxwjFkwogzZiSURCTMmDAkYYAjpE1Kpa8ZsZBj9MGvMREVM2JFHFPhSIlIiSkZW8S38sp5rYxDnWZ216ZiTMyJPE6JyXDkjMjJSDhVnIqKghe0aFHSF9+CipKAkgkpATkzRrTocMgRPcZMKHEcKpJnFpEzpOKcWPmdWfjO9EnIKI3VGRkD8XTil8g75AhHh0K2q5GP1iI8xPGjvD23XLbfEujXrTBbz7tkEzNXP1N1JdXNuSY41q3P2+YH4YoXuFv1Z53J9T0a6H+lyCecaf4DTSoTkwzntmgTSUGRu49jX+eQSB35iZAer+jwhp7Obbp0aXNMj5CX8u3QxfEdHY45kEcovLg7lGKO+QXH94Sy8bET689iYgm/U5i6S3GcqY4phXrumQeqNVGFN5+w36F8TR2lfPraI2/pNL9MexYzMlUUYjhVL5faKK1/A1PEVLX42V7d+22Y2+4tt/iCXDvs1brg5Ce3YHTdVIP3NHOun4CYATknsuiTM6VFxYV4vybmjBTHgbr3SltS0b708XkupJKEqRiEZIozo9Df2HQTGff+mu6dvSUD+Xump5dV3SaLU6+uZvRG3VveRdblZGUCLZtqvqKmvrhmpv1EO7XKP5Jvqdct5xGh4i52+0OvwA7P2WWPsbL0dTO/vPOvhLfYUwdOSWQ1lKZ9DY8J2CXgKbvs8pyn7/VyycYZH7fGZzV/mwP26bB3bTUL2w77vFyL9vHMf4ntjupxPLo8Pbv1NB/cQLXfaN+u3s2uJuenMbdoV9txTMzUc3FbqzW5+wT/AwAA//8BAAD//3KhUUAAAAADAAD/9QAA/84AMgAAAAAAAAAAAAAAAAAAAAAAAAAA");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
@ -18,78 +25,78 @@
opacity: 0.5;
}
.d2-1875635527 .fill-N1{fill:#0A0F25;}
.d2-1875635527 .fill-N2{fill:#676C7E;}
.d2-1875635527 .fill-N3{fill:#9499AB;}
.d2-1875635527 .fill-N4{fill:#CFD2DD;}
.d2-1875635527 .fill-N5{fill:#DEE1EB;}
.d2-1875635527 .fill-N6{fill:#EEF1F8;}
.d2-1875635527 .fill-N7{fill:#FFFFFF;}
.d2-1875635527 .fill-B1{fill:#0D32B2;}
.d2-1875635527 .fill-B2{fill:#0D32B2;}
.d2-1875635527 .fill-B3{fill:#E3E9FD;}
.d2-1875635527 .fill-B4{fill:#E3E9FD;}
.d2-1875635527 .fill-B5{fill:#EDF0FD;}
.d2-1875635527 .fill-B6{fill:#F7F8FE;}
.d2-1875635527 .fill-AA2{fill:#4A6FF3;}
.d2-1875635527 .fill-AA4{fill:#EDF0FD;}
.d2-1875635527 .fill-AA5{fill:#F7F8FE;}
.d2-1875635527 .fill-AB4{fill:#EDF0FD;}
.d2-1875635527 .fill-AB5{fill:#F7F8FE;}
.d2-1875635527 .stroke-N1{stroke:#0A0F25;}
.d2-1875635527 .stroke-N2{stroke:#676C7E;}
.d2-1875635527 .stroke-N3{stroke:#9499AB;}
.d2-1875635527 .stroke-N4{stroke:#CFD2DD;}
.d2-1875635527 .stroke-N5{stroke:#DEE1EB;}
.d2-1875635527 .stroke-N6{stroke:#EEF1F8;}
.d2-1875635527 .stroke-N7{stroke:#FFFFFF;}
.d2-1875635527 .stroke-B1{stroke:#0D32B2;}
.d2-1875635527 .stroke-B2{stroke:#0D32B2;}
.d2-1875635527 .stroke-B3{stroke:#E3E9FD;}
.d2-1875635527 .stroke-B4{stroke:#E3E9FD;}
.d2-1875635527 .stroke-B5{stroke:#EDF0FD;}
.d2-1875635527 .stroke-B6{stroke:#F7F8FE;}
.d2-1875635527 .stroke-AA2{stroke:#4A6FF3;}
.d2-1875635527 .stroke-AA4{stroke:#EDF0FD;}
.d2-1875635527 .stroke-AA5{stroke:#F7F8FE;}
.d2-1875635527 .stroke-AB4{stroke:#EDF0FD;}
.d2-1875635527 .stroke-AB5{stroke:#F7F8FE;}
.d2-1875635527 .background-color-N1{background-color:#0A0F25;}
.d2-1875635527 .background-color-N2{background-color:#676C7E;}
.d2-1875635527 .background-color-N3{background-color:#9499AB;}
.d2-1875635527 .background-color-N4{background-color:#CFD2DD;}
.d2-1875635527 .background-color-N5{background-color:#DEE1EB;}
.d2-1875635527 .background-color-N6{background-color:#EEF1F8;}
.d2-1875635527 .background-color-N7{background-color:#FFFFFF;}
.d2-1875635527 .background-color-B1{background-color:#0D32B2;}
.d2-1875635527 .background-color-B2{background-color:#0D32B2;}
.d2-1875635527 .background-color-B3{background-color:#E3E9FD;}
.d2-1875635527 .background-color-B4{background-color:#E3E9FD;}
.d2-1875635527 .background-color-B5{background-color:#EDF0FD;}
.d2-1875635527 .background-color-B6{background-color:#F7F8FE;}
.d2-1875635527 .background-color-AA2{background-color:#4A6FF3;}
.d2-1875635527 .background-color-AA4{background-color:#EDF0FD;}
.d2-1875635527 .background-color-AA5{background-color:#F7F8FE;}
.d2-1875635527 .background-color-AB4{background-color:#EDF0FD;}
.d2-1875635527 .background-color-AB5{background-color:#F7F8FE;}
.d2-1875635527 .color-N1{color:#0A0F25;}
.d2-1875635527 .color-N2{color:#676C7E;}
.d2-1875635527 .color-N3{color:#9499AB;}
.d2-1875635527 .color-N4{color:#CFD2DD;}
.d2-1875635527 .color-N5{color:#DEE1EB;}
.d2-1875635527 .color-N6{color:#EEF1F8;}
.d2-1875635527 .color-N7{color:#FFFFFF;}
.d2-1875635527 .color-B1{color:#0D32B2;}
.d2-1875635527 .color-B2{color:#0D32B2;}
.d2-1875635527 .color-B3{color:#E3E9FD;}
.d2-1875635527 .color-B4{color:#E3E9FD;}
.d2-1875635527 .color-B5{color:#EDF0FD;}
.d2-1875635527 .color-B6{color:#F7F8FE;}
.d2-1875635527 .color-AA2{color:#4A6FF3;}
.d2-1875635527 .color-AA4{color:#EDF0FD;}
.d2-1875635527 .color-AA5{color:#F7F8FE;}
.d2-1875635527 .color-AB4{color:#EDF0FD;}
.d2-1875635527 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1875635527);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1875635527);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1875635527);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1875635527);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1875635527);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1875635527);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1875635527);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1875635527);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1875635527);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1875635527);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1875635527);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1875635527);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1875635527);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1875635527);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1875635527);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1875635527);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1875635527);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1875635527);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><defs><radialGradient id="grad-748b4596c77533b881df8829b0adfb302f4dd5d0">
.d2-1069291522 .fill-N1{fill:#0A0F25;}
.d2-1069291522 .fill-N2{fill:#676C7E;}
.d2-1069291522 .fill-N3{fill:#9499AB;}
.d2-1069291522 .fill-N4{fill:#CFD2DD;}
.d2-1069291522 .fill-N5{fill:#DEE1EB;}
.d2-1069291522 .fill-N6{fill:#EEF1F8;}
.d2-1069291522 .fill-N7{fill:#FFFFFF;}
.d2-1069291522 .fill-B1{fill:#0D32B2;}
.d2-1069291522 .fill-B2{fill:#0D32B2;}
.d2-1069291522 .fill-B3{fill:#E3E9FD;}
.d2-1069291522 .fill-B4{fill:#E3E9FD;}
.d2-1069291522 .fill-B5{fill:#EDF0FD;}
.d2-1069291522 .fill-B6{fill:#F7F8FE;}
.d2-1069291522 .fill-AA2{fill:#4A6FF3;}
.d2-1069291522 .fill-AA4{fill:#EDF0FD;}
.d2-1069291522 .fill-AA5{fill:#F7F8FE;}
.d2-1069291522 .fill-AB4{fill:#EDF0FD;}
.d2-1069291522 .fill-AB5{fill:#F7F8FE;}
.d2-1069291522 .stroke-N1{stroke:#0A0F25;}
.d2-1069291522 .stroke-N2{stroke:#676C7E;}
.d2-1069291522 .stroke-N3{stroke:#9499AB;}
.d2-1069291522 .stroke-N4{stroke:#CFD2DD;}
.d2-1069291522 .stroke-N5{stroke:#DEE1EB;}
.d2-1069291522 .stroke-N6{stroke:#EEF1F8;}
.d2-1069291522 .stroke-N7{stroke:#FFFFFF;}
.d2-1069291522 .stroke-B1{stroke:#0D32B2;}
.d2-1069291522 .stroke-B2{stroke:#0D32B2;}
.d2-1069291522 .stroke-B3{stroke:#E3E9FD;}
.d2-1069291522 .stroke-B4{stroke:#E3E9FD;}
.d2-1069291522 .stroke-B5{stroke:#EDF0FD;}
.d2-1069291522 .stroke-B6{stroke:#F7F8FE;}
.d2-1069291522 .stroke-AA2{stroke:#4A6FF3;}
.d2-1069291522 .stroke-AA4{stroke:#EDF0FD;}
.d2-1069291522 .stroke-AA5{stroke:#F7F8FE;}
.d2-1069291522 .stroke-AB4{stroke:#EDF0FD;}
.d2-1069291522 .stroke-AB5{stroke:#F7F8FE;}
.d2-1069291522 .background-color-N1{background-color:#0A0F25;}
.d2-1069291522 .background-color-N2{background-color:#676C7E;}
.d2-1069291522 .background-color-N3{background-color:#9499AB;}
.d2-1069291522 .background-color-N4{background-color:#CFD2DD;}
.d2-1069291522 .background-color-N5{background-color:#DEE1EB;}
.d2-1069291522 .background-color-N6{background-color:#EEF1F8;}
.d2-1069291522 .background-color-N7{background-color:#FFFFFF;}
.d2-1069291522 .background-color-B1{background-color:#0D32B2;}
.d2-1069291522 .background-color-B2{background-color:#0D32B2;}
.d2-1069291522 .background-color-B3{background-color:#E3E9FD;}
.d2-1069291522 .background-color-B4{background-color:#E3E9FD;}
.d2-1069291522 .background-color-B5{background-color:#EDF0FD;}
.d2-1069291522 .background-color-B6{background-color:#F7F8FE;}
.d2-1069291522 .background-color-AA2{background-color:#4A6FF3;}
.d2-1069291522 .background-color-AA4{background-color:#EDF0FD;}
.d2-1069291522 .background-color-AA5{background-color:#F7F8FE;}
.d2-1069291522 .background-color-AB4{background-color:#EDF0FD;}
.d2-1069291522 .background-color-AB5{background-color:#F7F8FE;}
.d2-1069291522 .color-N1{color:#0A0F25;}
.d2-1069291522 .color-N2{color:#676C7E;}
.d2-1069291522 .color-N3{color:#9499AB;}
.d2-1069291522 .color-N4{color:#CFD2DD;}
.d2-1069291522 .color-N5{color:#DEE1EB;}
.d2-1069291522 .color-N6{color:#EEF1F8;}
.d2-1069291522 .color-N7{color:#FFFFFF;}
.d2-1069291522 .color-B1{color:#0D32B2;}
.d2-1069291522 .color-B2{color:#0D32B2;}
.d2-1069291522 .color-B3{color:#E3E9FD;}
.d2-1069291522 .color-B4{color:#E3E9FD;}
.d2-1069291522 .color-B5{color:#EDF0FD;}
.d2-1069291522 .color-B6{color:#F7F8FE;}
.d2-1069291522 .color-AA2{color:#4A6FF3;}
.d2-1069291522 .color-AA4{color:#EDF0FD;}
.d2-1069291522 .color-AA5{color:#F7F8FE;}
.d2-1069291522 .color-AB4{color:#EDF0FD;}
.d2-1069291522 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1069291522);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1069291522);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1069291522);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1069291522);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1069291522);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1069291522);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1069291522);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1069291522);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1069291522);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1069291522);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1069291522);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1069291522);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1069291522);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1069291522);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1069291522);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1069291522);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1069291522);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1069291522);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><defs><radialGradient id="grad-748b4596c77533b881df8829b0adfb302f4dd5d0">
<stop offset="0%" stop-color="white" />
<stop offset="60%" stop-color="#8A2BE2" />
<stop offset="100%" stop-color="#4B0082" />
@ -118,8 +125,12 @@
<stop offset="50%" stop-color="green" />
<stop offset="75%" stop-color="cyan" />
<stop offset="100%" stop-color="blue" />
</linearGradient></defs><g class="Z3JhZGllbnQ="><g class="shape" ><rect x="0.000000" y="0.000000" width="106.000000" height="66.000000" stroke="url('#grad-38ebdc3aba5158fdec998f13cadd2b81d5d3e467')" fill="url('#grad-984dfec132f72578000afe61cf8daaed70c7c3de')" style="stroke-width:2;" /></g><text x="53.000000" y="38.500000" fill="url('#grad-df376e8348556a67f106fb4c1ec75fc6e38aabea')" class="text-bold" style="text-anchor:middle;font-size:16px">gradient</text></g><g class="Y29sb3Jz"><g class="shape" ><rect x="9.000000" y="166.000000" width="89.000000" height="66.000000" stroke="url('#grad-6a6578853b2dd58addb4313cedbcddecb53a2df1')" fill="url('#grad-867086f31fcac752507fbbbe0405e35050a4704e')" style="stroke-width:2;" /></g><text x="53.500000" y="204.500000" fill="url('#grad-ac2d0b347164c939a2dee5c122da0c2ada91319c')" class="text-bold" style="text-anchor:middle;font-size:16px">colors</text></g><g class="KGdyYWRpZW50IC0mZ3Q7IGNvbG9ycylbMF0="><marker id="mk-d2-1875635527-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#0D32B2" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 53.000000 68.000000 C 53.000000 106.000000 53.000000 126.000000 53.000000 162.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-1875635527-3488378134)" mask="url(#d2-1875635527)" /></g><mask id="d2-1875635527" maskUnits="userSpaceOnUse" x="-1" y="-1" width="108" height="234">
<rect x="-1" y="-1" width="108" height="234" fill="white"></rect>
</linearGradient></defs><defs><radialGradient id="grad-55e7a4a151193a1c51bab42473171be11be44c9c">
<stop offset="0.00%" stop-color="#ffffff" />
<stop offset="100.00%" stop-color="#000000" />
</radialGradient></defs><g class="Z3JhZGllbnQ="><g class="shape" ><rect x="0.000000" y="0.000000" width="106.000000" height="66.000000" stroke="url('#grad-38ebdc3aba5158fdec998f13cadd2b81d5d3e467')" fill="url('#grad-984dfec132f72578000afe61cf8daaed70c7c3de')" style="stroke-width:2;" /></g><text x="53.000000" y="38.500000" fill="url('#grad-df376e8348556a67f106fb4c1ec75fc6e38aabea')" class="text-bold" style="text-anchor:middle;font-size:16px">gradient</text></g><g class="Y29sb3Jz"><g class="shape" ><rect x="9.000000" y="187.000000" width="89.000000" height="66.000000" stroke="url('#grad-6a6578853b2dd58addb4313cedbcddecb53a2df1')" fill="url('#grad-867086f31fcac752507fbbbe0405e35050a4704e')" style="stroke-width:2;" /></g><text x="53.500000" y="225.500000" fill="url('#grad-ac2d0b347164c939a2dee5c122da0c2ada91319c')" class="text-bold" style="text-anchor:middle;font-size:16px">colors</text></g><g class="KGdyYWRpZW50IC0mZ3Q7IGNvbG9ycylbMF0="><marker id="mk-d2-1069291522-1222543834" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="red" class="connection" stroke-width="2" /> </marker><path d="M 53.000000 67.500000 C 53.000000 114.300003 53.000000 138.699997 53.000000 183.500000" stroke="red" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-1069291522-1222543834)" mask="url(#d2-1069291522)" /><rect x="26.000000" y="113.000000" width="54.000000" height="27.000000" rx="10.000000" fill="url('#grad-55e7a4a151193a1c51bab42473171be11be44c9c')" /><text x="53.000000" y="132.000000" fill="red" class="text-italic" style="text-anchor:middle;font-size:16px">foobar</text></g><mask id="d2-1069291522" maskUnits="userSpaceOnUse" x="-1" y="-1" width="108" height="255">
<rect x="-1" y="-1" width="108" height="255" fill="white"></rect>
<rect x="22.500000" y="22.500000" width="61" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="31.500000" y="188.500000" width="44" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="31.500000" y="209.500000" width="44" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="30.000000" y="116.000000" width="46" height="21" fill="black"></rect>
</mask></svg></svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -58,7 +58,7 @@
"type": "rectangle",
"pos": {
"x": 20,
"y": 148
"y": 239
},
"width": 89,
"height": 66,
@ -106,19 +106,20 @@
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"stroke": "red",
"fill": "radial-gradient(#ffffff, #000000)",
"borderRadius": 10,
"label": "",
"label": "foobar",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"color": "red",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"labelPosition": "",
"labelWidth": 46,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"labelPercentage": 0,
"link": "",
"route": [
@ -128,7 +129,7 @@
},
{
"x": 65,
"y": 148
"y": 239
}
],
"animated": false,

View file

@ -1,10 +1,17 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="v0.6.8-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 108 204"><svg class="d2-3711055192 d2-svg" width="108" height="204" viewBox="11 11 108 204"><rect x="11.000000" y="11.000000" width="108.000000" height="204.000000" rx="0.000000" fill="url('#grad-748b4596c77533b881df8829b0adfb302f4dd5d0')" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-3711055192 .text-bold {
font-family: "d2-3711055192-font-bold";
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="v0.6.8-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 108 295"><svg class="d2-2458666147 d2-svg" width="108" height="295" viewBox="11 11 108 295"><rect x="11.000000" y="11.000000" width="108.000000" height="295.000000" rx="0.000000" fill="url('#grad-748b4596c77533b881df8829b0adfb302f4dd5d0')" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-2458666147 .text-bold {
font-family: "d2-2458666147-font-bold";
}
@font-face {
font-family: d2-3711055192-font-bold;
src: url("data:application/font-woff;base64,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");
font-family: d2-2458666147-font-bold;
src: url("data:application/font-woff;base64,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");
}
.d2-2458666147 .text-italic {
font-family: "d2-2458666147-font-italic";
}
@font-face {
font-family: d2-2458666147-font-italic;
src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
@ -18,78 +25,78 @@
opacity: 0.5;
}
.d2-3711055192 .fill-N1{fill:#0A0F25;}
.d2-3711055192 .fill-N2{fill:#676C7E;}
.d2-3711055192 .fill-N3{fill:#9499AB;}
.d2-3711055192 .fill-N4{fill:#CFD2DD;}
.d2-3711055192 .fill-N5{fill:#DEE1EB;}
.d2-3711055192 .fill-N6{fill:#EEF1F8;}
.d2-3711055192 .fill-N7{fill:#FFFFFF;}
.d2-3711055192 .fill-B1{fill:#0D32B2;}
.d2-3711055192 .fill-B2{fill:#0D32B2;}
.d2-3711055192 .fill-B3{fill:#E3E9FD;}
.d2-3711055192 .fill-B4{fill:#E3E9FD;}
.d2-3711055192 .fill-B5{fill:#EDF0FD;}
.d2-3711055192 .fill-B6{fill:#F7F8FE;}
.d2-3711055192 .fill-AA2{fill:#4A6FF3;}
.d2-3711055192 .fill-AA4{fill:#EDF0FD;}
.d2-3711055192 .fill-AA5{fill:#F7F8FE;}
.d2-3711055192 .fill-AB4{fill:#EDF0FD;}
.d2-3711055192 .fill-AB5{fill:#F7F8FE;}
.d2-3711055192 .stroke-N1{stroke:#0A0F25;}
.d2-3711055192 .stroke-N2{stroke:#676C7E;}
.d2-3711055192 .stroke-N3{stroke:#9499AB;}
.d2-3711055192 .stroke-N4{stroke:#CFD2DD;}
.d2-3711055192 .stroke-N5{stroke:#DEE1EB;}
.d2-3711055192 .stroke-N6{stroke:#EEF1F8;}
.d2-3711055192 .stroke-N7{stroke:#FFFFFF;}
.d2-3711055192 .stroke-B1{stroke:#0D32B2;}
.d2-3711055192 .stroke-B2{stroke:#0D32B2;}
.d2-3711055192 .stroke-B3{stroke:#E3E9FD;}
.d2-3711055192 .stroke-B4{stroke:#E3E9FD;}
.d2-3711055192 .stroke-B5{stroke:#EDF0FD;}
.d2-3711055192 .stroke-B6{stroke:#F7F8FE;}
.d2-3711055192 .stroke-AA2{stroke:#4A6FF3;}
.d2-3711055192 .stroke-AA4{stroke:#EDF0FD;}
.d2-3711055192 .stroke-AA5{stroke:#F7F8FE;}
.d2-3711055192 .stroke-AB4{stroke:#EDF0FD;}
.d2-3711055192 .stroke-AB5{stroke:#F7F8FE;}
.d2-3711055192 .background-color-N1{background-color:#0A0F25;}
.d2-3711055192 .background-color-N2{background-color:#676C7E;}
.d2-3711055192 .background-color-N3{background-color:#9499AB;}
.d2-3711055192 .background-color-N4{background-color:#CFD2DD;}
.d2-3711055192 .background-color-N5{background-color:#DEE1EB;}
.d2-3711055192 .background-color-N6{background-color:#EEF1F8;}
.d2-3711055192 .background-color-N7{background-color:#FFFFFF;}
.d2-3711055192 .background-color-B1{background-color:#0D32B2;}
.d2-3711055192 .background-color-B2{background-color:#0D32B2;}
.d2-3711055192 .background-color-B3{background-color:#E3E9FD;}
.d2-3711055192 .background-color-B4{background-color:#E3E9FD;}
.d2-3711055192 .background-color-B5{background-color:#EDF0FD;}
.d2-3711055192 .background-color-B6{background-color:#F7F8FE;}
.d2-3711055192 .background-color-AA2{background-color:#4A6FF3;}
.d2-3711055192 .background-color-AA4{background-color:#EDF0FD;}
.d2-3711055192 .background-color-AA5{background-color:#F7F8FE;}
.d2-3711055192 .background-color-AB4{background-color:#EDF0FD;}
.d2-3711055192 .background-color-AB5{background-color:#F7F8FE;}
.d2-3711055192 .color-N1{color:#0A0F25;}
.d2-3711055192 .color-N2{color:#676C7E;}
.d2-3711055192 .color-N3{color:#9499AB;}
.d2-3711055192 .color-N4{color:#CFD2DD;}
.d2-3711055192 .color-N5{color:#DEE1EB;}
.d2-3711055192 .color-N6{color:#EEF1F8;}
.d2-3711055192 .color-N7{color:#FFFFFF;}
.d2-3711055192 .color-B1{color:#0D32B2;}
.d2-3711055192 .color-B2{color:#0D32B2;}
.d2-3711055192 .color-B3{color:#E3E9FD;}
.d2-3711055192 .color-B4{color:#E3E9FD;}
.d2-3711055192 .color-B5{color:#EDF0FD;}
.d2-3711055192 .color-B6{color:#F7F8FE;}
.d2-3711055192 .color-AA2{color:#4A6FF3;}
.d2-3711055192 .color-AA4{color:#EDF0FD;}
.d2-3711055192 .color-AA5{color:#F7F8FE;}
.d2-3711055192 .color-AB4{color:#EDF0FD;}
.d2-3711055192 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3711055192);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3711055192);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3711055192);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3711055192);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3711055192);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3711055192);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3711055192);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3711055192);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3711055192);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3711055192);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3711055192);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3711055192);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3711055192);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3711055192);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3711055192);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3711055192);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3711055192);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3711055192);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><defs><radialGradient id="grad-748b4596c77533b881df8829b0adfb302f4dd5d0">
.d2-2458666147 .fill-N1{fill:#0A0F25;}
.d2-2458666147 .fill-N2{fill:#676C7E;}
.d2-2458666147 .fill-N3{fill:#9499AB;}
.d2-2458666147 .fill-N4{fill:#CFD2DD;}
.d2-2458666147 .fill-N5{fill:#DEE1EB;}
.d2-2458666147 .fill-N6{fill:#EEF1F8;}
.d2-2458666147 .fill-N7{fill:#FFFFFF;}
.d2-2458666147 .fill-B1{fill:#0D32B2;}
.d2-2458666147 .fill-B2{fill:#0D32B2;}
.d2-2458666147 .fill-B3{fill:#E3E9FD;}
.d2-2458666147 .fill-B4{fill:#E3E9FD;}
.d2-2458666147 .fill-B5{fill:#EDF0FD;}
.d2-2458666147 .fill-B6{fill:#F7F8FE;}
.d2-2458666147 .fill-AA2{fill:#4A6FF3;}
.d2-2458666147 .fill-AA4{fill:#EDF0FD;}
.d2-2458666147 .fill-AA5{fill:#F7F8FE;}
.d2-2458666147 .fill-AB4{fill:#EDF0FD;}
.d2-2458666147 .fill-AB5{fill:#F7F8FE;}
.d2-2458666147 .stroke-N1{stroke:#0A0F25;}
.d2-2458666147 .stroke-N2{stroke:#676C7E;}
.d2-2458666147 .stroke-N3{stroke:#9499AB;}
.d2-2458666147 .stroke-N4{stroke:#CFD2DD;}
.d2-2458666147 .stroke-N5{stroke:#DEE1EB;}
.d2-2458666147 .stroke-N6{stroke:#EEF1F8;}
.d2-2458666147 .stroke-N7{stroke:#FFFFFF;}
.d2-2458666147 .stroke-B1{stroke:#0D32B2;}
.d2-2458666147 .stroke-B2{stroke:#0D32B2;}
.d2-2458666147 .stroke-B3{stroke:#E3E9FD;}
.d2-2458666147 .stroke-B4{stroke:#E3E9FD;}
.d2-2458666147 .stroke-B5{stroke:#EDF0FD;}
.d2-2458666147 .stroke-B6{stroke:#F7F8FE;}
.d2-2458666147 .stroke-AA2{stroke:#4A6FF3;}
.d2-2458666147 .stroke-AA4{stroke:#EDF0FD;}
.d2-2458666147 .stroke-AA5{stroke:#F7F8FE;}
.d2-2458666147 .stroke-AB4{stroke:#EDF0FD;}
.d2-2458666147 .stroke-AB5{stroke:#F7F8FE;}
.d2-2458666147 .background-color-N1{background-color:#0A0F25;}
.d2-2458666147 .background-color-N2{background-color:#676C7E;}
.d2-2458666147 .background-color-N3{background-color:#9499AB;}
.d2-2458666147 .background-color-N4{background-color:#CFD2DD;}
.d2-2458666147 .background-color-N5{background-color:#DEE1EB;}
.d2-2458666147 .background-color-N6{background-color:#EEF1F8;}
.d2-2458666147 .background-color-N7{background-color:#FFFFFF;}
.d2-2458666147 .background-color-B1{background-color:#0D32B2;}
.d2-2458666147 .background-color-B2{background-color:#0D32B2;}
.d2-2458666147 .background-color-B3{background-color:#E3E9FD;}
.d2-2458666147 .background-color-B4{background-color:#E3E9FD;}
.d2-2458666147 .background-color-B5{background-color:#EDF0FD;}
.d2-2458666147 .background-color-B6{background-color:#F7F8FE;}
.d2-2458666147 .background-color-AA2{background-color:#4A6FF3;}
.d2-2458666147 .background-color-AA4{background-color:#EDF0FD;}
.d2-2458666147 .background-color-AA5{background-color:#F7F8FE;}
.d2-2458666147 .background-color-AB4{background-color:#EDF0FD;}
.d2-2458666147 .background-color-AB5{background-color:#F7F8FE;}
.d2-2458666147 .color-N1{color:#0A0F25;}
.d2-2458666147 .color-N2{color:#676C7E;}
.d2-2458666147 .color-N3{color:#9499AB;}
.d2-2458666147 .color-N4{color:#CFD2DD;}
.d2-2458666147 .color-N5{color:#DEE1EB;}
.d2-2458666147 .color-N6{color:#EEF1F8;}
.d2-2458666147 .color-N7{color:#FFFFFF;}
.d2-2458666147 .color-B1{color:#0D32B2;}
.d2-2458666147 .color-B2{color:#0D32B2;}
.d2-2458666147 .color-B3{color:#E3E9FD;}
.d2-2458666147 .color-B4{color:#E3E9FD;}
.d2-2458666147 .color-B5{color:#EDF0FD;}
.d2-2458666147 .color-B6{color:#F7F8FE;}
.d2-2458666147 .color-AA2{color:#4A6FF3;}
.d2-2458666147 .color-AA4{color:#EDF0FD;}
.d2-2458666147 .color-AA5{color:#F7F8FE;}
.d2-2458666147 .color-AB4{color:#EDF0FD;}
.d2-2458666147 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2458666147);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2458666147);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2458666147);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2458666147);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2458666147);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2458666147);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2458666147);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2458666147);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2458666147);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2458666147);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2458666147);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2458666147);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2458666147);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2458666147);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2458666147);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2458666147);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2458666147);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2458666147);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><defs><radialGradient id="grad-748b4596c77533b881df8829b0adfb302f4dd5d0">
<stop offset="0%" stop-color="white" />
<stop offset="60%" stop-color="#8A2BE2" />
<stop offset="100%" stop-color="#4B0082" />
@ -118,8 +125,12 @@
<stop offset="50%" stop-color="green" />
<stop offset="75%" stop-color="cyan" />
<stop offset="100%" stop-color="blue" />
</linearGradient></defs><g class="Z3JhZGllbnQ="><g class="shape" ><rect x="12.000000" y="12.000000" width="106.000000" height="66.000000" stroke="url('#grad-38ebdc3aba5158fdec998f13cadd2b81d5d3e467')" fill="url('#grad-984dfec132f72578000afe61cf8daaed70c7c3de')" style="stroke-width:2;" /></g><text x="65.000000" y="50.500000" fill="url('#grad-df376e8348556a67f106fb4c1ec75fc6e38aabea')" class="text-bold" style="text-anchor:middle;font-size:16px">gradient</text></g><g class="Y29sb3Jz"><g class="shape" ><rect x="20.000000" y="148.000000" width="89.000000" height="66.000000" stroke="url('#grad-6a6578853b2dd58addb4313cedbcddecb53a2df1')" fill="url('#grad-867086f31fcac752507fbbbe0405e35050a4704e')" style="stroke-width:2;" /></g><text x="64.500000" y="186.500000" fill="url('#grad-ac2d0b347164c939a2dee5c122da0c2ada91319c')" class="text-bold" style="text-anchor:middle;font-size:16px">colors</text></g><g class="KGdyYWRpZW50IC0mZ3Q7IGNvbG9ycylbMF0="><marker id="mk-d2-3711055192-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#0D32B2" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 65.000000 80.000000 L 65.000000 144.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-3711055192-3488378134)" mask="url(#d2-3711055192)" /></g><mask id="d2-3711055192" maskUnits="userSpaceOnUse" x="11" y="11" width="108" height="204">
<rect x="11" y="11" width="108" height="204" fill="white"></rect>
</linearGradient></defs><defs><radialGradient id="grad-55e7a4a151193a1c51bab42473171be11be44c9c">
<stop offset="0.00%" stop-color="#ffffff" />
<stop offset="100.00%" stop-color="#000000" />
</radialGradient></defs><g class="Z3JhZGllbnQ="><g class="shape" ><rect x="12.000000" y="12.000000" width="106.000000" height="66.000000" stroke="url('#grad-38ebdc3aba5158fdec998f13cadd2b81d5d3e467')" fill="url('#grad-984dfec132f72578000afe61cf8daaed70c7c3de')" style="stroke-width:2;" /></g><text x="65.000000" y="50.500000" fill="url('#grad-df376e8348556a67f106fb4c1ec75fc6e38aabea')" class="text-bold" style="text-anchor:middle;font-size:16px">gradient</text></g><g class="Y29sb3Jz"><g class="shape" ><rect x="20.000000" y="239.000000" width="89.000000" height="66.000000" stroke="url('#grad-6a6578853b2dd58addb4313cedbcddecb53a2df1')" fill="url('#grad-867086f31fcac752507fbbbe0405e35050a4704e')" style="stroke-width:2;" /></g><text x="64.500000" y="277.500000" fill="url('#grad-ac2d0b347164c939a2dee5c122da0c2ada91319c')" class="text-bold" style="text-anchor:middle;font-size:16px">colors</text></g><g class="KGdyYWRpZW50IC0mZ3Q7IGNvbG9ycylbMF0="><marker id="mk-d2-2458666147-1222543834" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="red" class="connection" stroke-width="2" /> </marker><path d="M 65.000000 80.000000 L 65.000000 235.000000" stroke="red" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-2458666147-1222543834)" mask="url(#d2-2458666147)" /><rect x="38.000000" y="145.000000" width="54.000000" height="27.000000" rx="10.000000" fill="url('#grad-55e7a4a151193a1c51bab42473171be11be44c9c')" /><text x="65.000000" y="164.000000" fill="red" class="text-italic" style="text-anchor:middle;font-size:16px">foobar</text></g><mask id="d2-2458666147" maskUnits="userSpaceOnUse" x="11" y="11" width="108" height="295">
<rect x="11" y="11" width="108" height="295" fill="white"></rect>
<rect x="34.500000" y="34.500000" width="61" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="42.500000" y="170.500000" width="44" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="42.500000" y="261.500000" width="44" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="42.000000" y="148.000000" width="46" height="21" fill="black"></rect>
</mask></svg></svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -81,7 +81,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\begin{equation} \\\\label{eq1}\n\\\\begin{split}\nA & = \\\\frac{\\\\\\\\pi r^2}{2} \\\\\\\\\n & = \\\\frac{1}{2} \\\\pi r^2\n\\\\end{split}\n\\\\end{equation}",
"label": "\\begin{equation} \\label{eq1}\n\\begin{split}\nA & = \\frac{\\\\pi r^2}{2} \\\\\n & = \\frac{1}{2} \\pi r^2\n\\end{split}\n\\end{equation}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View file

@ -81,7 +81,7 @@
"fields": null,
"methods": null,
"columns": null,
"label": "\\\\begin{equation} \\\\label{eq1}\n\\\\begin{split}\nA & = \\\\frac{\\\\\\\\pi r^2}{2} \\\\\\\\\n & = \\\\frac{1}{2} \\\\pi r^2\n\\\\end{split}\n\\\\end{equation}",
"label": "\\begin{equation} \\label{eq1}\n\\begin{split}\nA & = \\frac{\\\\pi r^2}{2} \\\\\n & = \\frac{1}{2} \\pi r^2\n\\end{split}\n\\end{equation}",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "latex",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View file

@ -468,7 +468,7 @@ colors: {
style.stroke: "linear-gradient(to right, red, blue, green)"
style.font-color: "linear-gradient(to bottom right, red 0%, yellow 25%, green 50%, cyan 75%, blue 100%)"
}
gradient -> colors
gradient -> colors: foobar {style.font-color: red; style.stroke: red; style.fill: "radial-gradient(#ffffff, #000000)"}
-- var_in_markdown --
vars: {
@ -747,3 +747,15 @@ alice -> alice: "Self-messages"
alice -> alice: "Self-messages"
bob."In the eyes of my dog, I'm a man."
-- elk-title-near --
title: "diagram title : Red-line hits 'near: top-center' in elk" {near: top-center}
a: {
a -> b
}
b: {
c
}
a.b -> b.c
b.c -> a.a: {style.font-color: red; style.stroke: red; style.fill: mistyrose}