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
相关产品推荐
相关产品推荐

