External DSLs of course give you full flexibility, as you are no longer constrained by the language. https://javieracero.com/blog/internal-vs-external-dsl/
My past work and this gave me the idea to do something that sits between an internal DSL of markdown and an external DSL - to allow tables without row dividers, but put them in fenced code blocks with a different language name so they don't get displayed wrongly by existing markdown tools, instead displayed as code. And because this is the only difference, to make it display as a table using existing gfm tools, an empty header could be added, since normally it's not desirable to have the whole thing as a header.
Here's an empty header that at least on https://loilo.github.io/gfm-preview/ shows up shorter than a normal line:
[]()|||
-|
Rent | $1500 | paid
Utilities | $200 | unpaid
Though it isn't md I think I will have md in the name of the extension, much like jsonl has l in the name but a jsonl file with two or more lines of data isn't a single valid JSON document.Edit: here's one that displays on GitHub:
[]()|[]()|[]()
-|-|-
Rent | $1500 | paid
Utilities | $200 | unpaid