问题 当“{”或“}”位于模板的静态部分时,如何执行Golang模板?


我的问题是,我想构建一个字母生成器,它首先从用户输入构建一个latex文件,然后通过latex将其编译为PDF。

该模板包含多行,如下所示:

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

latex 部分是 \setkomavar{signature}{},和 template 来自的一部分是 {{.Name}}

当我尝试加载模板时,它会抛出此错误:

恐慌:模板:letter.tmpl:72:命令中出现意外的“}”

有没有一个技巧可以帮助解析器处理这种情况?

提前致谢,

蒂诺


6921
2018-05-23 07:03


起源



答案:


使用 Template.Delims 将分隔符设置为一些非冲突的文本。 {{ 和 }} 只是默认值,此方法允许选择其他分隔符。

替代方法:在你的模板中,你想要乳胶的地方 { 和 },你可以插入一些安全的文字,比如说 #( 和 )# 然后对其进行“全局”替换 产量 从模板。然而,设置分隔符更容易IMO,如果重要的话,可能更有效。


14
2018-05-23 07:13



谢谢,我需要知道的! - user2326871


答案:


使用 Template.Delims 将分隔符设置为一些非冲突的文本。 {{ 和 }} 只是默认值,此方法允许选择其他分隔符。

替代方法:在你的模板中,你想要乳胶的地方 { 和 },你可以插入一些安全的文字,比如说 #( 和 )# 然后对其进行“全局”替换 产量 从模板。然而,设置分隔符更容易IMO,如果重要的话,可能更有效。


14
2018-05-23 07:13



谢谢,我需要知道的! - user2326871


我之前通过创建模板函数来做到这一点:

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

我注册为 arg 运用 template.Funcs。然后在我的模板中我有:

\textbf{{.Name | arg}}

我认为@ zzzz上面的答案更好,因为当你需要筑巢时,它会分崩离析,但我想我会把它留在这里寻找替代方法。


0
2017-10-15 15:05





我的adhok解决方案是:

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

0
2017-09-19 07:01





更好的解决方案实际上是使用内置的空白运算符,例如:

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

- 在开头和结尾将删除该令牌与下一个非模板令牌之间的空格。

希望有所帮助,请参阅 文档 了解更多细节


0
2018-02-23 00:13