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

revealjs中codefocus与fragments联用致代码高亮消失问题求助

解决Reveal.js中Codefocus与Fragments结合时代码高亮消失的问题

思路1:调整Fragment嵌套结构与属性

问题核心是.current-only会隐藏非当前状态的fragment内容,导致codefocus无法作用于已隐藏的代码块。直接将data-code-focus绑定到代码块容器,同时移除.current-only,用普通.fragment控制显示时机即可:

---
title: "Test Highlight"
format: revealjs
execute: 
  echo: true
  
revealjs-plugins:
  - codefocus
---

## 修复后的多列幻灯片(带高亮)

:::::: {.columns .fragment}
::::: {.column width="50%"}
Some text

Some text

Some text

Some text

::::{.fragment}
::: {.callout-note}
## Note
Some callout
:::
::::
:::::

::::: {.column width="50%"}
::::{.fragment}
### R Code
:::{data-code-focus="5"}
```{r}
library(readr)

# Import mtcars.csv with read_csv()
df <- read_csv("mtcars.csv",
                col_names = TRUE)

:::
::::

::::{.fragment}

Result

head(df[1:3,1:3])

::::
:::::
::::::

## 思路2:自定义CSS保留代码块可见性
如果必须使用`.current-only`,可以添加自定义CSS,让代码块在非当前fragment状态下不被隐藏,仅控制高亮的显示时机:

```yaml
---
title: "Test Highlight"
format: revealjs
execute: 
  echo: true
  
revealjs-plugins:
  - codefocus
include-in-header:
  - text: |
      <style>
        .fragment.current-only:not(.current-fragment) pre {
          display: block !important;
          opacity: 1 !important;
        }
        .fragment.current-only:not(.current-fragment) .code-focus-line {
          display: none;
        }
        .fragment.current-only.current-fragment .code-focus-line {
          display: block;
        }
      </style>
---

## 带.current-only的修复版幻灯片

:::::: {.columns .fragment}
::::: {.column width="50%"}
Some text

Some text

Some text

Some text

::::{.fragment}
::: {.callout-note}
## Note
Some callout
:::
::::
:::::

::::: {.column width="50%"}
::::{.fragment .current-only data-code-focus="5"}
### R Code
```{r}
library(readr)

# Import mtcars.csv with read_csv()
df <- read_csv("mtcars.csv",
                col_names = TRUE)

::::

::::{.fragment}

Result

head(df[1:3,1:3])

::::
:::::
::::::

## 思路3:替代方案——原生代码高亮结合Fragment
不依赖codefocus插件,直接用Reveal.js原生的代码行高亮功能(默认已启用highlight.js插件),配合fragment控制高亮时机:

```yaml
---
title: "Test Highlight"
format: revealjs
execute: 
  echo: true
---

## 原生高亮实现幻灯片

:::::: {.columns .fragment}
::::: {.column width="50%"}
Some text

Some text

Some text

Some text

::::{.fragment}
::: {.callout-note}
## Note
Some callout
:::
::::
:::::

::::: {.column width="50%"}
::::{.fragment}
### R Code
```{r}
library(readr)

# Import mtcars.csv with read_csv()
df <- read_csv("mtcars.csv",
                col_names = TRUE)

::::

::::{.fragment data-line-numbers="5"}

R Code(高亮指定行)

library(readr)

# Import mtcars.csv with read_csv()
df <- read_csv("mtcars.csv",
                col_names = TRUE)

::::

::::{.fragment}

Result

head(df[1:3,1:3])

::::
:::::
::::::

内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:43:28