((p "Inline-mode transclusion applies to all zettel that are parsed in a non-trivial way, e.g. as structured textual content." " " "For example, textual content is assumed if the " (a (@ (href . "00001006020000#syntax")) "syntax") " of a zettel is " (@L (@H "“") "zmk" (@H "”")) " (" (a (@ (href . "00001007000000")) "Zettelmarkup") "), or " (@L (@H "“") "markdown" (@H "”")) " / " (@L (@H "“") "md" (@H "”")) " (" (a (@ (href . "00001008010000")) "Markdown") ").") (p "Since this type of transclusion is at the level of " (a (@ (href . "00001007040000")) "inline-structured elements") ", the transclude specification must be replaced with some inline-structured elements.") (p "First, the referenced zettel is read." " " "If it contains other transclusions, these will be expanded, recursively." " " "When an endless recursion is detected, expansion does not take place." " " "Instead an error message replaces the transclude specification.") (p "The result of this (indirect) transclusion is searched for inline-structured elements.") (ul (li (p "If only an " (a (@ (href . "00001006050000")) "zettel identifier") " was specified, the first top-level " (a (@ (href . "00001007030000#paragraphs")) "paragraph") " is used." " " "Since a paragraph is basically a sequence of inline-structured elements, these elements will replace the transclude specification.") (p "Example: " (code "{{00010000000000}}") " (see " (a (@ (href . "00010000000000")) "00010000000000") ") is rendered as " (span (@ (class . "example")) "You will find the lastest information about Zettelstore at " (a (@ (href . "https://zettelstore.de") (rel . "external")) "https://zettelstore.de") "." " " "Check that website regulary for " (a (@ (href . "https://zettelstore.de/home/doc/trunk/www/download.wiki") (rel . "external")) "upgrades") " to the latest version." " " "You should consult the " (a (@ (href . "https://zettelstore.de/home/doc/trunk/www/changes.wiki") (rel . "external")) "change log") " before upgrading." " " "Sometimes, you have to edit some of your Zettelstore-related zettel before upgrading." " " "Since Zettelstore is currently in a development state, every upgrade might fix some of your problems.") ".")) (li (p "If a fragment identifier was additionally specified, the element with the given fragment is searched:") (ul (li (p "If it specifies a " (a (@ (href . "00001007030300")) "heading") ", the next top-level paragraph is used.") (p "Example: " (code "{{00010000000000#reporting-errors}}") " is rendered as " (span (@ (class . "example")) "If you have encountered an error, please include the content of the following zettel in your mail (if possible):") ".")) (li (p "In case the fragment names a " (a (@ (href . "00001007040350")) "mark") ", the inline-structured elements after the mark are used." " " "Initial spaces and line breaks are ignored in this case.") (p "Example: " (code "{{00001007040322#spin}}") " is rendered as " (span (@ (class . "example")) (code "{{Spinning Emoji|00000000040001}}{title=Emoji width=30}") " " " is rendered as " (span (@ (class . "example")) (img (@ (alt . "Spinning Emoji") (src . "00000000040001") (title . "Emoji") (width . "30")))) ".") ".")) (li (p "Just specifying the fragment identifier will reference something in the current page." " " "This is not allowed, to prevent a possible endless recursion.")))) (li (p "If the reference is a " (a (@ (href . "00001007040310#link-specifications")) "hosted or based") " link / URL to an image, that image will be rendered.") (p "Example: " (code "{{//z/00000000040001}}{alt=Emoji}") " is rendered as " (span (@ (class . "example")) (img (@ (alt . "Emoji") (src . "/z/00000000040001"))))))) (p "If no inline-structured elements are found, the transclude specification is replaced by an error message.") (p "To avoid an exploding " (@L (@H "“") "transclusion bomb" (@H "”")) ", a form of a " (a (@ (href . "https://en.wikipedia.org/wiki/Billion_laughs_attack") (rel . "external")) "billion laughs attack") " (also known as " (@L (@H "“") "XML bomb" (@H "”")) "), the total number of transclusions / expansions is limited." " " "The limit can be controlled by setting the value " (a (@ (href . "00001004020000#max-transclusions")) (kbd "max-transclusions")) " of the runtime configuration zettel.") (h2 (@ (id . "see-also")) "See also") (p (a (@ (href . "00001007031100")) "Full transclusion") " does not work inside some text, but is used for " (a (@ (href . "00001007030000")) "block-structured elements") "."))