2014-08-28 46 views
1

在我的項目中,我使用TinyButStrong/OpenTBS從模板生成Word文檔。首先,我在文檔中加載一個像myuser這樣的變量。使用OpenTBS基於變量值的.docx中的條件顯示文本塊

[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文檔中找不到任何這樣的東西。有人知道一種方法來做到這一點?

謝謝!

尼爾斯

回答

3

TBS有塊語法[OnShow中;塊=正在] ... [OnShow中;塊=結束]但它是一個不好的做法,與OpenTBS因爲實際上在內部XML這兩個標籤被放置在兩個分開的<w:p>實體中。所以這些實體將分成兩部分,如果它們與新的合併內容相匹配,那麼這是一個運氣。

一種解決方案是用段落實體保護ebgin/end標籤。

[onshow;block=being;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 

另一種方案是

+0

感謝您的答覆,這幫助了很多! 對於有同樣問題的人:由於整個段落被刪除,[onshow; block = begin ...]應該放在單獨的段落中。 – nielsr 2014-08-29 07:21:55