![Comentarios multilínea de Matlab en listados de paquetes](https://rvso.com/image/335504/Comentarios%20multil%C3%ADnea%20de%20Matlab%20en%20listados%20de%20paquetes.png)
Estoy usando los listados de paquetes para incluir código de Matlab en mi informe. Funciona bien con comentarios que comienzan por %
pero no reconoce comentarios de varias líneas %{ ... %}
:
\usepackage{listings}
\lstset{language=Matlab}
...
\begin{lstlisting}
% normal comment
MATLAB code
%{
This is
a multiline
comment
%}
function [x,y] = test(x)
\end{lstlisting}
da
en lugar de
en Matlab.
¿Cómo puedo cambiar \lstset
para que funcione?
Respuesta1
Mi recomendación sería utilizar el paquete.matlab-prettifier
, que se basa en, listings
pero proporciona características mejoradas para el código MATLAB, más allá de las proporcionadas por la definición listings
del Matlab
lenguaje (incluida la compatibilidad con comentarios de bloque):
\documentclass{article}
\usepackage{matlab-prettifier}
\lstset{style=Matlab-editor}
\begin{document}
\begin{lstlisting}
% normal comment
MATLAB code
%{
This is
a multiline
comment
%}
function [x,y] = test(x)
\end{lstlisting}
\end{document}
Si, por alguna razón, debe usarlo listings
con su implementación existente del Matlab
lenguaje, puede agregar soporte para bloquear comentarios configurando la morecomment
clave del paquete:
morecomment=[s]{\%\{}{\%\}}
Aquí [s]
significa que buscamos dos delimitadores, el primero para abrir un comentario de bloque y el segundo para cerrarlo. Los siguientes grupos de llaves contienen los delimitadores de apertura y cierre de un comentario de bloque, respectivamente. Tenga en cuenta que tanto el signo de porcentaje como las llaves individuales de apertura/cierre deben ir acompañadas de barras invertidas al definir los delimitadores de comentarios.
\documentclass{article}
\usepackage{listings}
\lstset{
language=Matlab,
basicstyle=\ttfamily,
morecomment=[s]{\%\{}{\%\}},
}
\begin{document}
\begin{lstlisting}
% normal comment
MATLAB code
%{
This is
a multiline
comment
%}
function [x,y] = test(x)
\end{lstlisting}
\end{document}