Differences From
Artifact [af24dd1316]:
547 547 this paragraph contains some [.important truly important] information.
548 548 important: dense underline font=impact html.class=blink
549 549 ~~~
550 550 you should always give your styles semantic names where practicable, instead of simply describing their graphical characteristics. this is good practice in general, but especially because your document will be renderable to different formats with different characteristics, and what makes text look important on a manpage in the terminal may be quite different from how it looks in a webpage or PDF.
551 551
552 552 ##dir directives
553 553 d: [`%[*[##1]]]
554 + dd: [`%[*[##1]] [#2]]
554 555 * {d author} encodes document authorship. multiple author directives can be issued to add additional coauthors
555 556 * {d cols} specifies the number of columns the next object should be rendered with
556 557 * {d include} transcludes another file
557 558 * {d import} reads in the contents of another file as an embeddable section
558 559 * {d quote} transcludes another file, without expanding the text except for paragraphs
559 560 * {d embed}, where possible, embeds another file as an object within the current one. in HTML this could be accomplished with e.g. an iframe.
560 561 * {d expand} causes the next object (usually a code block) to be fully expanded when it would otherwise not be
................................................................................
702 703 * [`%[*toc] name [$id styled-text]]: like [`%[*toc] mark] but allows an additional [$id] parameter which specifies the ID the renderer will assign to an anchor element. this is not meaningful for all renderers and when it is, it is up to the renderer to decide what it means.
703 704 ** the [*html] render backend interprets [$id] as the [`id] element for the anchor tag
704 705 ** the [*groff] render backend ignores [$id]
705 706
706 707 ###tsmog transmogrify
707 708 a cortav renderer may automatically translate punctuation marks or symbol sequences to superior representations depending on their context. to be compliant this extension should implement, at minimum:
708 709 * smart quotes (with consideration for the typographical conventions languages like German or Spanish)
709 -** {dir.d transmogrify|language [$lang]} can be used to explicitly set the language; otherwise, it must be determined from the value of {dir.d pragma|lang}. if this is not present, implementations may fall back on their own methods for determining the language in use, such as command-line flags.
710 +** {dir.dd transmogrify|language [$lang]} can be used to explicitly set the language; otherwise, it must be determined from the value of {dir.dd pragma|lang}. if this is not present, implementations may fall back on their own methods for determining the language in use, such as command-line flags.
710 711 * multigraph to glyph conversion, including at least:
711 712 ** ["--] --> "—"
712 713 ** ["-->] --> "→"
713 714 ** ["<--] --> "←"
714 715
715 -an escape character before any of the sequence characters should prevent the sequence from being rendered. raw nodes (that is, ["[\…]] and ["["…]]) should not be scanned for transmogrification, nor should the contents of code blocks unless marked with the [`%[*expand]] directive
716 +an escape character before any of the sequence characters should prevent the sequence from being rendered. raw nodes (that is, ["[\\…]] and ["["…]]) should not be scanned for transmogrification, nor should the contents of code blocks unless marked with the [`%[*expand]] directive
716 717
717 718 transmogrification shall only take place after all other parsing steps are completed.
718 719
719 720 ###hilite hilite
720 721 code can be highlighted according to the formal language it is written in. a compliant hilite implementation must implement basic keyword, symbol, comment, pragma, and literal highlighing for the following formal languages.
721 -* C
722 +* [^nocpp C]
723 + nocpp: all keywords and constructions present in C20 should be highlighted correctly, including e.g. [`typeof] and [`_Static_assert]. C++ support will never be required, due to the extreme complexity of C++ grammar and the likelihood that any naïve hilighter will produce incorrect results in edge cases
724 +* Bourne Shell
725 +* DOS INI
726 +* [>glsl GLSL]
727 +* [>gmake gmake] and [>bmake bmake]
722 728 * [>lua Lua]
723 -* [>html HTML]
724 -* [>scheme Scheme]
729 +* [>fennel Fennel]
725 730 * [>terra Terra]
731 +* [>scheme Scheme]
732 +* SQL (including PL/SQL)
726 733 * [>libconfig libconfig]
734 +* [>groff groff]
735 +* [>html HTML]
736 +* [>css CSS]
737 +* cortav
727 738
739 + glsl: https://www.khronos.org/opengl/wiki/Core_Language_(GLSL)
740 + gmake: https://www.gnu.org/software/make/
741 + bmake: https://www.freebsd.org/cgi/man.cgi?query=bmake&sektion=1
728 742 lua: https://lua.org
729 - scheme: https://call-cc.org
743 + fennel: https://fennel-lang.org
730 744 terra: https://terralang.org
731 - html: https://dev.w3.org/html5/spec-LC/
745 + scheme: https://call-cc.org
732 746 libconfig: http://hyperrealm.github.io/libconfig/
747 + groff: https://www.gnu.org/software/groff/
748 + html: https://dev.w3.org/html5/spec-LC/
749 + css: https://www.w3.org/Style/CSS/current-work
733 750
734 751 the highlighter should make use of semantic HTML tags like [`<var>] where possible.
735 752
736 753 ###lua lua
737 754 renderers with a lua interpreter available can evaluate lua code:
738 755 * [`%lua use [!file]]: evaluates [$file] and makes its definitions available
739 756 * [`\[%lua raw [!script]\]]: evaluates [$script] and emits the string it returns (if any) in raw span context.