Bug listings package (conflit linerange et comments)
Bonjour,
Il semble y avoir un bug dans le package listings en cas d'utilisation de linerange conjointement avec certains types de commentaires.
Comment peut-on faire un rapport de bug ?
Description du problème :
Objectif : pour traiter un langage comme PHP, on souhaite
- définir des commentaires multilignes /* ... */
- utiliser linerange pour n'imprimer que la partie entre les balises <? et ?>
Problème rencontré : le listing ne s'arrête pas à la balise ?> si un commentaire multilignes est défini et présent dans le code.
NB : le pb existe avec le langage PHP prédéfini par listings, mais j'ai réduit le problème à 2 mini définitions de langages.
<pre>
\documentclass{article}
\usepackage{listings}
\usepackage{color}
\lstdefinelanguage{mylanguageA}%
{
comment=[l]//,%
}[comments]
\lstdefinelanguage{mylanguageB}%
{
comment=[l]//,%
morecomment=[s]{/*}{*/},%
}[comments]%
\lstset{commentstyle=\color{blue}, frame=single}
\begin{document}
% Language A
% Correctly stops at ?>
% but /* ... */ is not defined as comment
\begin{lstlisting}[
language=mylanguageA,
linerange={<?}-{?>},includerangemarker=false,
]
<?
<?
/*
* bla
*/
function f(){
}
?>
etc
\end{lstlisting}
% Language B
% ERROR : This listing doesn't stop at ?>
\begin{lstlisting}[
language=mylanguageB,
linerange={<?}-{?>},includerangemarker=false,
]
<?
<?
/*
* bla
*/
function f(){
}
?>
etc
\end{lstlisting}
% Language B
% But correctly stops at ?> if the comment /* */ is not multilines
\begin{lstlisting}[
language=mylanguageB,
linerange={<?}-{?>},includerangemarker=false,
]
<?
<?
/* bla */
function f(){
}
?>
etc
\end{lstlisting}
\end{document}
</pre>