带有交叉引用的单词中表格的数字和字母编号

时间:2015-11-13 14:43:57

标签: ms-word seq

如何获得智能编号系统,如下所示?每当我有一张新桌子时,我都想让编号上升。 另一方面,如果我在表格中添加一行,我想在编号后面添加一个字母。 这可能吗?

Picture showing the idea behind the numbering

我使用字段代码和序列,但我相信这是可行的方法。

我知道没有字母的编号可以通过

获得
Number #{ STYLEREF 1\s}{SEQ Table \# "00"}

我也知道可以使用\ _ alphabetic命令进行字母编号。

我只是不确定如何将它们组合起来。另外,我想对表格标题进行交叉引用。

2 个答案:

答案 0 :(得分:0)

您可以使用Word的内置编号实现此目的 - 无需使用您需要手动更新的复杂字段组合。

我将概述非常完整的方法......

  1. 在“主页”选项卡上:段落/多级列表/定义新列表样式。
  2. 输入样式的名称,然后从“格式”按钮中选择“编号”;点击“更多”。
  3. 选择等级1后,选择要用于链接编号的样式(例如,标题1)
  4. 在“输入数字格式”字段中,键入要在每个数字之前或之后显示的任何文本。 (根据你的图片:数字1前面的标题,框中已经有灰色阴影。)
  5. 选择级别2,选择要用于链接编号的样式(例如,标题2)
  6. 在“输入数字格式”字段前面输入数字(2,灰色阴影):数字#00
  7. 从“包括级别编号”下拉列表中,选择级别1.级别1中的数字将插入最后0和灰色阴影2之间。
  8. 如有必要,请更改对齐设置(您可能不希望在表格单元格内缩进?)
  9. 现在,当您应用标题样式时,将自动应用编号。如果您不喜欢标题样式的格式,可以更改样式定义。由于您创建了编号样式,您还可以通过再次转到多级编号对话框,右键单击您创建的编号格式并选择“修改”来更改这些设置。

答案 1 :(得分:0)

我相信以下字段代码方法会为您提供示例图像中指示的编号(表编号重新开始每个标题1段。但是,它可能只适用于“内联”表,而不是浮动表或文本框中的表格等。

这里的主要目的是确保可以为您需要的每个新“Number#”插入完全相同的字段代码,但要实现这一点,您还必须在每个表的开头和结尾放置一些代码。您还需要选择并重新执行所有字段代码两次以确保它们正确更新 - 这是Cindy Meister的答案所提到的那种劣势。

在每个表开头或之前,输入以下字段。 (如果你已经在每个表之前放置了一个表格标题,你可以稍微改变一下。)

{ SEQ tbl \s 1 \h }{ SEQ ltr \r0 \h }

这会增加表格编号,重置每个标题1段落,并将字母编号重置为0.

对于表格中所需的每个“数字#”,请使用以下字段:

Number #{ STYLEREF 1 \s }{ SEQ tbl \c #00 }{ SEQ ltr \h }{ IF { REF "chap{ STYLEREF 1 \s }tbl{ SEQ tbl \c }" } > 1 "{ SEQ ltr \c \*alphabetic }" "" }

这会插入相应的标题编号和表编号,并递增字母编号。然后它会查看包含此表中“Number#”条目数的书签。例如,如果标题1编号为4,并且这是该标题下的第三个表,则书签将被称为“chap1tbl4”。如果书签的值大于1,则会附加相应的字母。

但我们必须创建该书签和值,我们只能在该表的所有“Number#”字段之后执行。因此,在每个表格的末尾,或紧接在表格之后和任何新的标题1段落之前,您将需要以下字段代码:

{SET“chap {STYLEREF 1 \ s} tbl {SEQ tbl \ c}”{SEQ ltr \ c}}

问题在于Word会按照它们在文档中出现的顺序来评估字段代码。因此,当Word首次遇到表中的{REF}字段时,书签将没有任何值。因此,当您第一次选择所有字段并执行它们时,您可能会看到错误的答案。完成后,将创建书签。 Word将使用最近分配给书签的值,因此下次执行“Number#”字段时,它们应该正常工作。

认为使用Cindy Meister的答案中给出的一般方法来实现你想要的东西,你需要有两个单独的标题级别,一个用于没有字母的数字,另一个用于数字字母。然后,用户或某些VBA(比如说)必须为每个表决定使用哪个标题级别。但即使是这种情况(并且她可能还有其他想法),它仍然可能比基于现场的方法更简单。我怀疑只有你能够决定。

可能有一个更简单的基于字段的公式,但IME的基本问题是您无法测试SEQ或SET字段的“最终值”,只能测试它在执行时的值。例如,如果有一个\ f标志,可以让你测试SEQ字段的最终值,你可以使用

{ IF { SEQ "chap{ STYLEREF 1 \s }tbl{ SEQ tbl \c }" \f } > 1 .... }

测试每个表中“Number#”条目的数量,而不必具有那个笨拙的表末字段SET字段。