Ich bin neu in dem Thema LaTeX und habe nun das Problem das bei der Verwendung des listings-Pakets die -- oder --- in entsprechend Halbgeviertstrich und Geviertstrich umgewandelt gesetzt werden. Dabei dachte ich, dass das Paket doch genau dazu dient um das zu verhindern. Das Minimalbeispiel liest jetzt eine sehr kleine Datei ein, das Original ist deutlich länger und deshalb muss ich auch bei der Verwendung von \lstinputlisting bleiben. Gibt's eine Möglichkeit diese Umwandlung zu deaktivieren oder zu verhindern, gerne auch für das gesamte Dokument?

Öffne in Overleaf
\documentclass[12pt,a4paper]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage[left=3.00cm, right=2.50cm, top=2.50cm, bottom=3.00cm]{geometry}

\usepackage{listings}
\usepackage{color}

\begin{document}

\lstdefinestyle{json}{
    basicstyle=\scriptsize,
    breaklines=true,
    frame=lines,
    numbers=left,
    numberstyle=\tiny,
    string=[s]{"}{"},
    stringstyle=\color{blue},
    comment=[l]{:},
    commentstyle=\color{black},
}

\lstinputlisting[
caption={listings test1}\label{lst:test1},
captionpos=t,
style=json,
]{listings.json}

\end{document}

und die dazugehörige "listings.json"

Öffne in Overleaf
{
  "_erster": "erster",
  "_zweiter": "zweiter",
  "_dritter": "ABC----DE------8~~~~~.8888"
}

das Problem:

alt text

gefragt 25 Mär '17, 17:45

berni's gravatar image

berni
1613
Akzeptiert-Rate: 0%

bearbeitet 27 Mär '17, 07:44

saputello's gravatar image

saputello
11.1k154365

Der Bindestrich wird in ein Minuszeichen umgewandelt. Die Anzahl der Zeichen bleibt gleich, nicht wie bei -- und --- im Text.

(26 Mär '17, 00:12) Henri
(26 Mär '17, 13:16) Johannes

Leider gibt es dafür in Listings keine Option, aber Alan Munn auf TeX.SX hat die passende Lösung.

Öffne in Overleaf
\begin{filecontents*}{listings.json}
{
  "_erster": "erster",
  "_zweiter": "zweiter",
  "_dritter": "ABC----DE------8~~~~~.8888"
}
\end{filecontents*}

\documentclass{article}

\usepackage{listings}

\makeatletter
\lst@CCPutMacro\lst@ProcessOther {"2D}{\lst@ttfamily{-{}}{-{}}}
\@empty\z@\@empty
\makeatother

\usepackage{color}

\begin{document}

\lstdefinestyle{json}{
    basicstyle=\scriptsize,
    breaklines=true,
    frame=lines,
    numbers=left,
    numberstyle=\tiny,
    string=[s]{"}{"},
    stringstyle=\color{blue},
    comment=[l]{:},
    commentstyle=\color{black},
}

\lstinputlisting[
caption={listings test1}\label{lst:test1},
captionpos=t,
style=json,
]{listings.json}

\end{document}

alt text

Verwendet man direkt eine dicktengleiche Schrift (basicstyle=\ttfamily) spart man sich die Umstände.

Öffne in Overleaf
\begin{filecontents*}{listings.json}
{
  "_erster": "erster",
  "_zweiter": "zweiter",
  "_dritter": "ABC----DE------8~~~~~.8888"
}
\end{filecontents*}

\documentclass{article}

\usepackage{listings}
\usepackage{color}

\begin{document}

\lstdefinestyle{json}{
    basicstyle=\ttfamily\scriptsize,
    breaklines=true,
    frame=lines,
    numbers=left,
    numberstyle=\tiny,
    string=[s]{"}{"},
    stringstyle=\color{blue},
    comment=[l]{:},
    commentstyle=\color{black},
}

\lstinputlisting[
caption={listings test1}\label{lst:test1},
captionpos=t,
style=json,
]{listings.json}

\end{document}

alt text

Permanenter link

beantwortet 26 Mär '17, 00:06

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 26 Mär '17, 00:08

Hallo Henri,

vielen herzlichen Dank für Deine schnelle Hilfe :D das funktioniert!

(26 Mär '17, 12:29) berni

Mit \ttfamily würde ich zusätzlich noch columns=fullflexible verwenden…

(27 Mär '17, 12:14) cgnieder
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×22
×1
×1
×1

gestellte Frage: 25 Mär '17, 17:45

Frage wurde gesehen: 5,863 Mal

zuletzt geändert: 27 Mär '17, 12:14