新定义方言后,列表“无法加载请求的语言”

新定义方言后,列表“无法加载请求的语言”

[请注意,这是不是重复的ajeh 的问题]

我已经为 listings 包定义了一种新的 XSLT2 XML 方言,其中包含一些超出 XSLT 的额外关键字,但我无法让它识别这一点:我收到错误消息

! Package Listings Error: Couldn't load requested language.

See the Listings package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.10 \begin{lstlisting}[language=XSLT2]

! Package Listings Error: language xslt2 undefined.

(同样奇怪的是它用小写字母引用了 xslt2,但这可能是另一回事)。

以下是 MWE(删除了多余的关键字):

\documentclass{article}
\usepackage{listings}
\lstdefinelanguage[XSLT2]{XML}% copied from lstlang1.sty
  {morekeywords={xsl:for-each-group},%
   alsodigit={-},%
  }%
\lstloadlanguages{[XSLT2]XML}
\begin{document}
This is a test
\begin{lstlisting}[language=XSLT2]
<xsl:for-each-group select="db:biblioentry">
  ...
</xsl:for-each-group>
\end{lstlisting}
\end{document}

我究竟做错了什么?

[编辑] 我知道我可以使用[language={[XSLT2]XML}],但如果我使用现有的 XSLT 语言,我就不必这样做了{[XSLT]XML}……我该如何实现它才能以相同的方式工作?我试过使用,\lstset{defaultdialect=[XSLT2]XML}但没有效果。

答案1

你不是想定义一种方言,而是一种基于 xml 的新语言,所以你的语法是错误的。应该是

\documentclass{article}
\usepackage{listings}
\lstdefinelanguage{XSLT2}[]{XML}% changed
  {morekeywords={xsl:for-each-group},%
   alsodigit={-},%
  }%
\lstloadlanguages{XSLT2}
\begin{document}
This is a test
\begin{lstlisting}[language=XSLT]
<xsl:for-each-group select="db:biblioentry">
  ...
</xsl:for-each-group>
\end{lstlisting}
\end{document}

相关内容