Code in lstlistings führt zu etlichen Fehlermeldungen

Formelsatz für Mathematik, Naturwissenschaften und Technik


IronMind
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Di 12. Aug 2014, 11:24

Code in lstlistings führt zu etlichen Fehlermeldungen

Beitrag von IronMind »

Hallo, ich schreibe gerade eine Projekt-Dokumentation mit LaTeX. Dabei benutze ich lstlisting um Code Fragmente einzubinden (bzw. meistens CMD oder Terminal Befehle). Das Funktioniert auch an mehreren stellen ganz gut, allerdings habe ich einen Terminal-Befehl der dann dutzende Fehlermeldungen hervorruft. Vermutlich weil teile darin vorkommen die auch unter LaTeX verwendung finden. Allerdings dachte ich das in lstlisting Code einfach nur dargestellt und nicht interpretiert wird?...
Ich habe hier mal ein minimalbeispiel mit dem Terminal-Befehl der Probleme macht:
\documentclass[a4paper,12pt]{scrreprt}


\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage{marvosym}
\DeclareInputText{128}{\EUR}
\usepackage[scaled]{helvet}
\renewcommand*\familydefault{\sfdefault} 
\usepackage{setspace}
\usepackage[pdftex]{graphicx}
\usepackage{listings}
\usepackage{color}


\usepackage{xcolor,luximono}
\lstset{
  basicstyle=\ttfamily,
  basicstyle=\scriptsize,
  keywordstyle=\color{red},
  commentstyle=\color{blue},
  stringstyle=\color{green},
  backgroundcolor=\color{lightgray},
  morecomment=[s][\color{blue}]{/*}{*/}
  }

\begin{document}
\begin{onehalfspacing}

Text und chapters etc.

			\begin{lstlisting}[caption={Linux_Disk-Wipe}\label{linux-wipe},captionpos=t]
sudo sh -c 'cryptsetup -d /dev/urandom -c aes-xts-plain create delete GERÄT && shred -vzn 0 /dev/mapper/delete && sync && sleep 4 && cryptsetup remove delete' 
			\end{lstlisting}

text usw.

\end{onehalfspacing}
\end{document}
Hoffe da sind jetzt alle Informationen enthalten die ihr braucht. Wäre super wenn mir jemand helfen könnte.
PS: Ich hatte auch schon alle && mit \&& versehen, hat allerdings auch nicht geholfen.
Danke

Genmutant
Forum-Guru
Forum-Guru
Beiträge: 488
Registriert: Di 8. Jul 2008, 11:00
Wohnort: Augsburg

Beitrag von Genmutant »

Leider gerade ungetestet, da ich in der Arbeit bin. Aber versuch mal den Umlaut in GERÄT zu entfernen.

IronMind
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Di 12. Aug 2014, 11:24

Beitrag von IronMind »

Hilft leider auch nicht, umlaute sind auch im restlichen Dokument kein Problem... Aber trotzdem danke :)

Noch so einer

Beitrag von Noch so einer »

Du hast gleich mehrere Probleme:
  • Im Wert von caption hast Du einen Unterstrich, »_«. Das ist ein Mathebefehl und deshalb nur im Mathemodus erlaubt. Du willst vermutlich \_.
  • Du hast im optionalen Argument von lstlisting einfach mal eben irgendwo einen LaTeX-Befehl \label eingestreut. Nimm stattdessen die Option label, die dafür vorgesehen ist.
  • Das Paket listings kann nicht mit utf8 umgehen, jedenfalls nicht wenn diese per inputenc bereitgestellt wird.
Für die ersten beiden Probleme habe ich bereits die Lösung genannt. Für das letzte Problem gibt es eine Notlösung (von Markus Kohm) wenn man nur einige wenige Zeichen benötigt:
\documentclass[a4paper,12pt]{scrreprt}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{marvosym}
\DeclareInputText{128}{\EUR}
\usepackage[scaled]{helvet}
\renewcommand*\familydefault{\sfdefault}
\usepackage{setspace}
\usepackage[pdftex]{graphicx}
\usepackage{listings}
\usepackage{color}


\usepackage{xcolor}
\lstset{
  basicstyle=\ttfamily,
  basicstyle=\scriptsize,
  keywordstyle=\color{red},
  commentstyle=\color{blue},
  stringstyle=\color{green},
  backgroundcolor=\color{lightgray},
  morecomment=[s][\color{blue}]{/*}{*/},
  literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
  {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
  {ß}{\ss}1,
  }

\begin{document}
\begin{onehalfspacing}

Text und chapters etc.

\begin{lstlisting}[caption={\texttt{Linux\_Disk-Wipe}},label=linux-wipe,captionpos=t]
sudo sh -c 'cryptsetup -d /dev/urandom -c aes-xts-plain create delete GERÄT && shred -vzn 0 /dev/mapper/delete && sync && sleep 4 && cryptsetup remove delete'
\end{lstlisting}

text usw.

\end{onehalfspacing}
\end{document}
luximono habe ich übrigens weg gelassen, weil ich den zugehörigen Font gerade nicht installiert habe. utf8x habe ich durch utf8 ersetzte, weil man für Deutsch kein utf8x braucht und utf8x mit diversen Paketen Probleme macht.

Übrigens solltest Du Deine Präambel etwas entrümpeln. So genügt beispielsweise ein Farbpaket vollkommen.

Eine andere Alternative wäre die Verwendung von XeLaTeX oder LuaLaTeX an Stelle von pdfLaTeX. Mit den beiden kann listings nämlich auch UTF8. Man darf dann natürlich weder fontenc noch inputenc verwenden, sondern nimmt fontspec (UTF8 unterstützten XeLaTeX und LuaLaTeX von Haus aus):
\documentclass[a4paper,12pt]{scrreprt}

\usepackage[ngerman]{babel}
\usepackage{fontspec}
\usepackage{xcolor}
\usepackage{listings}
\lstset{
  basicstyle=\ttfamily,
  basicstyle=\scriptsize,
  keywordstyle=\color{red},
  commentstyle=\color{blue},
  stringstyle=\color{green},
  backgroundcolor=\color{lightgray},
  morecomment=[s][\color{blue}]{/*}{*/},
}

\begin{document}
Text und chapters etc.

\begin{lstlisting}[caption={\texttt{Linux\_Disk-Wipe}},label=linux-wipe,captionpos=t]
sudo sh -c 'cryptsetup -d /dev/urandom -c aes-xts-plain create delete GERÄT && shred -vzn 0 /dev/mapper/delete && sync && sleep 4 && cryptsetup remove delete'
\end{lstlisting}

text usw.
\end{document}
Ich habe dieses Mal alles weggelassen, was für das Beispiel überflüssig ist, um ein echtes vollständiges Minimalbeispiel zu erhalten.

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

IronMind
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Di 12. Aug 2014, 11:24

Beitrag von IronMind »

Wow, sehr schnelle sehr kompetente Antworten. Schön das es das in Foren noch gibt :)
Also erstmal aufrichtigsten dank an "noch so einer" hat funktioniert. Hab jetzt für Problem 3 erstmal den ersten Tip genommen. Werde mich aber mal noch mit den alternativen zu pdflatex auseinander setzen. Scheint als hätte ich noch viel zu lernen :)
und auch Danke an "Johannes B.". Sehr hilfreicher Link!

Antworten