跳到主要内容
知仓学习社ZHICANG

using-streamlit-markdown

Covers all Markdown features in Streamlit including GitHub-flavored syntax plus Streamlit extensions like colored text, badges, Material icons, and …

不碰外部(只输出文字)无严重或高危命中iusztinpaul/designing-real-world-ai-agents-workshop

它会碰到什么

扫了多少1 个文本文件,7 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Using Markdown in Streamlit

Streamlit supports Markdown throughout its API—in st.markdown(), widget labels, help tooltips, metrics, st.table() cells, and more. Beyond standard GitHub-flavored Markdown, Streamlit adds colored text, badges, icons, and LaTeX.

Quick reference

| Feature | Syntax | Example | Works in labels |

|---------|--------|---------|--------|

| Bold | text | Bold | ✓ |

| Italic | text | Italic | ✓ |

| Strikethrough | ~text~ | ~Strikethrough~ | ✓ |

| Inline code | ` code | variable ` | ✓ |

| Code block | `lang...` | `python...` | ✗ |

| Link | [text](url) | Streamlit | ✓ |

| Image | ![alt](path) | ![Logo](logo.png) | ✓ |

| Heading | # to ###### | ## Section | ✗ |

| Blockquote | > text | > Note | ✗ |

| Horizontal rule | --- | --- | ✗ |

| Unordered list | - item | - First<br>- Second | ✗ |

| Ordered list | 1. item | 1. First<br>2. Second | ✗ |

| Task list | - [ ] / - [x] | - [x] Done<br>- [ ] Todo | ✗ |

| Table | \| a \| b \| | \| H1 \| H2 \|<br>\|--\|--\| | ✗ |

| Emoji | Direct or shortcode | 🎉 or :tada: | ✓ |

| Streamlit logo | :streamlit: | :streamlit: | ✓ |

| Material icon | :material/icon_name: | :material/check_circle: | ✓ |

| Colored text | :color[text] | :red[Error] | ✓ |

| Colored background | :color-background[text] | :blue-background[Info] | ✓ |

| Badge | :color-badge[text] | :green-badge[Success] | ✓ |

| Small text | :small[text] | :small[footnote] | ✓ |

| LaTeX (inline) | $formula$ | $ax^2 + bx + c$ | ✓ |

| LaTeX (block) | $$formula$$ | $$\int_0^1 x^2 dx$$ | ✗ |

Where Markdown works

Markdown is supported in most places where text is rendered. Streamlit has three levels of markdown support:

Full Markdown — All syntax shown in the table above:

  • st.markdown(), st.write(), st.caption(), st.info(), st.warning(), st.error(), st.success(), st.table cells and headers, tooltips (help parameter)

Label subset — Inline formatting only (see table above). Block elements (e.g. headings, lists, tables) are silently stripped:

  • Widget and element labels (st.button, st.checkbox, st.radio, st.expander, st.page_link, etc.), st.radio and st.select_slider options, st.tabs names, st.metric label/value/delta, st.title, st.header, st.subheader, st.image caption, st.dialog title, st.progress, st.spinner.

No Markdown — Text displays literally:

  • st.text(), st.json(), st.dataframe() / st.data_editor() cells, st.selectbox / st.multiselect options, input placeholders, st.Page titles, chart/map labels

GitHub-flavored Markdown

Standard GFM syntax works as expected. Headings automatically get anchor links for navigation.

~~~python

st.markdown("""

Heading

Bold, italic, ~~strikethrough~~, inline code, [links](url)

  • Unordered list
  • [x] Task list

| Column | Column |

|--------|--------|

| Cell | Cell |

> Blockquote

code_block = "with syntax highlighting"

""")

~~~

Colored text, backgrounds, and badges

st.markdown(":red[Error] and :green[Success]")  # Colored text
st.markdown(":blue-background[Highlighted]")     # Colored background
st.markdown(":green-badge[Active] :red-badge[Inactive]")  # Inline badges

Available colors: red, orange, yellow, green, blue, violet, gray/grey, rainbow, primary

Note: rainbow is not supported for backgrounds or badges. Standalone badges also available via st.badge().

Material icons

Use Google Material Symbols with :material/icon_name: syntax. Find icons at fonts.google.com/icons

st.markdown(":material/check_circle: Complete")

Material icons also work in icon parameters across many elements (st.button, st.expander, st.info, etc.).

Emojis

Both Unicode emojis (preferred) and shortcodes work.

st.markdown("Hello! 👋 :+1: :tada: :streamlit:")

Note: Material icons are preferred over emojis for a more professional look.

LaTeX math

Single $ for inline, double $$ for display mode. Inline math requires non-whitespace after $ to avoid conflicts with currency (e.g., "$5" won't be parsed as math).

# Inline math
st.markdown("The quadratic formula is $x = \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}$")

# Display math (centered, larger)
st.markdown("""
$$
\\sum_{i=1}^{n} x_i = x_1 + x_2 + ... + x_n
$$
""")

Images in Markdown

st.markdown("![Alt text](https://example.com/image.png)")
st.button("![Logo](app/static/logo.png) Click me")  # Image as icon in label

In labels, images display as icons with max height equal to font height.

Markdown in element labels

Widgets, containers, and other elements support Markdown in their labels (using the label subset).

st.radio(":material/palette: Choose **color**", [":red-background[Red]", ":blue-background[Blue]", ":green-background[Green]"])
tab1, tab2 = st.tabs([":material/home: Home", ":material/settings: Settings"])
st.metric(label=":material/attach_money: Revenue", value=":green[$1.2M]", delta=":material/trending_up: 12%")

Escaping special characters

Use backslash to show literal characters: \\[, \\*, 1\\.

st.markdown(":blue[Array: \\[1, 2, 3\\]]")
st.button("1\\. Not a list")

Markdown in st.table

st.table() renders Markdown in cells and headers.

st.table({
    "**Name**": "Alice",
    "**Status**": ":green-badge[Active]",
    "**Role**": ":material/shield: Admin"
})

Combining features

Mix multiple features for rich formatting.

st.markdown("""
### :material/rocket: Launch status

| Phase | Status | Notes |
|-------|--------|-------|
| Build | :green-badge[Complete] | All tests passing |
| Deploy | :orange-badge[In Progress] | ETA: 2 hours |
| Monitor | :gray-badge[Pending] | Waiting on deploy |

:small[Last updated: just now]
""")

st.markdown - text alignment and width

Control layout with text_alignment and width parameters.

st.markdown("Centered heading", text_alignment="center")  # left, center, right, justify
st.markdown("Content width only", width="content")  # stretch, content, or pixels (e.g. 400)

HTML (use very sparingly!)

Mix Markdown with HTML using unsafe_allow_html=True. For pure HTML without markdown processing, use st.html() instead.

st.markdown("**Status:** <span style='color: coral'>Custom styled</span>", unsafe_allow_html=True)
st.html("<div class='custom'>Pure HTML content</div>")

References

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。