首先我要澄清一下,我是 LaTeX 初学者,所以我会详细说明,因为我不知道问题的根源。我使用的是 TeXstudio 2.12.6
我将提供背景信息:我一直在研究如何在数学模式中直接书写希腊字符,并在编译时识别它们。也就是说,我想要
α = xy^2 + β
被公认为
\alpha = xy^2 + \beta
我终于明白了如何实现它:使用希腊语键盘在数学模式中输入希腊字母,仅使用那里指示的序言(它在接受的答案中):
\documentclass[a4paper,10pt]{report}
\usepackage[utf8]{inputenc}
\usepackage[greek,spanish]{babel}
\usepackage{amsmath,amssymb,dsfont,alphabeta}
\usepackage[LGR,T1]{fontenc}
虽然答案中给出的原始答案和我在这里给出的答案有一些差异:
- babel 包标志最初是
[english, greek]
,而我的这里是[greek,spanish]
:标志中的顺序很重要,这样西班牙语就是我代码中的主要语言(正如我希望的那样)。 - 我
{amsmath,amssymb,dsfont}
也在用。 - 我使用报告而不是文章。
现在我的问题:最近我发现在数学模式下使用命令时不需要使用括号来封装参数。换句话说,TeXstudio\binom a b
确实完全识别为\binom{a}{b}
。但是,当我在没有括号的参数中使用希腊字母时,它不会编译并弹出这两个错误:
包 inputenc 错误:Unicode 字符 �\endgroup (U+3CE)(inputenc) 未设置为用于 LaTeX。\binom α
包 inputenc 错误:在输入编码“utf8”中,使用的键盘字符未定义(inputenc)。 \binom α
\binom α b
在数学模式下书写时。
overbrace β
另一个例子:在书写时而不是overbrace{β}
在数学模式下也会发生类似的事情。(在这两种情况下,overbrace{β}
都会binom{α}{b}
起作用)。
请帮忙。提前谢谢您。
答案1
你根本无法得到你想要的东西。你必须考虑到它\binom
需要两个参数,如果后面没有括号,第一个参数将是下一个标记;第二个参数也是如此。
分析
当你输入时\binom α b
,TeX 实际上看到
\binom <CE><B1> b
所以它所做的和它发现的一样
\binom{<CE>}{<B1>} b
其中<CE>
和<B1>
表示具有指定十六进制代码的字符。请记住,TeX 并不真正了解 Unicode 和 UTF-8。
该字符α
在 UTF-8 中用两个字节表示(我上面展示的就是这两个字节)。inputenc
包将其转换<CE>
为活动字符,其操作是检查下一个字节并采取适当的操作,在本例中,紧接着将<B1>
两个字节更改为\alpha
包alphabeta
重新定义的字节,以给出
\TextOrMath{\textalpha}{\mathalpha}
因此,如果出现在数学模式中,您最终会发现与在传统设置中α
键入的内容相同。\alpha
但重要的事实是<CE>
必须后面跟着另一个字节,以便它们的组合指向正确的定义。如果您有 ,则不会发生这种情况\binom α b
。
结论
总是在这种情况下,请输入括号。输入
\binom n k
更清晰的 ,而不是 ,则不会有任何好处\binom{n}{k}
。
如果你尝试$X_\notin$
,你也会学会打字$X_{1}
。一个好的编辑器会帮你做到这一点。
附录:整个故事
其实整个事情要复杂一些,即使上面的解释也基本正确。如果你想知道整个故事,就在这里。
经过扩展\binom
,输入\binom α b
变为
\genfrac (){0pt}{}<CE><B1> b
并且\genfrac
是一个四参数宏,它依次调用\@genfrac
,输入变为
\@genfrac\relax\@@abovewithdelims{(){0pt}} <CE><B1> b
最后,由于\@genfrac
是一个有五个参数的宏,因此
{\relax{\begingroup <CE>\endgroup\@@abovewithdelims()0pt <B1>}} b
正如您所看到的,<CE>
后面跟着\endgroup
,实际上,错误消息是
! Package inputenc Error: Unicode char ?\endgroup (U+3CE)
(inputenc) not set up for use with LaTeX.
(问号代表前缀<CE>
)。在遇到其他错误后,你会得到与 相同的结果\binom{}{b}
,但b
出现在正确位置的原因只是 TeX 尝试对缺失部分\endgroup
(在扩展 的过程中已被吸收和丢弃<CE>
)进行错误恢复。