Listagens “não é possível carregar o idioma solicitado” após o dialeto recém-definido

Listagens “não é possível carregar o idioma solicitado” após o dialeto recém-definido

[Observe que isso énãouma duplicata depergunta do ajeh]

Eu defini um novo dialeto XSLT2 de XML para o pacote de listagens que inclui algumas palavras-chave extras além do XSLT, mas não consigo reconhecer isso: recebo a mensagem de erro

! 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.

(também estranho é que ele cita xslt2 em letras minúsculas, mas isso provavelmente é um assunto diferente).

Aqui está o MWE (corte de palavras-chave extras):

\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}

O que estou fazendo de errado?

[editar] Estou ciente que posso usar [language={[XSLT2]XML}], mas se eu usar a linguagem XSLT existente não preciso fazer {[XSLT]XML}...como faço para implementá-la para que funcione da mesma maneira? Já tentei usar \lstset{defaultdialect=[XSLT2]XML}mas não surtiu efeito.

Responder1

Você não deseja definir um dialeto, mas sim uma nova linguagem baseada em xml, então sua sintaxe está errada. Deveria ser

\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}

informação relacionada