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.
\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}