Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Probleme mit Rahmen bei zweispaltiger Java-Einbindung

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.05.2013
    Beiträge
    2

    Probleme mit Rahmen bei zweispaltiger Java-Einbindung

    Hallo zusammen,

    schon mal vorne weg, vielen Dank für eure Hilfe.

    Ich will in mein Dokument zwei kleine Java Programme zum direkten Vergleich nebeneinander einbinden. Zum Erstellen des Java-Codes verwende ich lstlisting und für die zwei Spalten arbeite ich mit multicols. An sich funktioniert das ganz gut, allerdings habe ich das Problem, dass die Zeilennummerierung des rechten Codes im Rahmen des linken Codes hängt. Leider habe ich keine Idee, wie ich das ändern könnte.

    Hier ein Beispiel:

    Code:
    \documentclass{scrartcl}
    \usepackage[ngerman]{babel}
    \usepackage{multicol}
    \usepackage{listings}
    \usepackage{pst-pdf}
    \usepackage{color}
    
    
    \begin{document}
    
    \lstset{language=Java, %Setzt die Sprache
       basicstyle=\scriptsize, %Setzt den Standardstil und Schriftgröße
       keywordstyle=\color{blue!80!black!100}, %Setzt den Stil für Schlüsselwörter
       identifierstyle=, 				% Identifier bekommen keine gesonderte formatierung
       commentstyle=\color{green!50!black!100},% Stil für Kommentare
       stringstyle=\ttfamily,% Stil für Strings (gekennzeichnet mit "String")
       breaklines=true,% Zeilen werden umgebrochen
       numbers=left,% Zeilennummern links
      % numberstyle=\small,% Stil für die Seitennummern oder auch \tiny
       frame=single,% Rahmen
       backgroundcolor=\color{blue!5}, % Hintergrundfarbe
       showstringspaces=false, 
       literate={Ö}{{\"O}}1 {Ä}{{\"A}}1 {Ü}{{\"U}}1 {ß}{{\ss}}2 {ü}{{\"u}}1 {ä}{{\"a}}1 {ö}{{\"o}}1 {µ}{\textmu}1,
       tabsize=4
    } 
    
    \begin{multicols}{2}
    
    \begin{lstlisting}[caption={Methode \textit{run()}}, captionpos=t]
    public void run() {
    	addElements();
    	defineActionListener();
    	setGetSize();
    	setVisible(true);
    }
    \end{lstlisting}
    
    \columnbreak
    
    \lstset{language=Java}
    \begin{lstlisting}[caption={Klasse \texttt{Main}}, captionpos=t]
    public class Main {
    	public static void main(String[] args){
    		Initialisation start = new Initialisation();
    		start.run();
    		start.setLocation(50, 50);
    	}
    }
    \end{lstlisting}
    
    \end{multicols}
    
    \end{document}

    Vielen Dank,
    sg

  2. #2
    Registrierter Benutzer
    Registriert seit
    30.10.2010
    Beiträge
    36
    Der Abstand wischen den Spalten heißt \columnsep und kann daher mit:
    Code:
    \setlength{\columnsep}{}
    verändert werden.
    Zum Beispiel:
    Code:
    \documentclass{scrartcl}
    \usepackage[ngerman]{babel}
    \usepackage{multicol}
    \usepackage{listings}
    \usepackage{pst-pdf}
    \usepackage{color}
    
    
    \begin{document}
    
    \lstset{language=Java, %Setzt die Sprache
       basicstyle=\scriptsize, %Setzt den Standardstil und Schriftgröße
       keywordstyle=\color{blue!80!black!100}, %Setzt den Stil für Schlüsselwörter
       identifierstyle=, 				% Identifier bekommen keine gesonderte formatierung
       commentstyle=\color{green!50!black!100},% Stil für Kommentare
       stringstyle=\ttfamily,% Stil für Strings (gekennzeichnet mit "String")
       breaklines=true,% Zeilen werden umgebrochen
       numbers=left,% Zeilennummern links
      % numberstyle=\small,% Stil für die Seitennummern oder auch \tiny
       frame=single,% Rahmen
       backgroundcolor=\color{blue!5}, % Hintergrundfarbe
       showstringspaces=false, 
       literate={Ö}{{\"O}}1 {Ä}{{\"A}}1 {Ü}{{\"U}}1 {ß}{{\ss}}2 {ü}{{\"u}}1 {ä}{{\"a}}1 {ö}{{\"o}}1 {µ}{\textmu}1,
       tabsize=4
    } 
    \setlength{\columnsep}{2em}
    \begin{multicols}{2}
    
    \begin{lstlisting}[caption={Methode \textit{run()}}, captionpos=t]
    public void run() {
    	addElements();
    	defineActionListener();
    	setGetSize();
    	setVisible(true);
    }
    \end{lstlisting}
    
    \columnbreak
    
    \lstset{language=Java}
    \begin{lstlisting}[caption={Klasse \texttt{Main}}, captionpos=t]
    public class Main {
    	public static void main(String[] args){
    		Initialisation start = new Initialisation();
    		start.run();
    		start.setLocation(50, 50);
    	}
    }
    \end{lstlisting}
    
    \end{multicols}
    
    \end{document}

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.05.2013
    Beiträge
    2
    vielen Dank für deine schnelle und gute Antwort

  4. #4
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.327
    Bei der Verwendung von multicols für diesen Zweck kann es übrigens zu Problemen kommen, wenn das erste Listing nicht mehr komplett auf die Seite passt:
    Code:
    \documentclass{scrartcl}
    \usepackage[ngerman]{babel}
    \usepackage{multicol}
    \usepackage{listings}
    %\usepackage{pst-pdf}
    \usepackage{xcolor}% Damit kann man sich pst-pdf für die Farbeinstellung sparen.
    \usepackage{lipsum}
    
    \begin{document}
    
    \lstset{language=Java, %Setzt die Sprache
       basicstyle=\scriptsize, %Setzt den Standardstil und Schriftgröße
       keywordstyle=\color{blue!80!black!100}, %Setzt den Stil für Schlüsselwörter
       identifierstyle=, 				% Identifier bekommen keine gesonderte formatierung
       commentstyle=\color{green!50!black!100},% Stil für Kommentare
       stringstyle=\ttfamily,% Stil für Strings (gekennzeichnet mit "String")
       breaklines=true,% Zeilen werden umgebrochen
       numbers=left,% Zeilennummern links
      % numberstyle=\small,% Stil für die Seitennummern oder auch \tiny
       frame=single,% Rahmen
       backgroundcolor=\color{blue!5}, % Hintergrundfarbe
       showstringspaces=false, 
       literate={Ö}{{\"O}}1 {Ä}{{\"A}}1 {Ü}{{\"U}}1 {ß}{{\ss}}2 {ü}{{\"u}}1 {ä}{{\"a}}1 {ö}{{\"o}}1 {µ}{\textmu}1,
       tabsize=4
    } 
    
    \lipsum[1-5]
    
    \setlength{\columnsep}{2em}
    \begin{multicols}{2}
    
    \begin{lstlisting}[caption={Methode \textit{run()}}, captionpos=t]
    public void run() {
    	addElements();
    	defineActionListener();
    	setGetSize();
    	setVisible(true);
    }
    \end{lstlisting}
    
    \columnbreak
    
    \lstset{language=Java}
    \begin{lstlisting}[caption={Klasse \texttt{Main}}, captionpos=t]
    public class Main {
    	public static void main(String[] args){
    		Initialisation start = new Initialisation();
    		start.run();
    		start.setLocation(50, 50);
    	}
    }
    \end{lstlisting}
    
    \end{multicols}
    
    \end{document}
    Durch Verwendung einer zusätzlichen minipage oder von zwei minipages an Stelle von multicol kann man in diesem Fall wenigstens den falschen Umbruch vermeiden:
    Code:
    \documentclass{scrartcl}
    \usepackage[ngerman]{babel}
    \usepackage{listings}
    \usepackage{xcolor}
    \usepackage{lipsum}
    
    \begin{document}
    
    \lstset{language=Java, %Setzt die Sprache
       basicstyle=\scriptsize, %Setzt den Standardstil und Schriftgröße
       keywordstyle=\color{blue!80!black!100}, %Setzt den Stil für Schlüsselwörter
       identifierstyle=, 				% Identifier bekommen keine gesonderte formatierung
       commentstyle=\color{green!50!black!100},% Stil für Kommentare
       stringstyle=\ttfamily,% Stil für Strings (gekennzeichnet mit "String")
       breaklines=true,% Zeilen werden umgebrochen
       numbers=left,% Zeilennummern links
      % numberstyle=\small,% Stil für die Seitennummern oder auch \tiny
       frame=single,% Rahmen
       backgroundcolor=\color{blue!5}, % Hintergrundfarbe
       showstringspaces=false, 
       literate={Ö}{{\"O}}1 {Ä}{{\"A}}1 {Ü}{{\"U}}1 {ß}{{\ss}}2 {ü}{{\"u}}1 {ä}{{\"a}}1 {ö}{{\"o}}1 {µ}{\textmu}1,
       tabsize=4
    } 
    
    \lipsum[1-5]
    
    \noindent
    \begin{minipage}[t]{.45\textwidth}% Ohne [t] für vertikale Zentrierung
    \begin{lstlisting}[caption={Methode \textit{run()}}, captionpos=t]
    public void run() {
    	addElements();
    	defineActionListener();
    	setGetSize();
    	setVisible(true);
    }
    \end{lstlisting}
    \end{minipage}\hfill
    \begin{minipage}[t]{.45\textwidth}% Ohne [t] für vertikale Zentrierung
    \lstset{language=Java}
    \begin{lstlisting}[caption={Klasse \texttt{Main}}, captionpos=t]
    public class Main {
    	public static void main(String[] args){
    		Initialisation start = new Initialisation();
    		start.run();
    		start.setLocation(50, 50);
    	}
    }
    \end{lstlisting}
    \end{minipage}
    
    \end{document}
    Einen optimalen Umbruch erhält man damit allerdings auch nicht automatisch, so dass es vielleicht ein Verbesserung darstellt, vielleicht auch nicht. Ich wollte es lediglich als mögliche Alternative erwähnen.

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •