goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Direktlinks:
Zuletzt aktive Beiträge
Unbeantwortete Beiträge
[Erweitert]

Forenstatistik:
Beiträge: 96196
Top-Poster: Johannes_B (5038)

Wir begrüßen unseren neuesten Benutzer Newbie0815.

Links:


Mit Unterstützung von DANTE e.V.: Deutschsprachige Anwendervereinigung TeX. Danke den Mitgliedern!





Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Listings: Zeilennummerierung bei minimierten Codeblöcken

 

19gonzo04
Forum-Newbie
Forum-Newbie

Beiträge: 8
Anmeldedatum: 31.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2018, 12:18     Titel: Listings: Zeilennummerierung bei minimierten Codeblöcken
  Antworten mit Zitat      
Guten Tag,
meine Frage bezieht sich auf das Package "Listings". Ich würde gerne verschiedene Teile meines Quellcodes in meiner Bachelorarbeit preisgeben. Allerdings sind viele meiner Codeblöcke minimiert und so soll es auch bleiben. Das Problem ist, dass die Zeilennummern fortlaufen sind.
Ist es möglich, die Zeilennummern manuell zu setzten?
Beispiel:
01 int i;
02
03 minimierte_methode()[...]
15 //weiterer Code

oder

01 int i;
02
03 minimierte_methode()
04 [...]
15 //weiterer Code

Ich weiß bis jetzt nur von "firstnumber" und packe im Moment mehrere Listings zusammen und füge nur bei der letzten eine Caption bei. Das ist natürlich geschummelt und man sieht die Abstände zwischen den einzelnen Listings.

Vielen Dank im voraus.

Mit freundlichen Grüßen
19gonzo04
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2018, 12:34     Titel:
  Antworten mit Zitat      
Die Frage ist für mich unklar. Ist das Problem, dass die Zeilennummern fortlaufend angezeigt werden, obwohl sie im tatsächlichen Listing nicht fortlaufend sind oder dass Du sie fortlaufend haben willst, sie aber nicht fortlaufend angezeigt werden? Ich vermute ersteres (müsste aber nicht extra fragen, wenn Du ein InfoMinimalbeispiel eingefügt hättest, wie das hier aus gutem Grund ständig nachgefragt wird).

Abstände vor und nach Listings sind übrigens konfigurierbar.

19gonzo04
Forum-Newbie
Forum-Newbie

Beiträge: 8
Anmeldedatum: 31.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2018, 13:04     Titel:
  Antworten mit Zitat      
Ich bitte um Entschuldigung, ich habe nicht erwartet hier ein Minimalbeispiel anführen zu müssen, aber dies hole ich natürlich gerne nach:

Code • Öffne in Overleaf

\documentclass[a4paper,12pt]{scrreprt}
\usepackage[left= 2.5cm,right = 2cm, bottom = 4 cm]{geometry}
\usepackage[onehalfspacing]{setspace}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
%Schriftpakete
\usepackage[T1]{fontenc}

\usepackage{listings}
\usepackage{xcolor}
\lstloadlanguages{C,C++,csh,Java}

%Farben für schlüsselwörter
\definecolor{bluekeywords}{rgb}{0,0,1}
\definecolor{greencomments}{rgb}{0,0.5,0}
\definecolor{redstrings}{rgb}{0.64,0.08,0.08}
\definecolor{xmlcomments}{rgb}{0.5,0.5,0.5}
\definecolor{types}{rgb}{0.17,0.57,0.68}

\lstset{language=[Sharp]C,
captionpos=b,
frame=single,
framesep=\fboxsep,
framerule=\fboxrule,
numbers=left, %Nummerierung
%numberstyle=\tiny, % kleine Zeilennummern
frame=lines, % Oberhalb und unterhalb des Listings ist eine Linie
showspaces=false,
showtabs=false,
breaklines=true,
showstringspaces=false,
breakatwhitespace=true,
escapeinside={(*@}{@*)},
commentstyle=\color{greencomments},
morekeywords={partial, var, value, get, set},
keywordstyle=\color{bluekeywords},
stringstyle=\color{redstrings},
basicstyle=\ttfamily\small,
lineskip=1pt,
literate={ö}{{\"o}}1
         {ä}{{\"a}}1
         {ü}{{\"u}}1
}

\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{%
  \hspace*{-0.4pt}\colorbox{blue}{\parbox{\dimexpr\textwidth-2\fboxsep+.8pt\relax}{#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}}

\lstdefinestyle{sharpc}{language=[Sharp]C, frame=lr, rulecolor=\color{blue!80!black}}

\begin{document}

\begin{lstlisting}[language={[Sharp]C}, firstnumber=242]
private void ModBus_Tx(string aModBus_String)[...]
\end{lstlisting}
\begin{lstlisting}[language={[Sharp]C}, caption={Modbus-Protokoll Tabpage}, label=rtxtmb, firstnumber=272]
private void ModBus_Rx(string aModBus_String)[...]
\end{lstlisting}

\end{document}
 


Hoffe es ist für ein Minimalbeispiel nicht zu lang, habe schon nur die Stellen rauskopiert, die ich für die Erstellung dieses Problem brauche.


Wie Du richtig vermutet hast, ist ersteres der Fall. Im tatsächlichen Code sind minimierte Codeblöcke und das sieht dann so aus, wie im Minimalbeispiel. Würde ich dieses Beispiel in eine Liste packen, wäre die zweite Zeile mit der Zahl "243" nummeriert. Ich möchte es so, wie es jetzt aussieht, nur halt in einer Liste.
Private Nachricht senden Benutzer-Profile anzeigen

Bartman
Forum-Meister
Forum-Meister


Beiträge: 1527
Anmeldedatum: 16.07.09
Wohnort: Hessische Provinz
Version: ---
     Beitrag Verfasst am: 31.08.2018, 13:21     Titel:
  Antworten mit Zitat      
Hier werden gewöhnlich fast immer InfoMinimalbeispiel erwartet.

Du könntest \thelstnumber ändern:

Code • Öffne in Overleaf
\documentclass[fontsize=12pt]{scrreprt}
\usepackage[left= 2.5cm,right = 2cm, bottom = 4 cm]{geometry}
\usepackage[onehalfspacing]{setspace}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
%Schriftpakete
\usepackage[T1]{fontenc}

\usepackage{listings}
\usepackage{xcolor}
\lstloadlanguages{C,C++,csh,Java}

%Farben für schlüsselwörter
\definecolor{bluekeywords}{rgb}{0,0,1}
\definecolor{greencomments}{rgb}{0,0.5,0}
\definecolor{redstrings}{rgb}{0.64,0.08,0.08}
\definecolor{xmlcomments}{rgb}{0.5,0.5,0.5}
\definecolor{types}{rgb}{0.17,0.57,0.68}

\lstset{language=[Sharp]C,
captionpos=b,
frame=single,
framesep=\fboxsep,
framerule=\fboxrule,
numbers=left, %Nummerierung
%numberstyle=\tiny, % kleine Zeilennummern
frame=lines, % Oberhalb und unterhalb des Listings ist eine Linie
showspaces=false,
showtabs=false,
breaklines=true,
showstringspaces=false,
breakatwhitespace=true,
escapeinside={(*@}{@*)},
commentstyle=\color{greencomments},
morekeywords={partial, var, value, get, set},
keywordstyle=\color{bluekeywords},
stringstyle=\color{redstrings},
basicstyle=\ttfamily\small,
lineskip=1pt,
literate={ö}{{\"o}}1
         {ä}{{\"a}}1
         {ü}{{\"u}}1
}

\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{%
  \hspace*{-0.4pt}\colorbox{blue}{\parbox{\dimexpr\textwidth-2\fboxsep+.8pt\relax}{#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}}

\lstdefinestyle{sharpc}{language=[Sharp]C, frame=lr, rulecolor=\color{blue!80!black}}

\begin{document}
{%
\renewcommand*{\thelstnumber}{%
   \ifnum\value{lstnumber}=243
      \setcounter{lstnumber}{272}%
   \fi
   \arabic{lstnumber}%
}
\begin{lstlisting}[language={[Sharp]C}, caption={Modbus-Protokoll Tabpage}, label=rtxtmb, firstnumber=242]
private void ModBus_Tx(string aModBus_String)[...]
private void ModBus_Rx(string aModBus_String)[...]
\end{lstlisting}}% <- geändert
\end{document}


Wenn der englische Name "Listing" vor der gewählten Beschriftung keine Vorgabe ist, dann kann dieser ersetzt werden.

Nachtrag: In meinem Beispiel fehlte die schließende geschweifte Klammer nach dem Ende der lstlisting-Umgebung.

Zuletzt bearbeitet von Bartman am 31.08.2018, 22:56, insgesamt 3-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2018, 13:45     Titel:
  Antworten mit Zitat      
Wie gesagt, kann man die Abstände über und unter Listings ändern. Und man kann auch nur mit einer Linie arbeiten:
Code • Öffne in Overleaf
\documentclass[a4paper,12pt]{scrreprt}
\usepackage[left= 2.5cm,right = 2cm, bottom = 4 cm]{geometry}
\usepackage[onehalfspacing]{setspace}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
%Schriftpakete
\usepackage[T1]{fontenc}

\usepackage{listings}
\usepackage{xcolor}
\lstloadlanguages{C,C++,csh,Java}

%Farben für schlüsselwörter
\definecolor{bluekeywords}{rgb}{0,0,1}
\definecolor{greencomments}{rgb}{0,0.5,0}
\definecolor{redstrings}{rgb}{0.64,0.08,0.08}
\definecolor{xmlcomments}{rgb}{0.5,0.5,0.5}
\definecolor{types}{rgb}{0.17,0.57,0.68}

\lstset{language=[Sharp]C,
captionpos=b,
frame=single,
framesep=\fboxsep,
framerule=\fboxrule,
numbers=left, %Nummerierung
%numberstyle=\tiny, % kleine Zeilennummern
frame=lines, % Oberhalb und unterhalb des Listings ist eine Linie
showspaces=false,
showtabs=false,
breaklines=true,
showstringspaces=false,
breakatwhitespace=true,
escapeinside={(*@}{@*)},
commentstyle=\color{greencomments},
morekeywords={partial, var, value, get, set},
keywordstyle=\color{bluekeywords},
stringstyle=\color{redstrings},
basicstyle=\ttfamily\small,
lineskip=1pt,
literate={ö}{{\"o}}1
         {ä}{{\"a}}1
         {ü}{{\"u}}1
}

\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{%
  \hspace*{-0.4pt}\colorbox{blue}{\parbox{\dimexpr\textwidth-2\fboxsep+.8pt\relax}{#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}}

\lstdefinestyle{sharpc}{language=[Sharp]C, frame=lr, rulecolor=\color{blue!80!black}}

\begin{document}

\begin{lstlisting}[language={[Sharp]C}, firstnumber=242,frame=t,belowskip=0pt]
private void ModBus_Tx(string aModBus_String)[...]
\end{lstlisting}
%$\vdots$
\begin{lstlisting}[language={[Sharp]C}, caption={Modbus-Protokoll Tabpage}, label=rtxtmb, firstnumber=272,frame=b,aboveskip=0pt]
private void ModBus_Rx(string aModBus_String)[...]
\end{lstlisting}

\end{document}

und natürlich könntest Du so zwischen den beiden Listings auch Pünktchen einfügen. Dazu einfach das % am Anfang der \vdots-Zeile entfernen.

19gonzo04
Forum-Newbie
Forum-Newbie

Beiträge: 8
Anmeldedatum: 31.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2018, 15:10     Titel: Vielen Dank
  Antworten mit Zitat      
Vielen Dank für Eure Hilfe!
Ich habe es mit der Methode von Bartman gemacht, allerdings sahen beide Methoden optisch gleich aus. Allerdings hat Bartman es in einem Listings gepackt, was wahrscheinlich nachher für ein Quellcodeverzeichnis besser ist (Ja, ich weiß, das man die anderen künstlich herausnehmen kann).

Man kann die Funktion von Bartman beliebig erweitern, wie ich es gemacht habe:

Code • Öffne in Overleaf

\renewcommand*{\thelstnumber}{
   \ifnum\value{lstnumber
}=105
      \setcounter{lstnumber}{151}
   \fi
   \ifnum\value{lstnumber}=152
      \setcounter{lstnumber}{191}
   \fi
   \ifnum\value{lstnumber}=192
      \setcounter{lstnumber}{242}
   \fi
   \ifnum\value{lstnumber}=243
      \setcounter{lstnumber}{272}
   \fi
   \ifnum\value{lstnumber}=273
      \setcounter{lstnumber}{299}
   \fi
   \ifnum\value{lstnumber}=300
      \setcounter{lstnumber}{303}
   \fi
   \arabic{lstnumber}
}
 


Ich schließe damit den Eintrag.
Private Nachricht senden Benutzer-Profile anzeigen

Bartman
Forum-Meister
Forum-Meister


Beiträge: 1527
Anmeldedatum: 16.07.09
Wohnort: Hessische Provinz
Version: ---
     Beitrag Verfasst am: 31.08.2018, 15:36     Titel: Re: Vielen Dank
  Antworten mit Zitat      
19gonzo04 hat Folgendes geschrieben:
Allerdings hat Bartman es in einem Listings gepackt, was wahrscheinlich nachher für ein Quellcodeverzeichnis besser ist (Ja, ich weiß, das man die anderen künstlich herausnehmen kann).


Die Einträge im Quelltextverzeichnis richten sich nach den Zuweisungen an die caption-Option. Das geschieht im Beispiel des Gastes nur einmal. Teste es einfach mit dem entsprechenden Befehl des Pakets.
Private Nachricht senden Benutzer-Profile anzeigen

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


  Datenschutzerklärung | Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2019 goLaTeX.de