\uppercase 命令不适用于希腊字符

\uppercase 命令不适用于希腊字符

梅威瑟:

\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,因为向量在槽中包含0x610x41;另一方面,逗号等不会改变,因为在相应的槽中向量有 0(这是告诉 TeX 不要更改字符的标记)。

现在,对于 LaTeX 来说,tau 不是一个字符,而是两个(由于 UTF-8),确切地说是槽0xCF0x84(十六进制)中的字符。

以下是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 输入为0xCE0xBA;第一部分不会改变,第二部分变为并且 UTF-8 中后跟的0x9A组合确实是大写的希腊字母 kappa。0xCE0x9A

这不可能适用于每个 UTF-8 字符;此外,控制序列将保持不变,这会给其他语言带来麻烦(例如,在德语中\ss应该变成\SS, 才能正确输出)。

因此,LaTeX 引入了\MakeUppercase“做正确的事情”的功能,\uppercase在某些情况下使用不同的转换表。

同样,\lowercase不应在 LaTeX 中使用:正确的命令是\MakeLowercase

相关内容