Latex mit Phyton verwenden newline \n verändern?

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
Lance
User
Beiträge: 2
Registriert: Sonntag 18. November 2018, 12:54

Hallo,
ich bin neu hier im Forum und Python Anfänger und wollte mal versuchen mit Python einen Latexcode zu schreiben. Das hat soweit auch funktioniert mit file = open ("new.tex", "w")

Ich hab mir ein kleine Funktion zum Erstellen eines Komavar geschrieben.

wenn ich jetzt aber file.write ("\newkomavar") schreibe kommt logischerweise eine Leerzeile und dann "ewkomavar" raus, da ja im String " \n " vorkommt.

gibt es irgendeine Möglichkeit vielleicht das newline Kommando \n auf irgendetwas anderes zu setzen? Oder allgemein irgendeine andere Möglichkeit "\newkomavar" in die .tex Datei zu schreiben?

Ich habe noch print ("\newkomavar", file=file) versucht, kam aber leider zum gleichen Ergebnis.

Alternativ war meine Idee es umständlich in zwei Instanzen zu schreiben, also: file.write("\") und dann file.write("newkomavar") aber das funktioniert leider auch nicht, da "\" wohl kein abgeschlossener String ist?

Vielleicht kann mir ja jemand weiter helfen
Vielen Dank für eure Hilfe
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das was du suchst nennt sich "string-escapes" und ist hier beschrieben: https://docs.python.org/3/reference/lex ... s-literals

Long story short: wenn du \ in ein String-Literal bekommen willst, musst du \\ benutzen. Und natuerlich kannst du das auch in einem einzigen String tun:

print("\\newkomavar")
Lance
User
Beiträge: 2
Registriert: Sonntag 18. November 2018, 12:54

Perfekt, Vielen Dank!
Das hat funktioniert. Was das genau ist, werde ich mir dann auch mal durchlesen.
Hase
User
Beiträge: 100
Registriert: Donnerstag 1. Oktober 2009, 15:17
Wohnort: Bremer Speckgürtel

Hallo Lance,

die Frage ist ja schon beantwortet. Nur ein Hinweis vom mir: wenn es nicht nur um eine einzelnes, sehr kurze LaTeX-Dokumente geht ist es m.E. immer sinnvoll, einen Template Engine wie z.B. Jinja2 zu benutzen, statt den LaTeX-Code direkt aus Python heraus zu erzeugen. Das ist deutlich einfacher zu testen und zu warten. Es erfordert eine einmalige Anpassung in Jinja2, aber dann flutscht es.
Antworten