goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Formatierung für lstlisting temporär ausschalten?

 

Felrpi
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2017, 16:53     Titel: Formatierung für lstlisting temporär ausschalten?
  Antworten mit Zitat      
Hey, da ich einige Quellcodeausschnitte in meinem Dokument habe, habe ich eine automatische Formatierung für lstlistings eingerichtet.

Dabei wird unter anderem bei einer öffnenden geschweiften Klammer ein Zeilenumbruch gemacht.
Bei Methoden und Schleifen etc. ist das auch gut, allerdings möchte ich das bei Array-Initialisierungen vermeiden.
Deshalb habe ich versucht die automatische Formatierung auszuschalten durch das 'Überschreiben' der Settings mittels \lstdefineformat, allerdings hat das keine Wirkung.

Hier ein Minimalbeispiel:
Code • Öffne in Overleaf
\documentclass{scrbook}

\usepackage[formats]{listings}
\usepackage{color}

\lstdefineformat{Java}{%
   \{=\string\newline\indent,%
   \}=[;]\newline\noindent\string,%
   \};=\newline\noindent\string\newline,%
   ;=[\ ]\string\space}

\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{frame=tb,
   language=Java,
   format=Java,
   aboveskip=3mm,
   belowskip=3mm,
   showstringspaces=false,
   columns=flexible,
   basicstyle={\small\ttfamily
},
   numbers=none,
   numberstyle=\tiny\color{gray},
   keywordstyle=\color{blue},
   commentstyle=\color{dkgreen},
   stringstyle=\color{mauve},
   breaklines=true,
   breakatwhitespace=true,
   tabsize=3
}


\begin{document}

%Hier soll automatisch formatiert werden
\begin{lstlisting}[frame=single]  
for(int i = 0; i < 10; i++){System.out.println(Math.pow(i, i))}
\end{lstlisting}

\lstdefineformat{Java}{%
   \{=,%
   \}=[;],%
   \};=,%
   ;=[\ ]}
%Hier soll die bei dem int-Array kein Zeilenumbruch stattfinden (Formatierung ganz ausschalten???)
\begin{lstlisting}[frame=single]
   int[] array = new int[]{1, 2, 3, 4, 5};
\end{lstlisting}

\end{document}


Hoffe mir kann da jemand sagen, wie man die automatische Formatierung temporär deaktivieren kann.

Danke und schöne Grüße

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2017, 17:52     Titel:
  Antworten mit Zitat      
Um den Umbruch los zu werden, musst du doch nur breaklines=false bei den Optionen von lstlisting angeben. Genauso kannst Du auch andere Einstellungen lokal ändern.

Schöner finde ich übrigens, gleich für Java eine neue Umgebung zu definieren (siehe Dokumentationlistings-Anleitung) und nur in dieser die dafür gewünschten Einstellungen vorzunehmen. Dann kann man auch gleich unterschiedliche Umgebungen für unterschiedliche Zwecke definieren.

Felrpi
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2017, 19:20     Titel:
  Antworten mit Zitat      
Hey, mit der Option habe ich es mal probiert:

Code • Öffne in Overleaf
\begin{lstlisting}[frame=single]  
for(int i = 0; i < 10; i++){System.out.println(Math.pow(i, i))}
\end{lstlisting}

\begin{lstlisting}[breaklines=false, frame=single]
   int[] array = new int[]{1, 2, 3, 4, 5};
\end{lstlisting}  


Leider ist der Umbruch immer noch da:


Die zweite Sache mit der eigenen Umgebung werde ich mir auch nochmal angucken.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2017, 08:01     Titel:
  Antworten mit Zitat      
Das Format neu zu definieren genügt nicht. Man muss es auch neu anwenden:
Code • Öffne in Overleaf
\documentclass{scrbook}

\usepackage[formats]{listings}
\usepackage{color}

\lstdefineformat{Java}{%
   \{=\string\newline\indent,%
   \}=[;]\newline\noindent\string,%
   \};=\newline\noindent\string\newline,%
   ;=[\ ]\string\space}

\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{frame=tb,
   language=Java,
   format=Java,
   aboveskip=3mm,
   belowskip=3mm,
   showstringspaces=false,
   columns=flexible,
   basicstyle={\small\ttfamily
},
   numbers=none,
   numberstyle=\tiny\color{gray},
   keywordstyle=\color{blue},
   commentstyle=\color{dkgreen},
   stringstyle=\color{mauve},
   breaklines=true,
   breakatwhitespace=true,
   tabsize=3,
}


\begin{document}

%Hier soll automatisch formatiert werden
\begin{lstlisting}[frame=single]  
for(int i = 0; i < 10; i++){System.out.println(Math.pow(i, i))}
\end{lstlisting}

\lstdefineformat{Java}{%
   \{=,%
   \}=[;],%
   \};=,%
   ;=[\ ]}
%Hier soll die bei dem int-Array kein Zeilenumbruch stattfinden (Formatierung ganz ausschalten???)
\begin{lstlisting}[frame=single,format=Java]
   int[] array = new int[]{1, 2, 3, 4, 5};
\end{lstlisting}

\end{document}

Ich würde da schlicht in der Dokumentpräambel zwei verschiedene Formate definieren. Dann kann man einfach im Dokument per format-Option zwischen den beiden umschalten.

Felrpi
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2017, 10:41     Titel:
  Antworten mit Zitat      
Danke, mit den zwei Formaten klappts nun gut Smile

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2017, 13:17     Titel:
  Antworten mit Zitat      
Demnach ist die Frage als beantwortet zu markieren.

Felrpi
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2017, 13:22     Titel:
  Antworten mit Zitat      
Das müsste dann wohl ein Moderator übernehmen, als Gast geht das leider nicht.

Danke nochmal und schönes Wochenende Wink

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2017, 14:53     Titel:
  Antworten mit Zitat      
Doch, als Gast geht das, während man einen Kommentar schreibt. Wenn Du also einen Danke-Kommentar schreibst, kannst Du auch gleich den Status anpassen.

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2017 goLaTeX.de