lstlisting-Umgebung, erster Buchstabe Groß oder Klein differ

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: lstlisting-Umgebung, erster Buchstabe Groß oder Klein differ

von MF » Mi 20. Mai 2015, 07:38

Danke dir für deine Hilfe. Der Test sieht aber schonmal so aus wie ich es mir vorstelle. Kannst du vielleicht noch durch Erklärungen im Code ergänzen, wofür was ist? Das wäre ein Traum.

Lieben Gruß und ganz herzlichen Dank

MF

von u_fischer » Di 19. Mai 2015, 16:16

MF hat geschrieben:alles was klein ist, soll blau und alles was groß ist rot. Ich dachte das wäre deutlich geworden.[/code]

Nun, du hast aber auch geschrieben "dass das Wort ROT wirklich rot ist und blau wirklich blau".

Du kannst sowas versuchen. Aber es nicht wirklich getestet ... gut möglich, dass es im Ernstfall explodiert.
\documentclass[a4paper,11pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[table]{xcolor}
\usepackage{listings,expl3}


\lstdefinelanguage{ANTLR}{
morekeywords={options, grammar, tokens, lexer, import},
keywordstyle=[2]\color{red},
keywordstyle=[3]\color{blue},
sensitive=true,
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
morestring=[b]',
showstringspaces=false
}

\makeatletter
\ExplSyntaxOn
\gdef\lst@KeywordTest#1#2#3{%
    \begingroup \let\lst@UM\@empty
    \global\expandafter\let\expandafter\@gtempa
        \csname\@lst#1@\the\lst@token\endcsname
    \endgroup
    \ifx\@gtempa\relax
        \tl_set:Nx \l_tmpa_tl      {\the\lst@token}
        \tl_set:Nx \l_tmpa_up_tl   { \exp_args:No\tl_expandable_uppercase:n{\the\lst@token}}
        \tl_set:Nx \l_tmpa_down_tl { \exp_args:No\tl_expandable_lowercase:n{\the\lst@token}}
        \tl_if_eq:NNT\l_tmpa_up_tl\l_tmpa_tl
        {\tl_set_eq:Nc\lst@thestyle{lst@keywordstyle2}}
        \tl_if_eq:NNT\l_tmpa_down_tl\l_tmpa_tl
        {\tl_set_eq:Nc\lst@thestyle{lst@keywordstyle3}}
    \else
        \let\lst@thestyle\@gtempa
    \fi}
\ExplSyntaxOff
\makeatother
\begin{document}
Hier soll jetzt die Listings-Umgebung hin:

\begin{lstlisting}[language={ANTLR}]
options document: ROT blau gruen Rot blaU \section
\end{lstlisting}
\end{document}

von MF » Di 19. Mai 2015, 14:59

alles was klein ist, soll blau und alles was groß ist rot. Ich dachte das wäre deutlich geworden. natürlich steht in meinem dokument vor \begin{lstlisting} \lstset{language=ANTLR} hatte ich vergessen zu schreiben. hier also nochmal das komplette Beispiel:
\documentclass[a4paper,11pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{color, colortbl}
\usepackage{listings}

\lstdefinelanguage{ANTLR}{
morekeywords={options, grammar, tokens, lexer, import},
sensitive=true,
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
morestring=[b]',
showstringspaces=false
}

\begin{document}
Hier soll jetzt die Listings-Umgebung hin:

\lstset{language=ANTLR}
\begin{lstlisting}
document: ROT blau
\end{lstlisting}
\end{document}
kannst du mir jetzt helfen oder einfach sagen was du genau alles brauchst um mir zu helfen?

von u_fischer » Di 19. Mai 2015, 14:34

Und welche Farbe soll "document" haben? Und wieso definiert dein Beispiel eine Sprache und nutzt sie dann aber gar nicht?

von MF » Di 19. Mai 2015, 13:12

Ein Fehler hat sich in das Beispiel eingeschlichen. Also hier das hier das richtige:
\documentclass[a4paper,11pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{color, colortbl}
\usepackage{listings}

\lstdefinelanguage{ANTLR}{
morekeywords={options, grammar, tokens, lexer, import},
sensitive=true,
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
morestring=[b]',
showstringspaces=false
}

\begin{document}
Hier soll jetzt die Listings-Umgebung hin:

\begin{lstlisting}
document: ROT blau 
\end{lstlisting}
\end{document}

von MF » Di 19. Mai 2015, 13:10

Doch mir ist die Frage wichtig. Sogar sehr wichtig eigentlich. Okay ich versuche das Minimalbeispiel nochmal.
\documentclass[a4paper,11pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{color, colortbl}

\lstdefinelanguage{ANTLR}{
morekeywords={options, grammar, tokens, lexer, import},
sensitive=true,
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
morestring=[b]',
showstringspaces=false
}

\begin{document}
Hier soll jetzt die Listings-Umgebung hin:

\begin{lstlisting}
document: ROT blau
\end{lstlisting}
\end{document}
Das habe ich bis jetzt. Es läuft auch aber ich habe es noch nicht geschafft, dass das Wort ROT wirklich rot ist und blau wirklich blau.

Kannst du mir jetzt helfen?

Ganz lieben Dank für deine Mühen.

MF

von u_fischer » Di 19. Mai 2015, 12:39

MF hat geschrieben:Ah das fehlende Minimalbeispiel. Okay. Das hatte ich wirklich nicht beachtet.
Ja, und jetzt hast du nicht beachtet, wie ein Minimalbeispiel eigentlich aussehen soll. Dir scheint die Frage nicht wichtig zu sein, sonst würdest du dich etwas mehr anstrengen.

von MF » Di 19. Mai 2015, 12:24

Ah das fehlende Minimalbeispiel. Okay. Das hatte ich wirklich nicht beachtet. Also ich habe eine Codeumgebung mit folgendem Aufbau:
\begin{document}
...
\begin{lstlisting}
document : ROT blau
\end{lstlisting}
...
\end{document}
Alle Wörter in dieser Codeumgebung sollen jetzt einer bestimmten Farbe zugewiesen werden, und zwar alle kleinen Wörter sollen blau und alle Großgeschriebenen Wörter Rot sein. Bis jetzt habe ich mir so etwas definiert für meine Listings-Umgebung:
\lstdefinelanguage{ANTLR}{
morekeywords={options, grammar, tokens, lexer, import},
sensitive=true,
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
morestring=[b]',
showstringspaces=false
}
Im nächsten Schritt würde ich das gerne, dass nur der Anfangsbuchstabe großgeschrieben werden muss, damit das Wort schon rot geschrieben wird also so:
document: blau Rot

von u_fischer » Mo 18. Mai 2015, 15:32

MF hat geschrieben:Danke Ulrike für deinen Hinweis. Leider kann ich damit nichts anfangen.
Dann hast du den Link nicht bis zu Ende gelesen. Da gibt es eine Abschnitt "Wenn Du eine Frage stellst ... ".

von MF » Mo 18. Mai 2015, 15:26

Danke Ulrike für deinen Hinweis. Leider kann ich damit nichts anfangen. Möchtest du mir sagen ich bin im falschen Forum? Ich habe doch eine Frage zur Quellcodeumgebung und somit zu lstlisting. Speziell da möchte ich ja eine eigene Sprache definieren und mir fehlt der Befehl wie ich sagen kann, Großgeschriebene Wörter sind Signalwörter mach die bitte in blau. Oder möchtest du mir sagen ich soll die Hilfe durchlesen? Da kann ich dir versichern, dass habe ich und leider nichts gefunden zu "Wie setze ich ein Wort das mit Großbuchstaben anfängt als Signalwort". Leider habe ich da gar nichts in diese Richtung gefunden. Vielleicht ist das ja auch gar nicht möglich. Aber vielleicht kann mir ja trotzdem wer helfen, der nicht nur einen Link schickt.

Nach oben