答案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、B
number < 0 或C
number = 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 或其他方面很容易实现。