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)
我在渲染的文档中得到以下输出:
我希望 和 都OFFSET以TOP橙色突出显示,例如等SELECT。FROM我该怎么做?
有多种 SQL 突出显示变体,您可以使用 来获取这些变体的列表quarto pandoc --list-highlight-languages,并从 切换sql到sqlpostgresql将使您突出显示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)