我可以在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>/
使用/
字符作为分隔符。