2

I'm documenting some HMTL and wold like to use listings and inside the listing some comments, but without to see the HMTL comments <-- --!> arrows. Is there a way to do that?

mwe:

\documentclass{article}
  \usepackage[svgnames]{xcolor}
  \usepackage{listings}
      \lstset{% german umlauts
        basicstyle=\ttfamily,
        escapeinside={<@}{@>},
        literate={ö}{{\"o}}1
            {Ö}{{\"O}}1 
            {ä}{{\"a}}1 
            {Ä}{{\"A}}1 
            {ü}{{\"u}}1 
            {Ü}{{\"U}}1 
            {ß}{{\ss}}1
        }
        \lstset{ %
          backgroundcolor=\color{white},        % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}; should come as last argument
          basicstyle=\scriptsize,                   % the size of the fonts that are used for the code
          breakatwhitespace=false,              % sets if automatic breaks should only happen at whitespace
          breaklines=true,                          % sets automatic line breaking
          captionpos=b,                             % sets the caption-position to bottom
          commentstyle=\color{DarkGreen},       % comment style
          deletekeywords={...},                 % if you want to delete keywords from the given language
          escapeinside={\%*}{*)},               % if you want to add LaTeX within your code
          extendedchars=true,                   % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
          frame=false,                          % adds a frame around the code (single)
          keepspaces=true,                      % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
          keywordstyle=\color{blue},            % keyword style
          language=Octave,                      % the language of the code
          morekeywords={*,...},                 % if you want to add more keywords to the set
          numbers=left,                             % where to put the line-numbers; possible values are (none, left, right)
          numbersep=5pt,                        % how far the line-numbers are from the code
          numberstyle=\tiny\color{DarkGray},    % the style that is used for the line-numbers
          rulecolor=\color{black},              % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
          showspaces=false,                     % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
          showstringspaces=false,               % underline spaces within strings only
          showtabs=false,                           % show tabs within strings adding particular underscores
          stepnumber=1,                             % the step between two line-numbers. If it's 1, each line will be numbered
          stringstyle=\color{DarkMagenta},      % string literal style
          tabsize=2,                                % sets default tabsize to 2 spaces
          title=\lstname,                               % show the filename of files included with \lstinputlisting; also try caption instead of title
          xleftmargin=20pt
        }
  \begin{document}
    \section{title}
      \lstset{language=HTML}
      \begin{lstlisting}
% Beispiel eines DOM-Objektes:
<div id="demo"><h2>Let AJAX change this text</h2></div>
<button type="button" onclick="loadDoc()">Change Content</button>
% Instanzierung des Objektes:
xhttp=new XMLHttpRequest();
% AJAX Call wird vorbereitet:
xhttp.open("GET", "ajax_info.txt", true);
% AJAX Call wird gestartet:
xhttp.send();
% Das DOM-Objekt ''demo'' wird geändert:
document.getElementById(''demo'').innerHTML = this.responseText;
% Funktionsaufruf, falls AJAX eine Antwort liefert:
xhttp.onreadystatechange = function() {}
% Prüfung auf erwartete Antwort:
if (this.readyState == 4 && this.status == 200) {}
      \end{lstlisting}
  \end{document}
1
  • Probably a morecomment in the lstset would work here, see the listings documentation for examples.
    – Marijn
    Commented Mar 9, 2018 at 11:28

2 Answers 2

2

With morecomment you can set an arbitrary character or character sequence as comment marker, to mark comments until the end of the line or between a pair of delimiters. Note that for using the % sign you need to escape the character in lstset because it is also the LaTeX comment character.

Example:

\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{listings}
\lstset{
    basicstyle=\ttfamily,
    language=HTML,
    keywordstyle=\color{blue},
    stringstyle=\color{DarkMagenta},
    commentstyle=\color{DarkGreen},
    morecomment=[l]{\%}
}
\begin{document}
\begin{lstlisting}
% Beispiel eines DOM-Objektes:
<div id="demo"><h2>Let AJAX change this text</h2></div>
\end{lstlisting}
\end{document}

Result:

enter image description here

5

Use moredelim=[is][<your_style>]{<--}{--!>}.

For example:

\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{listings}
\lstset{
    basicstyle=\ttfamily,
    language=HTML,
    keywordstyle=\color{blue},
    stringstyle=\color{DarkMagenta},
    moredelim=[is][\color{DarkGreen}]{<--}{--!>}
}
\begin{document}
\begin{lstlisting}
<--Beispiel eines DOM-Objektes:--!>
<div id="demo"><h2>Let AJAX change this text</h2></div>
\end{lstlisting}
\end{document}

Result:

Listings example

If you use morecomment instead of moredelim, the whole comment will be discarded. For more details, have a look at the package documentation, section 3.3.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .