You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Marp幻灯片中的代码块单独套用深色主题语法高亮?

解决Marp代码块单独用深色语法高亮的方案

不用重写全部CSS,只需要在你现有的浅色主题自定义CSS里,针对性覆盖代码块的语法高亮样式即可,核心思路是复用Marp内置深色主题的配色规则,只作用于pre和code元素。

方法一:直接追加深色语法高亮规则

在你已有的自定义CSS文件末尾,添加以下代码:

/* 保留你之前对浅色主题的微调样式 */
/* ... 你的现有代码 ... */

/* 仅为代码块应用深色语法高亮 */
pre,
pre code {
  background-color: #2d2d2d !important;
  color: #ccc !important;
}

/* 对应不同代码token的配色,完全复用Marp默认深色主题 */
pre .token.comment,
pre .token.block-comment,
pre .token.prolog,
pre .token.doctype,
pre .token.cdata {
  color: #999;
}

pre .token.punctuation {
  color: #ccc;
}

pre .token.tag,
pre .token.attr-name,
pre .token.namespace,
pre .token.deleted {
  color: #e2777a;
}

pre .token.function-name {
  color: #6196cc;
}

pre .token.boolean,
pre .token.number,
pre .token.function {
  color: #f08d49;
}

pre .token.property,
pre .token.class-name,
pre .token.constant,
pre .token.symbol {
  color: #f8c555;
}

pre .token.selector,
pre .token.important,
pre .token.atrule,
pre .token.keyword,
pre .token.builtin {
  color: #cc99cd;
}

pre .token.string,
pre .token.char,
pre .token.attr-value,
pre .token.regex,
pre .token.variable {
  color: #7ec699;
}

pre .token.operator,
pre .token.entity,
pre .token.url {
  color: #67cdcc;
}

pre .token.important,
pre .token.bold {
  font-weight: bold;
}
pre .token.italic {
  font-style: italic;
}

pre .token.entity {
  cursor: help;
}

pre .token.inserted {
  color: green;
}

方法二:用CSS变量更优雅维护

如果你的Marp版本支持CSS变量,可以通过定义变量的方式,更方便地切换配色:

/* 保留现有浅色主题微调 */
/* ... 你的现有代码 ... */

/* 定义深色语法高亮的CSS变量 */
pre {
  --code-bg: #2d2d2d;
  --code-text: #ccc;
  --code-comment: #999;
  --code-punctuation: #ccc;
  --code-tag: #e2777a;
  --code-function: #6196cc;
  --code-number: #f08d49;
  --code-constant: #f8c555;
  --code-keyword: #cc99cd;
  --code-string: #7ec699;
}

/* 应用变量到代码块 */
pre, pre code {
  background-color: var(--code-bg) !important;
  color: var(--code-text) !important;
}

pre .token.comment { color: var(--code-comment) !important; }
pre .token.punctuation { color: var(--code-punctuation) !important; }
pre .token.tag { color: var(--code-tag) !important; }
pre .token.function-name { color: var(--code-function) !important; }
pre .token.number { color: var(--code-number) !important; }
pre .token.constant { color: var(--code-constant) !important; }
pre .token.keyword { color: var(--code-keyword) !important; }
pre .token.string { color: var(--code-string) !important; }

说明

  • 两种方法都不需要修改你现有的浅色主题核心样式,只追加代码即可。
  • 使用!important是为了确保深色样式能覆盖浅色主题默认的代码块样式。
  • 配色完全沿用Marp官方深色主题的语法高亮风格,保证视觉统一。

内容的提问来源于stack exchange,提问作者helle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:45:22