3

在我的项目中,我使用 TinyButStrong / OpenTBS 从模板生成 Word 文档。首先,我myuser在文档中加载一个变量。

[onload;tplvars;myuser=user]

该文档提供了所需的变量,因此我可以在将名称放置在变量上的位置添加如下标签:

Hello [myuser.firstName]!

条件值也可以正常工作:

[onshow;block=tbs:p;when [myuser.firstName]='John'] This is a paragraph just for John.

但是当我有多个要显示/隐藏的段落时,选择正确的段落(或更改模板并添加段落)并不容易。是否可以创建具有基于值显示的“开始”和“结束”的块?像这样的东西(伪代码):

Paragraph 1
[if [myuser.firstName] = 'John']
    (insert random number of paragraphs and maybe tables/other stuff here)
[end if]
Paragraph n

我在 TBS/OpenTBS 文档中找不到任何这些。有人知道这样做的方法吗?

谢谢!

尼尔斯

4

1 回答 1

4

TBS 有一个块语法 [onshow;block=being]...[onshow;block=end] 但对于 OpenTBS 来说这是一个不好的做法,因为实际上在内部 XML 中这两个标签被放置在两个分开的<w:p>实体中。因此,这些实体将一分为二,如果它们与新合并的内容相匹配,那就太幸运了。

一种解决方案是使用段落实体保护开始/结束标签。

[onshow;block=begin;enlarge=tbs:p;when ....] This paragraph will be deleted
Some text here.
Some text there.
[onshow;block=end;enlarge=tbs:p] This paragraph will be deleted

另一种解决方案是在几个段落上定义一个块:这个块在 3 个段落上定义:

[onshow;block=tbs:p+tbs:p+tbs:p;when ...] Paragraph 1 - inside the block
Paragraph 2 - inside  the block
Paragraph 3 - inside  the block
Paragraph 4 - outside the block

另一种解决方案是

于 2014-08-28T21:18:25.923 回答