I still didn’t get it after following that link (or reading through the shortcodes doc several times), so I’m leaving this for anyone else who is having a hard time with it. (caveat: I’m not a programmer, but I’m managing to muddle through, so I’m sure this explanation is overkill for most on this forum, but this is the post that came up when I was searching for an answer.)
In order to get markdown to work in a shortcode, I had to add safe to the end of the {{ body }} in the shortcode file.
For example, I have a very simple shortcode to allow for different styles of messages/callouts, styled by css class. In an .md file (like a blog post), I reference it by inserting :
{% callout(class="warning") %}
Message text goes here. It can use markdown features like **bold text**.
{% end %}
Then in templates/shortcodes I have a file named callout.html that contains:
<div class="message" {% if class %}class="{{class}}"{% endif %}>
{{ body | markdown | safe }}
</div>
It works just like normal markdown, so you can have multiple paragraphs, text formatting, links, etc.
Thanks for the tips, {{ body | markdown | safe }} got markdown working, but shortcode still doesn’t work, that is if I have another shortcode and what to use it in the body, it will be rendered as raw {{ short_code_name ... }}.