Python Code gesplittet einfügen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Python Code gesplittet einfügen

Re: Python Code gesplittet einfügen

von Grummelgast » Fr 30. Jul 2021, 15:13

Sowohl firstnumber=auto als auch firstnumber=last ist natürlich Unfug. Lies die Option in der Anleitung nach und verwende dann diejenige, die besser passt. Lies auch unbedingt die Erklärung zu name. Und diese Optionen gibt man normalerweise nicht global, sondern beim jeweiligen Listing an.

Wenn du das sorgfältig nachgelesen hast, dann sollte auch klar sein, wie man bei einem neuen Listing wieder (weitgehend automatisch) bei 1 beginnt. Man kann sogar mehrere verschiedene Listings immer wieder unterbrechen, zwischen den Listings hin und her wechseln und trotzdem die Fortsetzung korrekt bekommen – wenn man die genannten Optionen in der listings-Anleitung studiert hat.

BTW: Gewöhnte dir bitte an, Code korrekt zu markieren. Er wird sonst eventuell durch die Formatierung verfälscht. Und bei Fragen natürlich immer ein Minimalbeispiel angeben, damit wir direkt daran arbeiten können.

Re: Python Code gesplittet einfügen

von lizagliza » Fr 30. Jul 2021, 13:53

Danke, ich habe aufgeräumt ;)

firstnumber=auto, firstnumber=last und name=…

Das sind optionen für \lstset, oder? Ist das so korrekt?

\lstset{language=Python,%
	%basicstyle=\color{red},
	breaklines=true,%
	morekeywords={matlab2tikz},
	keywordstyle=\color{blue},%
	morekeywords=[2]{1}, keywordstyle=[2]{\color{black}},
	identifierstyle=\color{black},%
	stringstyle=\color{mylilas},
	commentstyle=\color{mygreen},%
	showstringspaces=false,
	numbers=left,%
	numberstyle={\tiny \color{black}},
	numbersep=9pt, 
	firstnumber=auto, 
firstnumber=last
	emph=[1]{for,end,break},emphstyle=[1]\color{red}, %some words to emphasise
	%emph=[2]{word1,word2}, emphstyle=[2]{style},    
}

Das klappt super. Danke

Aber ich habe noch einen zweiten Code. Der soll natürlich bei seiner ersten Zeile auch bei 1 beginnen. Wie kann ich das ändern?

Hat sich erledigt. Danke :)
Habe bei dem neuen Code einfach die Option gesetzt und damit funkitoniert es :)

\begin{lstlisting}[firstnumber=1]

Re: Python Code gesplittet einfügen

von Grummelgast » Do 29. Jul 2021, 11:39

Dein Beispiel ist wegen der Leerzeile (= Absatz) in \lstset leider nicht lauffähig. Bitte achte immer auf die Lauffähigkeit und überprüfe diese auch nach dem Absenden noch einmal mit dem LaTeX-Ausgabe-Knopf. Minimaler dürfte es nach lesen der Minimalbeispiel-Anleitung sicher auch noch zu erreichen sein.

Ein zusätzliches

	rulecolor=\color{black},

solle bezüglich der Framefarbe helfen. Noch schöner gehen Rahmen aber mit dem bereits erwähnten tcolorbox.

Bezüglich der Nummerierung seit auf Option firstnumber=auto, firstnumber=last und name=… verwiesen.

BTW:

  • 11pt, a4paper ist Voreinstellung bei scrreprt.

  • \usepackage[utf8]{inputenc} braucht man seit LaTeX 2018-04-01 nicht mehr.

  • capt-of braucht man mit einer KOMA-Script-Klasse nicht und sollte es auch nicht laden. Auch das Paket caption (verwendet von subcaption) stellt die Funktionalität bei Bedarf zur Verfügung. Damit ist capt-of quasi doppelt überflüssig.

  • Seitenstil scrheadings ist die Voreinstellung von scrlayer-scrpage. Es ist aber zu empfehlen, das Paket explizit mit Option automark oder manualmark zu laden.

  • hyperref sollte von wenigen, dokumentieren Ausnahmen abgesehen das letzte Paket sein.

Re: Python Code gesplittet einfügen

von lizagliza » Do 29. Jul 2021, 11:18

Danke erstmal :) einen Rahmen habe ich jetzt einfach mit der Optiion [frame=single].
Allerdings ist der Rahmen jetzt immer an Stellen an denen ein Kommentar (in grün) steht auch grün.

\documentclass[11pt, a4paper]{scrreprt}
\usepackage[utf8]{inputenc}
%\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath,amssymb,amstext} 
\usepackage{scrlayer-scrpage}
\usepackage{graphicx} %Bilder einbinden
\usepackage{amsthm}
\usepackage{color} 
\usepackage{array}
\usepackage{floatrow}
\usepackage{capt-of}
\pagestyle{scrheadings}
\clearpairofpagestyles
\chead{\headmark}
\cfoot[\pagemark]{\pagemark}
\usepackage{hyperref}
%für pseudocode
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{lmodern}
\usepackage[list=true, font=large, labelfont=bf, 
labelformat=brace, position=top]{subcaption} %Damit Subtabellen beschriftet sind
%Damit Subtabellen nummeriert werden:
\DeclareCaptionSubType*[arabic]{table}
\captionsetup[subtable]{labelformat=simple,labelsep=colon}
%um Matlab-code einzubinden, sogar farbig
\definecolor{mygreen}{RGB}{28,172,0} % color values Red, Green, Blue
\definecolor{mylilas}{RGB}{170,55,241}
% Paket zur besseren Implementierung von Code in den Fließtext
\usepackage{fancyvrb}
\usepackage{listings}
\lstset{language=Python,%
	%basicstyle=\color{red},
	breaklines=true,%
	morekeywords={matlab2tikz},
	keywordstyle=\color{blue},%
	morekeywords=[2]{1}, keywordstyle=[2]{\color{black}},
	identifierstyle=\color{black},%
	stringstyle=\color{mylilas},
	commentstyle=\color{mygreen},%
	showstringspaces=false,%without this there will be a symbol in the places where there is a space
	numbers=left,%
	numberstyle={\tiny \color{black}},% size of the numbers
	numbersep=9pt, % this defines how far the numbers are from the text
	emph=[1]{for,end,break},emphstyle=[1]\color{red}, %some words to emphasise
	%emph=[2]{word1,word2}, emphstyle=[2]{style},    
} \begin{document} \begin{lstlisting}[frame=single] # Def Mesh mesh = UnitCubeMesh(5, 5, 5) #mesh = UnitCubeMesh(10, 10, 10) print('dim mesh:', mesh.geometry().dim()) # Zeigt die Dimension des mesh an #Definiere Funktionenraume \end{lstlisting} erläuterung ... \begin{lstlisting}[frame=single] #Definiere Funktionenraume \end{lstlisting} \begin{lstlisting}[frame=single] # Definiere Randwerte def boundary(x, on_boundary): return on_boundary w = Function(W) bc = DirichletBC(W, w, boundary \end{lstlisting} \end{document}

was ich aber irgendwie nicht hinbekomme ist, dass wenn ich das Splitte in einzelne Blöcke um dazwischen den Code zu erläutern usw., dass dann die Zeilen weitergezählt werden statt wieder bei 1 beginnen. Geht das irgendwie automatisch? Alternativ würde mir manuell natürlich auch genügen

Vielen Dank und liebe grüße

Re: Python Code gesplittet einfügen

von Stammgast » Mi 28. Jul 2021, 16:32

Es gibt da noch mehr Pakete, und wesentlich bessere als »listings«.

  1. Basierend auf »listings«.

  2. Benötigen ›PythonPygments.

Re: Python Code gesplittet einfügen

von Grummelgast » Mi 28. Jul 2021, 15:12

listings und ggf. dessen Erweiterung mit tcolorbox

Python Code gesplittet einfügen

von lizagliza » Mi 28. Jul 2021, 13:56

Hallo,

Ich würde gerne meinen Pythoncode gesplittet einfügen. Ich hätte gerne, dass die Zeilen des Codes nummeriert sind und jeder "Codeschnipsel" mit einem Kasten umrandet ist also in der Art

"hier erkläre ich den Code

1 mein code
 2 mein code 

jetzt erkläre ich wieder was dazu

3 geht es weiter mit dem Code und der passenden Zeilennummerierung

"

Kann mir jemand dazu einen Tipp geben?
Wie ich den Code vollständig einfüge weiß ich, allerdings hätte ich auch dort gerne einen Kasten/Rahmen drum.

Vielen Dank und liebe Grüße
lizagliza


Nach oben