(((meta (@ (content . "The \"draw\" language") (name . "title"))) (meta (@ (content . "manual") (name . "role"))) (meta (@ (content . "#graphic #manual #zettelstore") (name . "tags"))) (meta (@ (content . "zmk") (name . "syntax"))) (meta (@ (content . "00001007031300") (name . "back"))) (meta (@ (content . "00001007031300 00001008000000") (name . "backward"))) (meta (@ (content . "1") (name . "box-number"))) (meta (@ (content . "(c) 2020-present by Detlef Stern ") (name . "copyright"))) (meta (@ (content . "20220131142036") (name . "created"))) (meta (@ (content . "00001008000000") (name . "forward"))) (meta (@ (content . "en") (name . "lang"))) (meta (@ (content . "EUPL-1.2-or-later") (name . "license"))) (meta (@ (content . "20230403123738") (name . "modified"))) (meta (@ (content . "20230403123738") (name . "published"))) (meta (@ (content . "public") (name . "visibility")))) (p "Sometimes, " (@L (@H "“") "a picture is worth a thousand words" (@H "”")) "." " " "To create some graphical representations, Zettelmarkup provides a simple mechanism." " " "Characters like " (@L (@H "“") (kbd "|") (@H "”")) " or " (@L (@H "“") (kbd "-") (@H "”")) " already provide some visual feedback." " " "For example, to create a picture containing two boxes that are connected via an arrow, the following representation is possible:") (pre (code "~~~draw\n+-------+ .-------.\n| Box 1 | ----> | Box 2 |\n+-------+ '-------'\n~~~")) (p "Zettelstore translates this to:") (p (@H "Box 1Box 2")) (p "Technically spoken, the drawing is translated to a " (a (@ (href . "00001008000000#svg")) "SVG") " element.") (p "The following characters are interpreted to create a graphical representation." " " "Some of them will start a path that results in a recognized object.") (table (thead (tr (th (@ (class . "center")) "Character") (th "Meaning") (th (@ (class . "center")) "Path Start"))) (tbody (tr (td (@ (class . "center")) (kbd "+")) (td "Corner") (td (@ (class . "center")) "Yes")) (tr (td (@ (class . "center")) (kbd "-")) (td "Horizontal line") (td (@ (class . "center")) "Yes")) (tr (td (@ (class . "center")) (kbd "|")) (td "Vertical line") (td (@ (class . "center")) "Yes")) (tr (td (@ (class . "center")) (kbd "<")) (td "Left arrow") (td (@ (class . "center")) "Yes")) (tr (td (@ (class . "center")) (kbd ">")) (td "Right arrow") (td (@ (class . "center")) "No")) (tr (td (@ (class . "center")) (kbd "v")) (td "Down arrow") (td (@ (class . "center")) "No")) (tr (td (@ (class . "center")) (kbd "^")) (td "Up arrow") (td (@ (class . "center")) "Yes")) (tr (td (@ (class . "center")) (kbd ":")) (td "Dashed vertical line") (td (@ (class . "center")) "Yes")) (tr (td (@ (class . "center")) (kbd "=")) (td "Dashed horizontal line") (td (@ (class . "center")) "Yes")) (tr (td (@ (class . "center")) (kbd ".")) (td "Rounded corner") (td (@ (class . "center")) "Yes")) (tr (td (@ (class . "center")) (kbd "'")) (td "Rounded corner") (td (@ (class . "center")) "Yes")) (tr (td (@ (class . "center")) (kbd "/")) (td "North-east diagonal line") (td (@ (class . "center")) "Yes")) (tr (td (@ (class . "center")) (kbd "\\")) (td "South-east diagonal line") (td (@ (class . "center")) "Yes")) (tr (td (@ (class . "center")) (kbd "x")) (td "A tick on a line") (td (@ (class . "center")) "No")) (tr (td (@ (class . "center")) (kbd "*")) (td "A dot on a line") (td (@ (class . "center")) "No")))) (p "Interpretation of these characters starts at the top left corner and continues depending on the current character.") (p "All other characters are treated as text."))