2013-05-23 5 views
11

Mein Problem ist, dass ich einen Briefgenerator erstellen möchte, der zuerst aus Benutzereingaben eine Latexdatei erstellt und diese dann über Latex in PDF kompiliert.Wie wird eine Golang-Vorlage ausgeführt, wenn sich "{" oder "}" im statischen Teil der Vorlage befinden?

Die Vorlage enthält mehrere Zeilen wie folgt aus:

\setkomavar{signature}{{{.Name}}} 

Der latex Teil ist \setkomavar{signature}{} und die template von unterwegs Teil ist {{.Name}}.

Wenn ich versuche, um die Vorlage zu laden, wirft es diesen Fehler:

Panik: Vorlage: letter.tmpl: 72: unexpected "}" im Befehl

Gibt es einen Trick, den Parser Handhabung helfen so eine Situation?

Vielen Dank im Voraus,

Tino

Antwort

13

Verwenden Template.Delims die Trennzeichen zu einigen nicht in Konflikt stehenden Text zu setzen. {{ und }} sind nur die Standardwerte. Mit dieser Methode können Sie andere Begrenzer auswählen.

Alternative Methode: In Ihrer Vorlage, wo Sie Latex { und } die wollen, können Sie stattdessen einen sicheren Text einfügen, wie #( sagen und )# und dann einen „globalen“ macht Ersatz auf der Ausgabe aus der Vorlage. Die Einstellung von Begrenzern ist jedoch viel einfacher und wahrscheinlich leistungsfähiger, wenn das wichtig ist.

+0

Dank hilft, dass das, was ich wissen musste! – user2326871

0

ich tat dies vorher durch die Template-Funktion zu erstellen:

func texArg(s interface{}) string { 
    return fmt.Sprintf("{%v}", s) 
} 

, die ich als argtemplate.Funcs mit registriert. Dann in meiner Vorlage Ich hatte:

\textbf{{.Name | arg}} 

Ich denke, @ zzzz Antwort oben ist besser als diese auseinander fällt, wenn Sie Nest brauchen es, aber ich dachte, dass ich das hier für einen alternativen Ansatz verlassen würde.

0

meine adhok Lösung war:

\barcode{{print "{" .Barcode}}} 
0

Eine bessere Lösung ist eigentlich nur die in Leerzeichen Betreiber gebaut zu verwenden, wie:

\setkomavar{signature}{ {{- .Name -}} } 

Die - am Anfang und Ende Leerzeichen entfernen wird zwischen dieses Token und das nächste Nicht-Template-Token.

Hoffnung, die, siehe the docs für weitere Einzelheiten

Verwandte Themen