Seite 1 von 1
jinja2 tex escaping
Verfasst: Dienstag 11. Dezember 2012, 14:30
von jbs
Hi,
ich erstelle mittels eines Jinja2-Templates ein Tex-File. Die Daten, aus einer csv-Datei stammend, möchte ich Tex-konform escapen. Wie kann ich Jinja2 dazu bringen, meine eigene escaping Funktion, statt des HTML-escape, zu benutzen?
Und gibt es eine Sammlung von Ersetzungen für Latex in Python? Ich habe ein
Flask-Snippet gefunden, welches jedoch nicht alle Ersetzungen enthält, die ich haben möchte ( "String" -> ``String'').
Edit: Für letzteres habe ich einen Regex gefunden:
Re: jinja2 tex escaping
Verfasst: Dienstag 11. Dezember 2012, 14:51
von Whitie
Hallo JBS,
für die Ersetzungen kannst du im Quellcode von Sphinx nachschauen:
hier. Die Datei kannst du dann auch benutzen.
In Jinja ist es einfach
eigene Filter zu schreiben. Die fertige Funktion fügst du einfach in dein Environment ein, z. B.:
Code: Alles auswählen
def texescape(value):
...
environment.filters['te'] = texescape
Aufruf dann im Template:
Gruß
Whitie
Re: jinja2 tex escaping
Verfasst: Dienstag 11. Dezember 2012, 15:05
von lunar
@jbs Unicode vollständig und korrekt in entsprechende LaTeX-Symbole zu übersetzen, ist so einfach nicht möglich. Selbst die umfangreiche Liste, die Whitie gezeigt hat, ist nicht vollständig, allerdings natürlich eine gute Basis, die die meisten westlichen Sprachen abdeckt.
Nutze XeLaTeX und verwende Unicode in Deinen Daten, um Ersetzungen weitestgehend zu vermeiden. Falls das nicht möglich ist, dann untersuche erst einmal Deine Daten, um festzustellen, was Du überhaupt ersetzen musst, jenseits der Standard-Ersetzungen wie "_" -> "\_". Schließlich ist es nicht unbedingt selbstverständlich, dass Anführungszeichen zu "`'" umgewandelt werden, denn diese Art der Umwandlung hängt ja von der Sprache des Dokuments ab. Speziell Anführungszeichen implementierst Du besser mithilfe des "csquotes"-Pakets.
Re: jinja2 tex escaping
Verfasst: Dienstag 11. Dezember 2012, 17:42
von jbs
So umfangreich muss die Ersetzung nicht sein; Ersetzung von Unicode-Zeichen muss nicht stattfinden.
Ich habe einen eigenen Filter erstellt und ihm im Template verwendet.
Re: jinja2 tex escaping
Verfasst: Mittwoch 12. Dezember 2012, 13:04
von Leonidas
jbs hat geschrieben:ich erstelle mittels eines Jinja2-Templates ein Tex-File. Die Daten, aus einer csv-Datei stammend, möchte ich Tex-konform escapen. Wie kann ich Jinja2 dazu bringen, meine eigene escaping Funktion, statt des HTML-escape, zu benutzen?
Das geht nicht. Ich habe dazu mal en
Fork gemacht, aber da ist nicht mehr viel passiert und die Motivation war irgendwann weg.