如何获得智能编号系统,如下所示?每当我有一张新桌子时,我都想让编号上升。 另一方面,如果我在表格中添加一行,我想在编号后面添加一个字母。 这可能吗?
我使用字段代码和序列,但我相信这是可行的方法。
我知道没有字母的编号可以通过
获得Number #{ STYLEREF 1\s}{SEQ Table \# "00"}
我也知道可以使用\ _ alphabetic命令进行字母编号。
我只是不确定如何将它们组合起来。另外,我想对表格标题进行交叉引用。
答案 0 :(得分:0)
您可以使用Word的内置编号实现此目的 - 无需使用您需要手动更新的复杂字段组合。
我将概述非常完整的方法......
现在,当您应用标题样式时,将自动应用编号。如果您不喜欢标题样式的格式,可以更改样式定义。由于您创建了编号样式,您还可以通过再次转到多级编号对话框,右键单击您创建的编号格式并选择“修改”来更改这些设置。
答案 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字段。