examples/sigil_md.livemd

<!-- livebook:{"persist_outputs":true} -->

# ~MD Sigil

```elixir
Mix.install([
  {:mdex, ">= 0.11.2"},
  {:kino, "~> 0.16"}
])
```

## Intro

The `~MD` sigil provides a convenient way to write Markdown directly in your Elixir code. It supports multiple output formats and can be customized with options passed to `use MDEx`.

More info at [MDEx.Sigil](https://hexdocs.pm/mdex/MDEx.Sigil.html)

## Examples

With no options, the sigil uses sensible defaults with most extensions enabled:

````elixir
defmodule DefaultExample do
  use MDEx

  def render do
    ~MD"""
    This is a **bold** statement with ~strikethrough~ and ^superscript^.

    - [x] Task completed
    - [ ] Task pending

    ```elixir
    def greet(name), do: "Hello, #{name}!"
    ```
    """HTML
  end
end

DefaultExample.render()
|> Kino.HTML.new()
````

You can pass options to `use MDEx` to customize the sigil behavior. Options are merged with the defaults:

````elixir
defmodule CustomOptsExample do
  use MDEx,
    extension: [strikethrough: false],
    syntax_highlight: [formatter: {:html_inline, theme: "gruvbox_light"}]

  def render do
    ~MD"""
    Notice ~this~ is not rendered as strikethrough because we disabled it.

    ```elixir
    defmodule Fibonacci do
      def fib(0), do: 0
      def fib(1), do: 1
      def fib(n), do: fib(n - 1) + fib(n - 2)
    end
    ```
    """HTML
  end
end

CustomOptsExample.render()
|> Kino.HTML.new()
````