使用基于变量值的OpenTBS在.docx中有条件地显示文本块

时间:2014-08-28 14:58:54

标签: docx opentbs tinybutstrong

在我的项目中,我使用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文档中找不到任何此类内容。有人知道这样做的方法吗?

谢谢!

尼尔斯

1 个答案:

答案 0 :(得分:4)

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

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

<w:p>

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

[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

另一个解决方案是