我正在尝试在使用 XeLaTex 编译的投影仪演示文稿中插入一些罗马数字和希腊数字(选择取决于我还必须插入一些埃及、巴比伦和玛雅数字)
我有一个问题:埃及分数和“加号和减号”可以在 XeLatex 中呈现吗?参见例如维基百科中的埃及数字如果是,怎么办?
我认为重新提出这个问题会很有用,因为我认为@yasper 的代码有点问题。它正确地呈现了除 1,000,000 之外的所有数字,而 1,000,000 被呈现为 1,100,000。由于@yasper 的回答很棒,我认为这个小错误值得纠正,并重新提出答案。
很抱歉,但我无法自己纠正这个错误,因为代码对我来说太复杂了。
提前谢谢您。
答案1
抱歉,我可能误读了您的问题,所以它没有准确回答您的问题。但是,关于如何插入埃及象形文字,您可以使用\char"00000
并替换00000
相关的 Unicode 代码点。\shortstack
例如,您可以使用以下代码堆叠象形文字。
因此,为了排版负数的象形文字,您可以输入\char"130BB
。对于四分之一,您可以写\shortstack{ \char"1308B \\ \char"133FD }
。当然,您需要安装支持埃及象形文字的字体。
以下代码提供了一个宏,将整数(正数、负数和零)转换为埃及象形文字中的等值数字,最大为 9,999,999。
由于您对分数感兴趣,因此可以轻松扩展以支持分数(埃及象形文字书写系统仅支持单位分数,但有 ⅔ 和 ¾ 的特殊字形):
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Noto Sans Egyptian Hieroglyphs}
\ExplSyntaxOn
\int_new:N \l_egyptiannumeral_tempa_int
\int_new:N \l_egyptiannumeral_tempb_int
\int_new:N \l_egyptiannumeral_currentpower_int
\seq_new:N \l_egyptiannumeral_egyptiandigits_seq
\NewDocumentCommand { \egyptiannumeral } { m } {
\int_set:Nn \l_egyptiannumeral_tempa_int { #1 }
\int_compare:nNnT { \int_use:N \l_egyptiannumeral_tempa_int } = { 0 } {
\char"13124
}
\int_compare:nNnT { \int_use:N \l_egyptiannumeral_tempa_int } < { 0 } {
\char"130BB
\int_set:Nn \l_egyptiannumeral_tempa_int {
#1 * -1
}
}
\seq_clear:N \l_egyptiannumeral_egyptiandigits_seq
\int_set:Nn \l_egyptiannumeral_currentpower_int { 0 }
\int_do_until:nn { \l_egyptiannumeral_tempa_int <= 0 } {
\int_set:Nn \l_egyptiannumeral_tempb_int { \int_mod:nn { \l_egyptiannumeral_tempa_int } { 10 } }
\int_sub:Nn \l_egyptiannumeral_tempa_int { \l_egyptiannumeral_tempb_int }
\int_set:Nn \l_egyptiannumeral_tempa_int { \int_div_truncate:nn \l_egyptiannumeral_tempa_int { 10 } }
\seq_put_left:Nx \l_egyptiannumeral_egyptiandigits_seq { \int_use:N \l_egyptiannumeral_tempb_int }
\int_incr:N \l_egyptiannumeral_currentpower_int
}
\seq_map_inline:Nn \l_egyptiannumeral_egyptiandigits_seq {
\int_case:nn { \l_egyptiannumeral_currentpower_int } {
{ 1 } {
\str_case:nn { ##1 } {
{ 0 } { }
{ 1 } { \char"133FA }
{ 2 } { \char"133FB }
{ 3 } { \char"133FC }
{ 4 } { \char"133FD }
{ 5 } { \char"133FE }
{ 6 } { \char"133FF }
{ 7 } { \char"13400 }
{ 8 } { \char"13401 }
{ 9 } { \char"13402 }
}
}
{ 2 } {
\str_case:nn { ##1 } {
{ 0 } { }
{ 1 } { \char"13386 }
{ 2 } { \char"13387 }
{ 3 } { \char"13388 }
{ 4 } { \char"13389 }
{ 5 } { \char"1338A }
{ 6 } { \char"1338B }
{ 7 } { \char"1338C }
{ 8 } { \char"1338D }
{ 9 } { \char"1338E }
}
}
{ 3 } {
\str_case:nn { ##1 } {
{ 0 } { }
{ 1 } { \char"13362 }
{ 2 } { \char"13363 }
{ 3 } { \char"13364 }
{ 4 } { \char"13365 }
{ 5 } { \char"13366 }
{ 6 } { \char"13367 }
{ 7 } { \char"13368 }
{ 8 } { \char"13369 }
{ 9 } { \char"1336A }
}
}
{ 4 } {
\str_case:nn { ##1 } {
{ 0 } { }
{ 1 } { \char"131BC }
{ 2 } { \char"131BD }
{ 3 } { \char"131BE }
{ 4 } { \char"131BF }
{ 5 } { \char"131C0 }
{ 6 } { \char"131C1 }
{ 7 } { \char"131C2 }
{ 8 } { \char"131C3 }
{ 9 } { \char"131C4 }
}
}
{ 5 } {
\str_case:nn { ##1 } {
{ 0 } { }
{ 1 } { \char"130AD }
{ 2 } { \char"130AE }
{ 3 } { \char"130AF }
{ 4 } { \char"130B0 }
{ 5 } { \char"130B1 }
{ 6 } { \char"130B2 }
{ 7 } { \char"130B3 }
{ 8 } { \char"130B4 }
{ 9 } { \char"130B5 }
}
}
{ 6 } {
\int_set:Nn \l_egyptiannumeral_tempa_int { ##1 }
\int_until_do:nn { \l_egyptiannumeral_tempa_int <= 0 } {
\char"13190
\int_decr:N \l_egyptiannumeral_tempa_int
}
}
{ 7 } {
\int_set:Nn \l_egyptiannumeral_tempa_int { ##1 }
\int_until_do:nn { \l_egyptiannumeral_tempa_int <= 0 } {
\char"13068
\int_decr:N \l_egyptiannumeral_tempa_int
}
}
}
\int_decr:N \l_egyptiannumeral_currentpower_int
}
}
\NewDocumentCommand { \egyptianfractiontwothirds } { } { \char"1308C }
\NewDocumentCommand { \egyptianfractionthreefourths } { } { \char"1308D }
\NewDocumentCommand { \egyptianfraction } { m } {
\int_set:Nn \l_egyptiannumeral_tempa_int { #1 }
\int_compare:nNnTF { \int_use:N \l_egyptiannumeral_tempa_int } = { 2 } {
\char"1341E
} {
\shortstack {
\char"1308B \\
\egyptiannumeral { #1 }
}
}
}
\ExplSyntaxOff
\begin{document}
\egyptiannumeral{0}
\egyptiannumeral{2020}
\egyptiannumeral{1234567}
\egyptiannumeral{-145}
\bigskip
\egyptianfraction{2} \quad \egyptianfraction{3} \quad \egyptianfraction{12}
\egyptianfractiontwothirds
\egyptianfractionthreefourths
\end{document}