# 处理格式化文本

目标文件 格式化文本
源文件 格式化文本

在源文件中表示的格式化信息通常需要在目标文中重新创建。在OmegaT中，由所支持格式（尤其是在写入DocBook、HTML、XHTML、开放文档格式（ODF）和 Office 开放 XML（MS Office 2007及更高版本）的时候）产生的内部格式化信息以标签的形式出现。一般情况下，为匹配目的而比较不同文本的相似性时将忽略标签。在已译片段中重新创建的标签将会出现在译后文档中。

## 格式化标签

标签

标签的命名：

标记 命名

标签由一到三个字符和一个数字组成。唯一的编号允许我们将彼此相对应的标签组织在一起，不同的标签允许有相同的快捷字符，但实际上并不一样。使用的快捷字符尝试反映标签所代表的格式含义（例如 b 表示粗体，i 表示斜体）。

标签的编号：

标签 编号

标签以标签组自增长方式进行编号。在这里“标签组”是单个标签（例如 <i0> 和 </i0>）。在片段中，第一个组（成对或单个的）获得编号 0，第二个编号为 1，以此类推。下面的第一个例子中有3个标签组（一组成对的，一组单个，另一组成对的），第二个例子中只有一组（成对的）。

成对的和单个的：

标签 成对的和单个的

标签不是单个的就是成对的。单个标签指的是对周边文本没有影响的格式化信息（例如：额外的空格或者行终止）。

`<b0><Ctr+N></b0>, <br1><b2><Enter></b2><片段 2132>`

<br1>是单个标签，对周围的文本不产生任何影响。成对标签通常指对开标签和闭标签之间的文本使用格式信息的标签对。下面的 <b0> 和 </b0> 是成对的且影响文本 log.txt。请注意开标签总是出现在闭标签的前面：

<`Log file (<b0>log.txt</b0>) for tracking operations and errors.<片段 3167>`

OmegaT 在分割句子之前就进行标签创建工作。根据分割规则，标签对可能会被分成两部分并出现在两个连续的片段，而标签检验会检查到这两处的部分标签并提示这两个片段出现错误。

## 标签操作

标签 操作

对于标签的操作必须谨慎。如果它们被意外地改变，最终的文件格式也许会被破坏。基本的做法是标签序列必须保持相同的顺序。然而，在可能的情况下，如果必须严格遵循某些规则，则不必拘泥于这个基本做法。

标签的复制：

标签 复制

要复制标签组，只需将它们复制到您选择的位置。但请记住：成对的标签组中，开标签必须出现在闭标签之前。您复制的标签组所代表的格式将会应用到原标签和复制标签的两个部分。

例如：

`<b0>此格式</b0>即将被复制到此处。<片段 0001>`

复制后：

`<b0>此格式</b0>已经被<b0>复制到此处</b0>。<片段 0001>`

标签组删除：

标签 组删除

要删除标签组，仅需将它们从片段中移除。请记住：必须同时删去一个标签组的开标签和闭标签，以确保它们所进行的格式化操作被完全清除，否则译后文件可能遭破坏而无法打开。删除一个标签组的同时，您将会从已译文件中删除相关的格式。

例如：

`<b0>此格式</b0>即将被删除。<片段 0001>`

删除后：

`此格式已经被删除。<片段 0001>`

## 标签组嵌套

标签 组嵌套

对标签组的顺序进行修改也许会导致一个标签组嵌套在另一个标签组中。当封闭的组完全将另一个封闭组封装在里面时，这是可行的。换句话说，在移动成对标签时请确保开标签和闭标签同时被移动到其他标签对的内部或外部，否则译后文件可能遭破坏而无法打开。

例如：

`<b0>格式</b0><b1>一</b1>即将嵌套到格式零的内部。<片段 0001>`

嵌套后：

`<b0>格式<b1>一</b1></b0>已经嵌套到格式零的内部。<片段 0001>`

## 标签组重叠

标签 组重叠

对标签对的错误维护将会导致重叠，也肯定会导致格式破坏以及某些情况下根本无法打开已译文件。

例如：

`<b0>格式</b0><b1>一</b1>即将被弄乱。<片段 0001>`

错误维护后：

`<b0>格式<b1>一</b0> </b1>正被弄乱了。<segment 0001>`

## 标签验证选项

要定制标签的操作，可在选项>标签验证窗口中设置一些规则：

此处的行为、状态适用于所有的源文件而不只是某些类型的文件，如格式化文本。

- Printf变量——不检查、简单检查、全检查

  OmegaT可以检查源文本中的程序变量如（%s）在译文中是否存在。您可以决定是否检查、检查简单的printf变量（如%s %d等）或检查所有类型的printf变量。

- 检查简单的java MessageFormat模式

  选中该复选框能让OmegaT检查简单的java MessageFormat标签（如{0}）是否处理正确。

- 自定义标签正则表达式：

  此处输入的正则表达式会让OmegaT把它的匹配实例视为客户标签。它会检查标签的编号和顺序是否一致，就如同检查omegat标签一样。

- 应从译文中移除的碎片正则表达式

  可以输入表示希望在目标删除的内容的正则表达式。之后在目标片段中的任何匹配将显示为红色，这样就很容易发现和纠正。寻找模糊匹配时忽略该移除模式。如果被移除部分不匹配其他片段，则增加5个固定罚点，因此匹配度就不会显示高达100%

## 标签组检验

标签 组检验

验证标签功能检测发生变化的标签序列（无论是有意的还是无意的），并显示受影响的片段。通过按下 Ctrl+T 组合键可调用该功能，它将打开一个窗口，显示文件的译文中所有可能包含断裂或错误的标签的片段。通过标签检验功能可以轻松地修正标签和重新创建目标文档。按 Ctrl+T 打开的窗口显示了一个三列表格，其中列出了指向该片段、原文片段和译文片段的链接：

快捷键 标签验证——Ctrl+T

标签检验条目

标签用加粗蓝色突出显示，以便于对源内容和译后内容进行比较。点击链接可在编辑器中激活该片段。如果必要的话（在上面的情况中是丢失了 <i2></i2> 标签对），修正错误然后按 Ctrl+T 键返回标签验证窗口以修正其它错误。标签错误指的是译文中的标签序列没有完全按照源片段中的标签顺序和数量复制。某些标签操作是必要的和良性的，但有些在创建已译文档时会导致问题。

## 标签管理的几点提示

标签 提示

简化源文本

标签通常代表了原始文本中的某种格式。对源文本格式的简化很大程度上有助于减少标签的数量。如果有可能，应该尽可能考虑使用统一的字体、字体大小、颜色等，以此简化翻译工作和减少可能的标签错误。查阅标签操作部分了解可以对标签做哪些处理。记住：如果标签问题困扰着您，而格式又不是当前翻译工作最至关紧要的事情的话，删除标签将会是解决问题的最简单途径。

对标签对应特别小心

如果需要在 OmegaT 中看到标签，但是却不需要在已译文档中保留绝大多数格式的话，可以不向译文中添加任何标签。在这种情况下，要对标签对格外小心，因为删除成对标签中的一个而忘记了删除另一个的话，肯定将破坏文档格式。因为标签包含在文本自身里面，因此可以使用片段规则来创建包含更含更少标签的片段。这是一种高级功能，如果想正确使用必须具备一些经验。

OmegaT 目前还无法自动检测格式错误，因此如果犯了错误或者改变格式以更好适应您使用的目标语言时，它不会对您作任何提示。然而有时，这些错误会导致译出的文件看起来不正常，在最坏的情况中甚至可能无法打开。