在 OpenTBS 中:如何在 MS Word 模板中使用 "new paragraph" 回车符 returns 而不是 "new line"

In OpenTBS: How to use "new paragraph" carriage returns instead of "new line" in MS Word Templates

我有一个 PHP 变量保存纯文本,我需要使用 OpenTBS 将其插入到 MS Word 模板中。

我的 Word 占位符是:

[onshow.introduction]

问题是我使用了对齐格式,所以我需要实际的“新段落”,即 Word 中的“回车 returns”(回车)。相反,我所有的换行符都被翻译成“换行符”(shift-Enter),弄乱了我的格式。

我尝试插入
、\r、\n、\n\r、\r\n、PHP_EOL - 所有这些都只是创建换行符而不是新段落字符在 MS Word 中。

有什么方法可以从 OpenTBS 获取 Word 中的“新段落”字符吗?

在 Ms Word 中,新段落是一个复杂的 XML 实体。类似于:

<w:p><w:r><w:t>My paragraph</w:t></w:r></w:p>

它可以有额外的属性和额外的 sub-entities 可以出现在几个地方。

所以用 </w:t></w:r><w:r><w:t> 替换你的 line-breaks 会非常敏感和危险。

最佳且稳健的解决方案是将您的文本拆分成几个部分,然后将其合并到一个以 Ms Word 段落为界的块中。

示例:

PHP:

// uniformize line breaks
$introduction = str_replace("\n", "\r", $introduction);
$introduction = str_replace("\r\r", "\r", $introduction);

// explode in several parts
$introduction = explode("\r", $introduction);

// merge on a block
$TBS->MergeBlock('intro', $introduction);

DOCX:

[intro.val;block=tbs:p]