|
Listings: Zeilennummerierung bei minimierten Codeblöcken |
|
19gonzo04 |

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 31.08.18
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.08.2018, 12:18
Titel: Listings: Zeilennummerierung bei minimierten Codeblöcken
|
 |
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
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.08.2018, 12:34
Titel:
|
 |
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 Minimalbeispiel 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
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 31.08.18
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.08.2018, 13:04
Titel:
|
 |
|
 |
|
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.
|
|
|
Bartman |

Forum-Meister
|
 |
Beiträge: 1527
|
 |
|
 |
Anmeldedatum: 16.07.09
|
 |
|
 |
Wohnort: Hessische Provinz
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.08.2018, 13:21
Titel:
|
 |
|
 |
|
Hier werden gewöhnlich fast immer Minimalbeispiel 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
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.08.2018, 13:45
Titel:
|
 |
|
 |
|
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.
|
|
|
Bartman |

Forum-Meister
|
 |
Beiträge: 1527
|
 |
|
 |
Anmeldedatum: 16.07.09
|
 |
|
 |
Wohnort: Hessische Provinz
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.08.2018, 15:36
Titel: Re: Vielen Dank
|
 |
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.
|
|
|
|
|
Options and Permissions
|
|
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
|
|