列表中的 SPARQL 查询语法突出显示?(在 minted 环境中运行良好,但在 mint 列表中则不行)

列表中的 SPARQL 查询语法突出显示?(在 minted 环境中运行良好,但在 mint 列表中则不行)

我可以在minted环境中使用以下方式对任何 SPARQL 查询进行语法突出显示:这个 Pygments 词法分析器谢谢这个答案

mint我的问题是如何让 SPARQL 语法突出显示在 a 中工作listing(以便我可以获得标签和标题)。我缺少 BOM/EOM 转义码。

这是一个简单的例子:

\documentclass{article}
\usepackage{minted}
\begin{document}

%Minted environment works fine 
\begin{minted}{sparql}
PREFIX java: <http://evolizer.org/ontologies/seon/2009/06/java.owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?url ?name
WHERE {
   ?url rdf:type java:Package .
   ?url rdfs:label ?name
}
\end{minted}

%Mint in listing gives runaway argument error
\begin{listing}[H]
\mint{SPARQL}
PREFIX java: <http://evolizer.org/ontologies/seon/2009/06/java.owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?url ?name
WHERE {
   ?url rdf:type java:Package .
   ?url rdfs:label ?name
\caption{Example of a listing.}
\label{lst:example}
\end{listing}

Listing \ref{lst:example} contains an example of a listing.

\end{document}

当我尝试编译上述示例时,pdflatex -shell-escape我得到:

Runaway argument?
REFIX java: <http://evolizer.org/ontologies/seon/2009/06/java.owl#>
! Forbidden control sequence found while scanning use of \FancyVerbGetVerb.
<inserted text> 
                \par 
l.17 ...zer.org/ontologies/seon/2009/06/java.owl#>

此示例来自薄荷手册工作正常:

\begin{listing}[H]
\mint{cl}/(car (cons 1 ’(2)))/
\caption{Example of a listing.}
\label{lst:example}
\end{listing}

Listing \ref{lst:example} contains an example of a listing. 

我似乎遗漏了/表示 SPARQL 消息开始和结束的转义代码(在 cl 中)。您有什么看法?

我也会考虑其他语法高亮方法(例如使用 Pygments 的其他库);因为我想要颜色,这个黑白高亮解决方案不是我需要的

答案1

您可以minted将环境放在listing环境内部来使用,标签和标题位于环境结束后minted(在单独的行上)。嵌套环境可以正常工作。

\mint命令用于排版单行代码,因此代码必须由一对匹配的字符分隔。例如,\mint{<language>}/<code>/使用/字符作为分隔符。

相关内容