我明白发生了什么。您的词汇条目是 haruanga babuna,它映射到 pasilanga babuna。第一个单词的首字母大写被保留了,但第二个单词没有。FLExTrans 的转换引擎无法处理这种情况,因此您需要进行合成后更改。
对于 Sipsipka 变为 Sipsip xa 的情况,由于这是由规则生成的,您可以使用 'get-case-from' 元素来包裹您输出的字面字符串。它看起来像这样:

这意味着如果传入的原始单词是大写的,xa 将以大写形式输出。同样,如果它是小写的,它将以小写形式输出。
但是,由于各种原因,章节标题中的其他单词可能会以小写形式输出。因此,您可能需要一个通用解决方案,将所有单词转换为标题大小写。
没有一行正则表达式可以做到这一点。因此,我看到两种可能的解决方案:
1) 向您的 Drafting 模块集添加一个自定义模块,运行一些 Python 代码来大写章节标题中的所有单词。
2) 为字母表中的每个字母添加一个正则表达式。在 Text Out 规则中有 26 个表达式并不那么方便,但它是有效的。
'a' 的表达式为 Search For: (^\\s.*?\b)a(\w*) Replace with: \1A\2
为了方便添加所有这些,您可以在文件 Output\fixup_synthesis_rules.xml 中的 <SearchReplaceRules> 下方添加以下 xml 行:
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)a(\w*)</SearchString>
<ReplaceString>\1A\2</ReplaceString>
</SearchReplaceRule>
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)b(\w*)</SearchString>
<ReplaceString>\1B\2</ReplaceString>
</SearchReplaceRule>
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)c(\w*)</SearchString>
<ReplaceString>\1C\2</ReplaceString>
</SearchReplaceRule>
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)d(\w*)</SearchString>
<ReplaceString>\1D\2</ReplaceString>
</SearchReplaceRule>
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)e(\w*)</SearchString>
<ReplaceString>\1E\2</ReplaceString>
</SearchReplaceRule>
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)f(\w*)</SearchString>
<ReplaceString>\1F\2</ReplaceString>
</SearchReplaceRule>
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)g(\w*)</SearchString>
<ReplaceString>\1G\2</ReplaceString>
</SearchReplaceRule>
等等。
I see what is going on. Your lexical entry is haruanga babuna which is mapped to pasilanga babuna. The capitalization of the first word gets retained but not the second. FLExTrans' transfer engine can't handle this so you will have to do a post-synthesis change.
In the case of Sipsipka going to Sipsip xa, since this gets produced by a rule you could wrap the literal string you are outputting with the 'get-case-from' element. It would look like this:

This means if the original word coming in is uppercase, the xa will come out in uppercase. Likewise if it is lowercase, it will come out in lowercase.
But, you may have other words in a section title that are coming out lowercase for various reasons. So you may want a general solution to make all the words title case.
There isn't a one-line regular expression that would do this. So I see two possible solutions:
1) Add a custom module to your Drafting set of modules that would run some Python code to capitalize all words in a section header.
2) Add a regular expression for each letter of the alphabet. This is not so nice to have 26 expressions in your Text Out rules, but it works.
The expression for 'a' would be Search For: (^\\s.*?\b)a(\w*) Replace with: \1A\2
To make it easy to add all these, you can add the following xml lines below <SearchReplaceRules> in the file Output\fixup_synthesis_rules.xml:
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)a(\w*)</SearchString>
<ReplaceString>\1A\2</ReplaceString>
</SearchReplaceRule>
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)b(\w*)</SearchString>
<ReplaceString>\1B\2</ReplaceString>
</SearchReplaceRule>
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)c(\w*)</SearchString>
<ReplaceString>\1C\2</ReplaceString>
</SearchReplaceRule>
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)d(\w*)</SearchString>
<ReplaceString>\1D\2</ReplaceString>
</SearchReplaceRule>
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)e(\w*)</SearchString>
<ReplaceString>\1E\2</ReplaceString>
</SearchReplaceRule>
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)f(\w*)</SearchString>
<ReplaceString>\1F\2</ReplaceString>
</SearchReplaceRule>
<SearchReplaceRule RegEx="yes" Inactive="no" Comment="">
<SearchString>(^\\s.*?\b)g(\w*)</SearchString>
<ReplaceString>\1G\2</ReplaceString>
</SearchReplaceRule>
etc.
机器翻译自 English