Listings-Paket benutzerdefinierte Sprache Trennzeichen Übereinstimmung linksseitig

Listings-Paket benutzerdefinierte Sprache Trennzeichen Übereinstimmung linksseitig

Ich versuche, eine CLI-ähnliche Schnittstelle für eine neue Sprache zu definieren, kann aber nicht herausfinden, wie ich das Trennzeichen so verwende, dass es meiner Eingabeaufforderung entspricht.

Ich möchte drei verschiedene Stile auf den Text anwenden. Im folgenden Beispiel habe ich jedes Zeichen mit einem oder unterstrichen ~, um anzuzeigen, zu welcher Stilgruppe es gehören soll.-=

# configure terminal
~ ==================
(config)# json notification host a
--------~ ========================
(something-something)# url http://10.99.10.1:8000/path
---------------------~ ===============================

Ich habe damit experimentiert:

\documentclass{article}
\usepackage{listings}
\lstdefinelanguage{iCli}
{
  comment=[l]{\%},
  basicstyle=\small,
  keywords={\#},
  keywordstyle=\textbf,
  delim=[s][keywordstyle]{(}{\#}
}

\begin{document}
\begin{lstlisting}[language=iCli]
% This is a comment
# configure terminal
(config)# json notification host a
\end{lstlisting}
\end{document}

Es wird jedoch nicht #als Schlüsselwort hervorgehoben

Antwort1

Ein bisschen Hacken ist erforderlich, siehe unten.

Bildbeschreibung hier eingeben

\documentclass{article}

% the following two packages are for bold typewriter font
\usepackage[T1]{fontenc}
\usepackage{beramono}

\usepackage{listings}
\usepackage{xcolor}

\lstdefinelanguage{iCli}{
  comment    = [l]{\%},
  literate   = \#{{\processhash}}1,              %<-- required for bold prompt
  moredelim  = **[is][\processmydelims]{(}{)\#}, %<-- for highlighting (...)#
  basicstyle = \ttfamily,                        %<-- for a nice typewriter font
}

% helper macros
\newcommand\processmydelimsend{}
\newcommand\processmydelims{%
  \renewcommand\processmydelimsend{\textcolor{red}{)}\textbf{\#}\egroup}%
  \bgroup\color{red}(\aftergroup\processmydelimsend%
}
\makeatletter
\newcommand\processhash{%
  \ifnum\lst@mode=\lst@Pmode%
    \bfseries%
  \fi
  \#%
}
\makeatother

\begin{document}

\begin{lstlisting}[language=iCli]
# configure terminal
(config)# json notification host a
(something-something)# url http://10.99.10.1:8000/path
\end{lstlisting}

\end{document}

verwandte Informationen