![\uppercase 命令不适用于希腊字符](https://linux22.com/image/356126/%5Cuppercase%20%E5%91%BD%E4%BB%A4%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%E5%B8%8C%E8%85%8A%E5%AD%97%E7%AC%A6.png)
梅威瑟:
\documentclass[a4paper,12pt]{report}
\usepackage{geometry}
\usepackage[LGR,T1]{fontenc}
\usepackage[utf8]{inputenx}
\usepackage[english,greek]{babel}
\begin{document}
\selectlanguage{english}
\uppercase{\textgreek{τα κεφαλαία δεν δουλεύουν}}
\selectlanguage{greek}
\uppercase{τα κεφαλαία δεν δουλεύουν}
\end{document}
输出:
从中可以看出,该\uppercase
命令似乎不适用于希腊字符,或者似乎部分适用。
答案1
您应该使用\MakeUppercase
而不是\uppercase
:
\documentclass[a4paper,12pt]{report}
\usepackage{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenx}
\usepackage[english,greek]{babel}
\begin{document}
\selectlanguage{english}
\uppercase{\textgreek{τα κεφαλαία δεν δουλεύουν}}
\selectlanguage{greek}
\uppercase{τα κεφαλαία δεν δουλεύουν}
\MakeUppercase{τα κεφαλαία δεν δουλεύουν}
\end{document}
答案2
为了补充克里斯蒂安的回答,让我回忆一下\uppercase
。
当你这样做时\uppercase{<text>}
,人物(<text>
与命令相反)将转换为由加载到内存中的向量确定的大写字母。
例如,a
将变成A
,因为向量在槽中包含0x61
值0x41
;另一方面,逗号等不会改变,因为在相应的槽中向量有 0(这是告诉 TeX 不要更改字符的标记)。
现在,对于 LaTeX 来说,tau 不是一个字符,而是两个(由于 UTF-8),确切地说是槽0xCF
和0x84
(十六进制)中的字符。
以下是LaTeX启动时的对应表:
80->80 81->81 82->82 83->83 84->84 85->85 86->86 87->87
88->88 89->89 8A->8A 8B->8B 8C->8C 8D->8D 8E->8E 8F->8F
90->90 91->91 92->92 93->93 94->94 95->95 96->96 97->97
98->98 99->99 9A->9A 9B->9B 9C->9C 9D->9D 9E->D0 9F->0
A0->80 A1->81 A2->82 A3->83 A4->84 A5->85 A6->86 A7->87
A8->88 A9->89 AA->8A AB->8B AC->8C AD->8D AE->8E AF->8F
B0->90 B1->91 B2->92 B3->93 B4->94 B5->95 B6->96 B7->97
B8->98 B9->99 BA->9A BB->9B BC->9C BD->0 BE->0 BF->0
C0->C0 C1->C1 C2->C2 C3->C3 C4->C4 C5->C5 C6->C6 C7->C7
C8->C8 C9->C9 CA->CA CB->CB CC->CC CD->CD CE->CE CF->CF
D0->D0 D1->D1 D2->D2 D3->D3 D4->D4 D5->D5 D6->D6 D7->D7
D8->D8 D9->D9 DA->DA DB->DB DC->DC DD->DD DE->DE DF->DF
E0->C0 E1->C1 E2->C2 E3->C3 E4->C4 E5->C5 E6->C6 E7->C7
E8->C8 E9->C9 EA->CA EB->CB EC->CC ED->CD EE->CE EF->CF
F0->D0 F1->D1 F2->D2 F3->D3 F4->D4 F5->D5 F6->D6 F7->D7
F8->D8 F9->D9 FA->DA FB->DB FC->DC FD->DD FE->DE FF->DF
(这里只显示了超出的部分0x7F
)。这些价值观背后都有原因,但解释起来太费时间了。
无论如何,您看到的是0xCF
并且0x84
不会改变,因此 tau 不会改变。另一方面,kappa 输入为0xCE
和0xBA
;第一部分不会改变,第二部分变为并且 UTF-8 中后跟的0x9A
组合确实是大写的希腊字母 kappa。0xCE
0x9A
这不可能适用于每个 UTF-8 字符;此外,控制序列将保持不变,这会给其他语言带来麻烦(例如,在德语中\ss
应该变成\SS
, 才能正确输出)。
因此,LaTeX 引入了\MakeUppercase
“做正确的事情”的功能,\uppercase
在某些情况下使用不同的转换表。
同样,\lowercase
不应在 LaTeX 中使用:正确的命令是\MakeLowercase
。