mirror of
https://github.com/Threnklyn/reveal-hugo.git
synced 2026-05-18 21:03:29 +02:00
Merge branch 'codeblock_linenumbers'
This commit is contained in:
@@ -20,8 +20,12 @@ name = "Josh Dzielak"
|
|||||||
[markup.goldmark.renderer]
|
[markup.goldmark.renderer]
|
||||||
unsafe = true
|
unsafe = true
|
||||||
[markup.highlight]
|
[markup.highlight]
|
||||||
|
# setting the theme for highlighting by Hugo
|
||||||
# we need a style that looks good in both light and dark background!
|
# we need a style that looks good in both light and dark background!
|
||||||
style = "tango"
|
style = "tango"
|
||||||
|
# to allow the use of Highlight.js line numbers and highlights
|
||||||
|
# (see https://github.com/hakimel/reveal.js#line-numbers--highlights)
|
||||||
|
codeFences = false
|
||||||
|
|
||||||
[outputFormats.Reveal]
|
[outputFormats.Reveal]
|
||||||
baseName = "index"
|
baseName = "index"
|
||||||
@@ -30,6 +34,8 @@ isHTML = true
|
|||||||
|
|
||||||
[params.reveal_hugo]
|
[params.reveal_hugo]
|
||||||
history = true
|
history = true
|
||||||
|
# setting the theme for highlighting by Highlight.js
|
||||||
|
highlight_theme = "github"
|
||||||
|
|
||||||
# used in content/template-example
|
# used in content/template-example
|
||||||
[params.reveal_hugo.templates.grey]
|
[params.reveal_hugo.templates.grey]
|
||||||
|
|||||||
@@ -0,0 +1,145 @@
|
|||||||
|
+++
|
||||||
|
title = "Reveal.js 3.9.0 highlighting example"
|
||||||
|
outputs = ["Reveal"]
|
||||||
|
|
||||||
|
[reveal_hugo]
|
||||||
|
theme = "white"
|
||||||
|
highlight_theme = "vs"
|
||||||
|
+++
|
||||||
|
|
||||||
|
## New highlighting features Presentation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
This presentation shows the use of the [new highlighting features](https://github.com/hakimel/reveal.js/blob/master/README.md#step-by-step-highlights) which were introduced with Reveal.js [v3.9.0](https://github.com/hakimel/reveal.js/releases/tag/3.9.0)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Prerequisite
|
||||||
|
|
||||||
|
First, disable `CodeFences` in to your `config.toml`:
|
||||||
|
|
||||||
|
{{< highlight toml "style=github" >}}
|
||||||
|
[markup.highlight]
|
||||||
|
codeFences = false
|
||||||
|
{{< /highlight >}}
|
||||||
|
|
||||||
|
---
|
||||||
|
## Theme
|
||||||
|
|
||||||
|
Specify a theme for Highlight.js in `config.toml`
|
||||||
|
|
||||||
|
{{< highlight toml "style=github" >}}
|
||||||
|
[params.reveal_hugo]
|
||||||
|
highlight_theme = "github"
|
||||||
|
{{< /highlight >}}
|
||||||
|
|
||||||
|
or in the `frontmatter`
|
||||||
|
|
||||||
|
{{< highlight toml "style=github" >}}
|
||||||
|
[reveal_hugo]
|
||||||
|
highlight_theme = "github"
|
||||||
|
{{< /highlight >}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
The line highlighting is configured by adding `{}` immediately after the language selection of the markdown code block.
|
||||||
|
|
||||||
|
{{< highlight md >}}
|
||||||
|
```foo{}
|
||||||
|
|
||||||
|
```
|
||||||
|
{{< /highlight >}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Just line numbers
|
||||||
|
|
||||||
|
`{}`
|
||||||
|
|
||||||
|
{{< highlight md >}}
|
||||||
|
```go{}
|
||||||
|
package main
|
||||||
|
import "fmt"
|
||||||
|
func main() {
|
||||||
|
fmt.Println("Hello world!")
|
||||||
|
}
|
||||||
|
```
|
||||||
|
{{< /highlight >}}
|
||||||
|
|
||||||
|
```go{}
|
||||||
|
package main
|
||||||
|
import "fmt"
|
||||||
|
func main() {
|
||||||
|
fmt.Println("Hello world!")
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Highlight specific lines
|
||||||
|
|
||||||
|
`{<line numbers separated by comma>}`
|
||||||
|
|
||||||
|
{{< highlight md >}}
|
||||||
|
```go{1,3-5}
|
||||||
|
package main
|
||||||
|
import "fmt"
|
||||||
|
func main() {
|
||||||
|
fmt.Println("Hello world!")
|
||||||
|
}
|
||||||
|
```
|
||||||
|
{{< /highlight >}}
|
||||||
|
```go{1,3-5}
|
||||||
|
package main
|
||||||
|
import "fmt"
|
||||||
|
func main() {
|
||||||
|
fmt.Println("Hello world!")
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Multi step highlight
|
||||||
|
|
||||||
|
`{<line numbers separated by pipe>}`
|
||||||
|
|
||||||
|
{{< highlight md >}}
|
||||||
|
```go{1|2|3-5}
|
||||||
|
package main
|
||||||
|
import "fmt"
|
||||||
|
func main() {
|
||||||
|
fmt.Println("Hello world!")
|
||||||
|
}
|
||||||
|
```
|
||||||
|
{{< /highlight >}}
|
||||||
|
|
||||||
|
```go{1|2|3-5}
|
||||||
|
package main
|
||||||
|
import "fmt"
|
||||||
|
func main() {
|
||||||
|
fmt.Println("Hello world!")
|
||||||
|
}
|
||||||
|
```
|
||||||
|
---
|
||||||
|
|
||||||
|
## Hiding the line numbers
|
||||||
|
|
||||||
|
There is no Reveal.js parameter to use line highlighting *without* line numbers.
|
||||||
|
However it can be achieved by adding the some [custom CSS](https://github.com/dzello/reveal-hugo#adding-html-to-the-layout).
|
||||||
|
|
||||||
|
{{< highlight html "style=github" >}}
|
||||||
|
<style>
|
||||||
|
.hljs-ln-numbers {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{{< /highlight >}}
|
||||||
|
|
||||||
|
<small>💡 Tip: To hide line numbers for every presentation, put it here:</small>
|
||||||
|
|
||||||
|
```text
|
||||||
|
layouts/partials/reveal-hugo/body.html
|
||||||
|
```
|
||||||
@@ -1 +1,8 @@
|
|||||||
<!-- override this partial to add content before the body tag closes -->
|
<!-- override this partial to add content before the body tag closes -->
|
||||||
|
|
||||||
|
<!-- hide Highlight.js line numbers -->
|
||||||
|
<style>
|
||||||
|
.hljs-ln-numbers {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -6,7 +6,11 @@
|
|||||||
{{- $content := replace .Content "<div class=\"footnotes\">\n\n<hr />" "<div class=\"footnotes\">" -}}
|
{{- $content := replace .Content "<div class=\"footnotes\">\n\n<hr />" "<div class=\"footnotes\">" -}}
|
||||||
<!-- <code> blocks processed by Hugo's highlighter have a data-lang attribute. For those, we disable -->
|
<!-- <code> blocks processed by Hugo's highlighter have a data-lang attribute. For those, we disable -->
|
||||||
<!-- highlight.js by changing the language class to "nohighlight", and adding "data-noescape". -->
|
<!-- highlight.js by changing the language class to "nohighlight", and adding "data-noescape". -->
|
||||||
{{- $content := replaceRE `<code class="language-\w+"\s+data-lang="\w+"` `<code class="nohighlight" data-noescape` $content -}}
|
{{- $content := replaceRE `<code class="language-\w+"\s+data-lang="\w+"` `<code class="nohighlight" data-noescape` $content -}}
|
||||||
|
<!-- enable Highlight.js line numbers when the markdown code block language selection is followed by "{}" e.g. ```js{} -->
|
||||||
|
{{- $content := replaceRE `(<code class="language-\w+){}(">)` `$1" data-line-numbers>` $content -}}
|
||||||
|
<!-- enable Highlight.js line highlights when the language selection is followed by "{<line numbers>}" e.g. ```js{1,5-7} -->
|
||||||
|
{{- $content := replaceRE `(<code class="language-\w+){(\S+)}(">)` `$1" data-line-numbers="$2">` $content -}}
|
||||||
<!-- Support both <hr /> (blackfriday) and <hr> (mmark) -->
|
<!-- Support both <hr /> (blackfriday) and <hr> (mmark) -->
|
||||||
{{- $content := replace $content "<hr>" "<hr />" -}}
|
{{- $content := replace $content "<hr>" "<hr />" -}}
|
||||||
<!-- Split the processed content by <hr /> tag -->
|
<!-- Split the processed content by <hr /> tag -->
|
||||||
|
|||||||
Reference in New Issue
Block a user