2013-05-23 16 views
11

Mój problem polega na tym, że chcę zbudować generator listów, który najpierw tworzy plik lateksowy z danych wprowadzanych przez użytkownika, a następnie kompiluje to przez lateks do pliku PDF.Jak wykonać szablon Golanga, gdy "{" lub "}" znajdują się w statycznej części szablonu?

Szablon zawiera wiele linii tak:

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

latex część jest \setkomavar{signature}{} i template część z zamachem jest {{.Name}}.

Kiedy próbuję załadować szablon, zgłasza ten błąd:

paniki: Szablon: letter.tmpl: 72: nieoczekiwany „}” w poleceniu

jest jakiś podstęp, aby pomóc obsługę parsera taka sytuacja?

Dzięki z góry,

Tino

Odpowiedz

13

Zastosowanie Template.Delims ustawić ograniczniki do pewnego braku sprzecznych tekstu. {{ i }} to tylko wartości domyślne, ta metoda pozwala wybrać inne ograniczniki.

metoda alternatywna: W ty szablon, którego chcesz lateksowej { i } można wstawić jakiś bezpieczny tekst zamiast, jak powiedzieć #( i )# a następnie zrobić „globalne” wtórnik na wyjściu z szablonu. Jednak ustawienie ograniczników jest o wiele łatwiejsze IMO i prawdopodobnie bardziej wydajne, jeśli to ma znaczenie.

+0

Dzięki, że to, co potrzebne, aby wiedzieć! – user2326871

0

byłem wcześniej robi to poprzez stworzenie funkcji szablonu:

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

której zarejestrowany jako arg użyciu template.Funcs. Wtedy w moim szablonu miałem:

\textbf{{.Name | arg}} 

myślę @ ZZZZ odpowiedź na powyższe jest lepiej jak ten rozpada się, gdy trzeba gnieździe, ale myślałem, że zostawię to tutaj alternatywnego podejścia.

0

moje rozwiązanie adhok było:

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

Lepszym rozwiązaniem jest rzeczywiście po prostu użyć wbudowanego operatorów białych, jak:

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

The - na początku i na końcu usunie spacje między ten token i kolejny token inny niż szablon.

nadzieję, że pomoże znaleźć the docs Więcej szczegółów