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}
  • Probably a morecomment in the lstset would work here, see the listings documentation for examples. – Marijn Mar 9 '18 at 11:28
1

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.