Lumis Docs
Integrations

Tableau

Use Lumis in Tableau through Tableau's built-in MDEx markdown converter options.

Tableau already uses MDEx for Markdown by default. That makes Lumis a built-in integration point rather than a custom post-processing step.

The hook you want is Tableau's config :tableau, :config, markdown: [mdex: ...] configuration. Pass Lumis formatter options through MDEx's syntax_highlight setting.

Add dependencies

def deps do
  [
    {:tableau, "~> 0.30"},
    {:lumis, "~> 0.10"}
  ]
end

Tableau 0.30 requires mdex ~> 0.11.1. That MDEx version includes its parsers and requires :lumis, so this integration needs no lumis_wasm_* packages or :mdex_native configuration. It cannot resolve alongside mdex ~> 0.14.

Direct calls to Lumis.highlight/2 use separate parser packages. For an integration that supports MDEx 0.14, see MDEx parser packages for the dependency changes and NimblePublisher for a complete setup.

Configure Tableau to use Lumis

# config/config.exs
import Config

config :tableau, :config,
  url: "http://localhost:8080",
  markdown: [
    mdex: [
      extension: [
        table: true,
        header_ids: "",
        tasklist: true,
        strikethrough: true,
        autolink: true,
        alerts: true,
        footnotes: true
      ],
      render: [unsafe: true],
      syntax_highlight: [
        formatter: {:html_inline, theme: "catppuccin_latte"}
      ]
    ]
  ]

With that in place, fenced code blocks rendered by Tableau's Markdown pipeline will use Lumis.

Multi-theme output

config :tableau, :config,
  url: "http://localhost:8080",
  markdown: [
    mdex: [
      syntax_highlight: [
        formatter:
          {:html_multi_themes,
           themes: [
             light: "catppuccin_latte",
             dark: "catppuccin_frappe"
           ],
           default_theme: "light-dark()"}
      ]
    ]
  ]

This is the better default when your site already supports light and dark themes.

On this page