经查找,在word 2010中,要想输入各种UNICODE字符,唯一办法就是使用“符号表”,而这种方式非常浪费时间,因为选择仅限于字体部分,而不是基于整个UNICODE图的细分形态或图形特征。
我只是想知道是否可以将所有的UNICODE字符(不包括汉字或类似的东西)细分为几个部分,在输入法意义上(仅基于键盘而不使用任何字符表),就像ᾧ可以细分为῀+῾+ω+ι这四个部分,并且我想使用一些快捷方式,如\slideOV + \roughOV + \omega + \iotaUD,或\~ + \' + \omega + \iotaUD,其中“OV”表示在上方,“UD”表示在下方?
MS word 2010 已经实现了这个步骤,但不太完整,而且自动更正功能一堆都不能编辑。我不知道 Unicode 的 Latex 输入法,但我认为命令真的太长了,记不住也用不上。
附言:我真的希望有一种输入法能够包含所有基于拉丁语的 UNICODE 字符及其变体,而无需任何字符表的设置,否则代码数字的数量难以想象(记住 \uNNNNs 的时间和忘记它们的可能性使这种输入法过于原始,并且 UNICODE 的名称太长(应该缩短到缩写级别),即使它确实有效……)
例如,这里是一个关于 UNICODE 中所有“a”形字符的维基百科。
答案1
我将其作为答案发布,尽管这完全是对您问题中 MS Word 2010 部分的评论。它太长了,无法容纳评论。我还刚刚添加了一些关于另一种方法的注释(在帖子末尾)。
我将尝试使用 VBA 来创建/修改您的快捷方式,首先使用可能的字符的子集(例如,可能是希腊字母和相关的变音符号)。
您所期望的(使用您的符号)是让单个自动更正文本 \~\'\omega\iotaUD 插入单个 U+1FA7 字符,等等。
基本 VBA 很简单 -
Autocorrect.Entries.Add Name:="\~\'\omega\iotaUD", Value:=&H1FA7
(您需要做更多工作来处理您想要替换定义的情况)。我想我会选择先放字符,再放变音符号,例如 \omega\~\'\iotaUD,但您需要定义一组可以使用的约定。
使用 VBA 循环和来自 Unicode 表的一些信息,可以很容易地为每种可能的组合创建自动更正,例如
"greek letter (both cases)"
"greek letter (both cases)" + \~
"greek letter (both cases)" + \'
"greek letter (both cases)" + \iotaUD
"greek letter (both cases)" + \~ + \'
"greek letter (both cases)" + \~ + \iotaUD
"greek letter (both cases)" + \' + \iotaUD
"greek letter (both cases)" + \~ + \' + \iotaUD
或者你可以将其缩小到仅涵盖这些重音适用的字母。
但这立即引发了许多问题/观点,包括
- Word 可以定义的自动更正数量是否有限制?
- Word 允许定义的自动更正数量是否有实际限制?(例如,当您有 1000 或 10000 个自动更正时,一切都会变慢)
- 字符 + 变音符号的组合数量可能非常庞大。您真正需要的是哪一个?
或许有一种办法可以解决该问题并减少其数量:
- 您是否只希望对 Unicode 表中存在复合字符的字符进行自动更正(问题较小),或者
- 您是否希望自动更正功能在存在复合字符的地方插入复合字符,并在不存在复合字符的地方插入相关的分解字符集?(潜在的巨大问题)
不要以为从上面所述就可以轻松创建合适的 VBA。任何编写此类代码的人都必须决定哪些组合可以使用 Unicode 表中存在的模式来设置,哪些组合必须使用“强力”枚举来完成。这就是为什么我要从尝试定义问题的一个子集开始。
另一种方法是定义“自动更正”字符串,但实际上不是自动更正。这个想法是输入自动更正,然后按下一个键,该键将运行一个宏,该宏将解析您输入的文本并确定您想要使用的字符。只要小心一点,您就可以输入与多个字符相对应的字符串,这样您只需按一次特殊键,而不是为每个“完整”字符按一次。您仍然需要考虑我上面列出的一些要点/问题。
答案2
Unicode 定义了字符代码:一组字符、它们的编码表示(数字和 Unicode 名称)和其他属性。它不定义输入方法。Unicode 本身不定义任何输入任何内容的方式。
Word 中的“符号表”不允许您输入任何字符 - 仅允许您输入当前所选字体中具有字形的字符。不过,Word 中有一个通用方法:Alt X 方法:输入“u+”,然后输入字符的 Unicode 编号,然后输入Alt X,字符串就会神奇地变成该字符。如果前一个字符不是数字、字母 a-f 或 x,则可以省略“u+”部分。
类似于你所描述的细分或分解在 Unicode 中是可能的,但 Unicode 标准仅在字符代码级别对其进行描述。它被称为正则分解,这意味着例如“ᾧ”U+1FA7 希腊小写字母 OMEGA 带有 DASIA 和 PERISPOMENI 以及 YPOGEGRAMMENI 可以分解为一个简单的 omega,后跟三个组合标记字符:U+03C9 U+0314 U+0342 U+0345。请注意,在 Unicode 中,组合标记出现后基本字符。(这与欧洲常见的输入法,其中死键通常在基本字符之前按下。)
这意味着,在某种意义上,您可以通过按该顺序输入四个字符来生成该字符,可能使用您为它们定义的宏或快捷方式或键分配。但结果仍然不会与“ᾧ”相同。它可能看起来相同,并且根据 Unicode 原则,它应该看起来相同,但它仍然与编码为 ine 字符 U+1FA7 的形式不同。实际上,它可能看起来不同,可能令人不安的不同。
在我对 Word 2007 的测试中,输入 U+03C9 U+0314 U+0342 U+0345 会产生与 U+1FA7 相同的视觉效果。这是个好消息。旧版本的 Word 在处理此类问题时遇到了严重困难。但它仍然是四个字符(四个代码点)。文字处理器可以将这样的序列转换为相应的规范等效字符,但事实并非如此。当您以编程方式处理数据或将其转换为其他格式(例如,转换为发布程序格式)时,这很重要。并且只有当使用的字体具有这些组合标记时,外观才是正常的。
创建一个键盘布局(键盘驱动程序)是可能的,而且并不特别困难,例如,使常见的美国键盘适用于多音希腊语,这样字母键可以自然地产生希腊字母(A 产生 α 等),尽管您需要对 ω 等字母进行一些特殊的约定,并且一些标点键会产生组合变音符号。主要问题是您将以分解格式生成字母(如 U+03C9 U+0314 U+0342 U+0345)。但这种格式可能是可以接受的,或者您可以通过编程将其转换(规范化)为使用预组合字符的格式(如 U+1FA7)。