2014-08-28 2 views
1

내 프로젝트에서는 템플릿에서 Word 문서를 생성하기 위해 TinyButStrong/OpenTBS를 사용합니다. 먼저 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, 블록 = END] 있으나, 그것은 OpenTBS와 나쁜 관행 때문에 내면 XML에서 실제로 두 태그가 배치되어있어 두 개의 분리 된 <w:p> 엔티티에 있습니다. 따라서 엔티티는 두 개로 나뉘며 새로운 병합 된 컨텐츠와 일치하면 운이 좋습니다.

하나의 해결책은 ebgin/end 태그를 단락 엔터티로 보호하는 것입니다. 이 블록은 3 문단에 정의 을 :

[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 

또 다른 해결책은 여러 단락에 블록을 정의하는 것입니다

[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

관련 문제