有人能提示我如何获得象形文字数字XeTeX 中 1-1000?我正在使用这个包:
\usepackage{hieroglf}
我需要一个宏
\hg{\n} 以象形文字打印 \n。
编辑
您的解决方案很好,但事实上它在数字 1 处已经使用了错误的字符!
我需要同时完成这两件事:根据下面的代码片段更正起始数字,并将以下 roman,arabic,babyloniannum 序列扩展为 象形文字。我的基数是 10。
\renewcommand{\theenumi}{\roman{enumi}--\arabic{enumi}--\!\!\!\!\!\babyloniannum{\value{enumi}}\!\!\!}
答案1
更新:感谢您发布 MWE。这里有一些可以做到这一点的东西。
\documentclass{article}
\usepackage{hieroglf}
\newcounter{hieroaux}
\newcounter{hierocurr}
\newcommand{\HieroDigit}[1]{\ifcase#1
\or
\Hone
\or
\Hten
\or
\Hhundred
\or
\Hthousand
\or
\HXthousand
\or
\HCthousand
\or
\Hmillion
\fi}
\DeclareRobustCommand\hg[1]{\setcounter{hierocurr}{#1}%
\ifnum\value{hierocurr}>999999
\setcounter{hieroaux}{0}%
\loop\stepcounter{hieroaux}\textpmhg{\HieroDigit{7}}%
\ifnum\value{hieroaux}<\the\numexpr(\value{hierocurr}-500000)/1000000\relax%
\repeat%
\setcounter{hierocurr}{\the\numexpr\value{hierocurr}-\value{hieroaux}*1000000}%
\fi
\ifnum\value{hierocurr}>99999
\setcounter{hieroaux}{0}%
\loop\stepcounter{hieroaux}\textpmhg{\HieroDigit{6}}%
\ifnum\value{hieroaux}<\the\numexpr(\value{hierocurr}-50000)/100000\relax%
\repeat%
\setcounter{hierocurr}{\the\numexpr\value{hierocurr}-\value{hieroaux}*100000}%
\fi%
\ifnum\value{hierocurr}>9999
\setcounter{hieroaux}{0}%
\loop\stepcounter{hieroaux}\textpmhg{\HieroDigit{5}}%
\ifnum\value{hieroaux}<\the\numexpr(\value{hierocurr}-5000)/10000\relax%
\repeat%
\setcounter{hierocurr}{\the\numexpr\value{hierocurr}-\value{hieroaux}*10000}%
\fi%
\ifnum\value{hierocurr}>999
\setcounter{hieroaux}{0}%
\loop\stepcounter{hieroaux}\textpmhg{\HieroDigit{4}}%
\ifnum\value{hieroaux}<\the\numexpr(\value{hierocurr}-500)/1000\relax%
\repeat%
\setcounter{hierocurr}{\the\numexpr\value{hierocurr}-\value{hieroaux}*1000}%
\fi%
\ifnum\value{hierocurr}>99
\setcounter{hieroaux}{0}%
\loop\stepcounter{hieroaux}\textpmhg{\HieroDigit{3}}%
\ifnum\value{hieroaux}<\the\numexpr(\value{hierocurr}-50)/100\relax%
\repeat%
\setcounter{hierocurr}{\the\numexpr\value{hierocurr}-\value{hieroaux}*100}%
\fi%
\ifnum\value{hierocurr}>9
\setcounter{hieroaux}{0}%
\loop\stepcounter{hieroaux}\textpmhg{\HieroDigit{2}}%
\ifnum\value{hieroaux}<\the\numexpr(\value{hierocurr}-5)/10\relax%
\repeat%
\setcounter{hierocurr}{\the\numexpr\value{hierocurr}-\value{hieroaux}*10}%
\fi%
\ifnum\value{hierocurr}>0
\setcounter{hieroaux}{0}%
\loop\stepcounter{hieroaux}\textpmhg{\HieroDigit{1}}%
\ifnum\value{hieroaux}<\value{hierocurr}\relax%
\repeat%
\fi}
\begin{document}
\renewcommand{\thesection}{\hg{\value{section}}}
\section{Examples}
$5=\hg{5}$\par
$36=\hg{36}$\par
$2357468=\hg{2357468}$\par
$\hg{7}\cdot\hg{6}=\hg{42}$\par
$\displaystyle\frac{\hg{3131}}{\hg{101}}=\hg{31}$\par
$\pi=\hg{3}.\hg{14159}$
\section{Numbered lists}
\renewcommand{\theenumi}{\roman{enumi}--\arabic{enumi}--\hg{\value{enumi}}}
\begin{enumerate}
\item A
\item B
\end{enumerate}
\end{document}
古老(且完全非埃及式)的答案:首先我想说的是,我完全不懂象形文字。这只是为了好玩。我从hieroglf
包源中复制了一些象形文字。由于有 74+1 个象形文字块,因此这会为您提供以 74 为基数的数字。如果您想要另一个基数,请提供 MWE,以便我了解适当的数字和基数。除此之外,我还添加了一个笨拙的模数和 int 函数,不需要额外的包。如果您想让它更优雅,您可能需要指定您是否同意加载xint
或pgf
。
\documentclass{article}
\usepackage{hieroglf}
\newcommand\HieroGlf[1]{\ifcase#1
\Hdual
\or
\HAi
\or
\HAii
\or
\HAxxviii
\or
\HCxi
\or
\HDi
\or
\HDii
\or
\HDiv
\or
\HDxxi
\or
\HDxxxvi
\or
\HDxlvi
\or
\HDxlvii
\or
\HDl
\or
\HDliv
\or
\HDlviii
\or
\HExxiii
\or
\HFi
\or
\HFxx
\or
\HFxxxi
\or
\HFxxxiv
\or
\HFxl
\or
\HGi
\or
\HGxvii
\or
\HGxxvi
\or
\HGxxvis
\or
\HGxxvii
\or
\HGxxviii
\or
\HGxxxvi
\or
\HGxliii
\or
\HHviii
\or
\HIviii
\or
\HIix
\or
\HIx
\or
\HKi
\or
\HMiii
\or
\HMviii
\or
\HMxii
\or
\HMxvii
\or
\HNxxix
\or
\HNxxxv
\or
\HNxxxvii
\or
\HOi
\or
\HOiv
\or
\HOxxxiv
\or
\HQiii
\or
\HRvii
\or
\HSxii
\or
\HSxxix
\or
\HSxxxix
\or
\HSxli
\or
\HTiii
\or
\HTxiv
\or
\HUxxxvi
\or
\HVi
\or
\HViv
\or
\HVxiii
\or
\HVxx
\or
\HVxxiv
\or
\HVxxviii
\or
\HVxxxi
\or
\HWxi
\or
\HXi
\or
\HYiV
\or
\HYiv
\or
\HZi
\or
\HZii
\or
\HZiv
\or
\HZvi
\or
\HZvii
\or
\HZxi
\or
\HAai
\or
\HAaxii
\or
\HPWi
\or
\HPWii
\fi}
\newcommand{\hieronumeral}[1]{\edef\temp{#1}%
\ifnum\the\numexpr\temp/(74*74)>1%
\textpmhg{\HieroGlf{\the\numexpr\temp/(74*74)-1}}%
\edef\temp{\the\numexpr\temp-74*74*\the\numexpr\temp/(74*74)-1\relax}%
\fi%
\ifnum\the\numexpr(\temp+37)/74>1%
\textpmhg{\HieroGlf{\the\numexpr(\temp+37)/74-1}}%
\edef\temp{\the\numexpr\temp-74*\the\numexpr(\temp+37)/74-1\relax}%
\else%
\ifnum#1>74%
0%
\fi%
\fi%
\textpmhg{\HieroGlf{\temp}}}
\begin{document}
$123=\hieronumeral{123}$
\newcounter{iloop}
\setcounter{iloop}{0}
\loop\stepcounter{iloop}
$\number\value{iloop}=\hieronumeral{\number\value{iloop}}$,
\ifnum\number\value{iloop}<999\repeat%
$1000=\hieronumeral{1000}$
\end{document}
答案2
@user2925716 就此事给我发了一封电子邮件,我回复了一些信息并建议他在这里提问,没想到他已经这样做了。这不是一个完整的答案,但可能会帮助其他人给出答案。
埃及人使用十进制数字系统。该hieroglf
软件包提供了数字、\Hone
个位数、\Hten
十位数和\Hhundred
百位数的字形。埃及人重复这些字形以组成所需的数字。
我见过的唯一例子是数字 28,其中有 2 个\Hten
字形,4 个字形之上又有 2 个字形\Hone
,4 个字形之上又有 4 个\Hone
字形,形成了三组字形的堆叠。
我不知道数字 39 应该如何表示。我知道 234 的表示应该由 2 个\Hhundred
、3 个\Hten
和 4 个组成\Hone
,但我不知道字形在文档中的排序方式。我猜这是一个美学问题,很可能取决于相邻字形的布局方式。
看起来你可能需要一些代码来将数字转换成所需数量的字形,我想有人可以帮你做,但之后需要将它们组合成埃及人能识别的数字。也许由你决定?
答案3
这是一个使用fontspec
和 的解决方案expl3
。它不是很紧凑,但在我看来,它比传统解决方案更具可读性。
\documentclass{article}
\RequirePackage{expl3}
\usepackage{fontspec}
% These fonts are available at: http://users.teilar.gr/~g1951d/
\newfontfamily\hieroglyphfont{Aegyptus}[Scale = MatchUppercase, Script={Egyptian Hieroglyphs}]
\newfontfamily\emojifont{Symbola}[Scale = MatchUppercase] % The modern equivalent.
\newcommand\shrug{{{\emojifont\symbol{"1F937}}}}
\newcommand\EgyptianShrug{{\hieroglyphfont