Microsoft Word | 在数字字段中添加单词

Microsoft Word | 在数字字段中添加单词

我有一个数字字段:

SEQ Equation \* ARABIC \s 1 

我想通过添加来对特定方程进行子排序Ab, 和C。 例如:

(1.5.A
(1.5.b
(1.5.C
(1.6)
(1.7)

有什么诀窍吗?在 MicrosoftWord 中是这样的:

示例图像

答案1

我认为没有什么真正简单的“技巧”。作为背景,使用简单的字段编码,您可能需要 3 个不同的字段序列。\* Arabic无论如何,您应该能够省略开关,因为\* Arabic这是默认设置,但是暂时忘记开关,\s 1您将需要

一组不带字母的数字字段(示例中为 10,11,12),例如

{ SEQ Equation }

第一个字母数字的一组字段(示例中为 13a),例如

{ SEQ Equation }{ SEQ Letter \r 1 \* alphabetic }

每个后续字母数字的一组字段(在您的示例中为 14b),例如

{ SEQ Equation \c }{ SEQ Letter \* alphabetic }

问题在于,如果您重新排序任何带字母的方程式,则可能必须修改字段序列(例如,如果您交换“b”和“c”,则只需更新字段,但如果您将“b”移到“a”前面,则必须修改“a”和“b”的字段。除非您有数百个方程式,否则手动插入字母数字而不使用字段可能会更简单。

如果你的字母序列从未到达“c”,你也许可以简化这一点,或者

10
11
12
13a
13b

你用过

10
11
12
12a
12b

否则,您可能可以使用一组更复杂的字段,但您必须考虑是否值得这样做,以及/或者如果文档将由其他人维护,则需要考虑可维护性。使用以下序列,您可以使用两个字段序列,一个用于无字母数字,一个用于带字母数字,并且重新排列带字母的方程式只需要更新字段。(要将带字母的方程式修改为无字母的方程式或反之亦然,您仍然需要更改字段编码)。

对于没有字母的数字,你可以使用

{ SEQ Equation { SEQ Letter \r 0 \h } }

对于字母数字,您可以使用

{ SEQ Letter \c \"'{ SEQ Equation \c }';;'{ SEQ "Equatio{ SEQ Letter \c \#;;n}" }'" }{ SEQ Letter \* alphabetic }

为了实现这一点,全部必须{ }是在 Windows 桌面版 Word 中可以使用Ctrl-插入的特殊字段代码括号F9,并且需要在指示的位置使用直双引号和单引号。您可能能够稍微缩短长度(例如,您可以将其更改{ SEQ something }{SEQ something})。特别是,您需要

{ SEQ Letter \c \#;;n}

或者

{ SEQ Letter \c \#";;n" }

但不是

{ SEQ Letter \c \#;;n }

这将引入一个额外的空格。

那么这一切是如何运作的呢?好吧,你肯定能搞明白,但我建议你先尝试一下,因为完整的解释有很多你可能不需要知道的细节。

{ SEQ Letter \ r 0 \h }

只是确保每个字母块开头的字母序列为 0。通过使用 \h 开关隐藏结果,Word 不会在您将结果嵌套在字段中时尝试将其视为书签名称{ SEQ Equation }。但您可以使用

{ SEQ Equation }{ SEQ Letter \r 0 \h }

如果你更喜欢。

当你到达一个字母块时,你只需要

{ SEQ Letter \* alphabetic }

插入正确的字母。

您需要增加方程编号一次在块的开头。但你不能用显而易见的方式来做到这一点,就像

{ IF { SEQ Letter \c } = 0 "{ SEQ Equation }" "{ SEQ Equation \c }" }

因为当 Letter > 0 时,Word 会正确插入{ SEQ Equation \c }结果,但仍会评估{ SEQ Equation }结果并增加 Equation。这实际上很难避免,因为您可能尝试避免这种情况的另一种方法是执行类似

{ SEQ Equation { IF { SEQ Letter \c } > 0 "\c" "" } }

但这也行不通。尝试通过使用操纵当前值来实现这一点\r至少也很困难,而且我怀疑它比我描述的方法更复杂。

因此,您可以做的是使用某种方法,使 Word 增加第一个字母方程式中的方程式序列,但"Equatio"在所有后续字母方程式中增加另一个序列(在本例中)。

一步一步,这里使用的数字模式

{ SEQ number \#"'A';'B';'C'"}

A如果 number > 0、Bnumber < 0 或Cnumber = 0 则有结果

需要使用单引号来确保其中的文本被视为文字,而不是模式。例如,number = 15,

{ SEQ number \#"'0';'B';'C'"}

会有结果0,但是

{ SEQ number \#"0;'B';'C'"}

零具有特殊含义,结果将是15。但是,如果您使用的字符没有特殊含义,则不需要引号(有时也可以省略周围的“”标记)。

所以

{ SEQ Letter \c \#;;n}

如果 Letter > 0,则结​​果为空;n如果 Letter = 0,则结​​果为 ' '。

在第一个字母方程的开头,字母是 0,所以

{ SEQ "Equatio{ SEQ Letter \c \#;;n}" }

将被评估为

{ SEQ "Equation" }

IE

{ SEQ Equation }

但在后续字母方程中,字母 > 0,因此其计算方式为

{ SEQ Equatio }

第一个字段的完整编码是这样的。

{ SEQ Letter \c \"'{ SEQ Equation \c }';;'{ SEQ "Equatio{ SEQ Letter \c \#;;n}" }'" }

即如果 Letter 为 0,我们得到的结果为

{ SEQ "Equatio{ SEQ Letter \c \#;;n}" }

{ SEQ Equation }

(并且{ SEQ Equation \c }该字段中的不会增加方程)。

但在随后的字母方程中,Letter > 0我们得到结果

{ SEQ Equation \c }

{ SEQ Equatio }增量Equatio,不是Equation

唷!

有可能可以通过各种方式简化这一点,但这是我在 Word 中能够做到的最好的事情。也许其他一些 WP 已内置此功能,或者在 TeX 或其他方面很容易实现。

相关内容