如何突出显示 Quarto 文档代码块中的自定义关键字?

Bez*_*zus 1 sql r syntax-highlighting quarto

我正在编写一份简短的四开本文档,其中解释了一些 SQL 子句/关键字。我希望在我的代码块中突出显示所有这些子句,但默认语法突出显示并不支持所有这些子句。有没有办法将自定义关键字添加到语法突出显示设置中?

例如,我编写了以下代码块:

SELECT col_name(s)
FROM tbl_name
LIMIT n OFFSET m

-- Syntax supported by MySQL, MariaDB, PostgreSQL, SQLite
-- LIMIT = number of rows to retrieve
-- OFFSET = starting row (optional) 
Run Code Online (Sandbox Code Playgroud)
SELECT TOP n col_name(s)
FROM tbl_name

-- Syntax supported by SQL Server and MS Access
Run Code Online (Sandbox Code Playgroud)

我在渲染的文档中得到以下输出:

在此输入图像描述 在此输入图像描述

我希望 和 都OFFSETTOP橙色突出显示,例如等SELECTFROM我该怎么做?

mar*_*usl 8

有多种 SQL 突出显示变体,您可以使用 来获取这些变体的列表quarto pandoc --list-highlight-languages,并从 切换sqlsqlpostgresql将使您突出显示OFFSET

自定义任何现有的突出显示都非常容易, https: //pandoc.org/MANUAL.html#syntax-highlighting向您指出 KDE 样式的 XML 语法定义文件,https: //github.com/KDE/syntax-highlighting /tree/master/data/syntax。选择sql.xml(或任何其他)作为基础并添加其他关键字:

...
    <list name="keywords">
      <item>OFFSET</item>
      <item>TOP</item>
...
Run Code Online (Sandbox Code Playgroud)

我还更改了名称属性(<language name="SQL_CUSTOM" ...并将其保存在 Quarto qmd 旁边sql_custom.xml,将所有文件都放在工作目录中,一旦将其添加到列表中,Quarto / Pandoc 就会选择更新的定义文件syntax-definitions

示例 qmd:

---
title: "custom syntax hl"
format: html
theme: solar
syntax-definitions: 
  - sql_custom.xml
editor: source
---

### sql

``` sql
SELECT col_name(s) FROM tbl_name LIMIT n OFFSET m
SELECT TOP n col_name(s) FROM tbl_name
```

### sqlpostgresql knows about `OFFSET`

``` sqlpostgresql
SELECT col_name(s) FROM tbl_name LIMIT n OFFSET m
SELECT TOP n col_name(s) FROM tbl_name
```

### sql_custom knows about `OFFSET` & `TOP`

``` sql_custom
SELECT col_name(s) FROM tbl_name LIMIT n OFFSET m
SELECT TOP n col_name(s) FROM tbl_name
```
Run Code Online (Sandbox Code Playgroud)

并呈现结果: 在此输入图像描述