使用不同的系统对页面进行编号(玛雅数字)

使用不同的系统对页面进行编号(玛雅数字)

我使用 latex 已经有很长时间了,但我总是用 latex 来编写不是特别特殊的文档。现在,情况有点不同,因为我想更改编号系统,并且希望所有页面都使用玛雅数字编号。我知道命令:

\maya{number}

会给出玛雅格式的编号。但是,这不允许我自动对每一页进行编号,除非我逐页手动向每一页添加 \maya{number}。

有人能建议去哪里查找有关这方面的知识吗?

答案1

我改编了(阅读重用)来自的代码数学模式下的玛雅数字。你需要 XeLaTeX 或 LuaLaTeX 来编译它,以及BabelStone 玛雅数字字体。代码如下:

%!TEX program = lualatex
%You can use xelatex, too
\documentclass{article}
\usepackage{amsmath}
\usepackage{fontspec}

\newfontface{\mayanumerals}{BabelStone Mayan Numerals}
\ExplSyntaxOn

\NewDocumentCommand{\mayanumber}{sO{}m}
{
    \IfBooleanTF { #1 }
    {
        \ensuremath { \mathrm { \tl_upper_case:n { \int_to_base:nn { #3 } { 20 } }\sb{20} } }
    }
    {
        \tatojo_maya_number:nn { #2 } { #3 }
    }
}

\int_const:Nn \c__tatojo_maya_start_int { "1D2E0 }
\tl_new:N \l__tatojo_maya_converted_tl
\seq_new:N \l__tatojo_maya_digits_seq

\keys_define:nn { tatojo/maya }
{
    align      .tl_set:N = \l__tatojo_maya_align_tl,
    align      .initial:n = c,
    horizontal .bool_set:N = \l__tatojo_maya_horizontal_bool,
    horizontal .default:n = true,
    vertical   .bool_set_inverse:N = \l__tatojo_maya_horizontal_bool,
    vertical   .default:n = true,
    scale      .code:n =
    {
        \fp_compare:nT { #1 != 1 } { \addfontfeatures{Scale=#1} }
    }
}

\cs_new_protected:Nn \tatojo_maya_number:nn
{
    \mbox
    {
        % choose the font and set spacing to 0.5
        \mayanumerals
        % evaluate options
        \keys_set:nn { tatojo/maya } { #1 }
        % clear the sequence containing the digits
        \seq_clear:N \l__tatojo_maya_digits_seq
        % convert the input to base 20
        \tl_set:Nx \l__tatojo_maya_converted_tl
        {
            \int_to_base:nn { #2 } { 20 }
        }
        % fill the digit sequence
        \tl_map_function:NN \l__tatojo_maya_converted_tl \__tatojo_maya_adddigit:n
        % print the digit sequence
        \bool_if:NTF \l__tatojo_maya_horizontal_bool
        {
            \seq_use:Nn \l__tatojo_maya_digits_seq { }
        }
        {
            \begin{tabular}[\l__tatojo_maya_align_tl]{@{}c@{}}
                \shortstack[c]{ \seq_use:Nn \l__tatojo_maya_digits_seq { \\ } }
            \end{tabular}
        }
    } % close the \mbox
}

\cs_new:Nn \__tatojo_maya_adddigit:n
{
    \seq_put_right:Nx \l__tatojo_maya_digits_seq
    {
        \tatojo_maya_digit:n { \int_from_base:nn { #1 } { 20 } }
    }
}

\cs_new_protected:Nn \tatojo_maya_digit:n
{
    \symbol { \int_eval:n { \c__tatojo_maya_start_int + #1 } }
}

\ExplSyntaxOff
%And here's the magic
\renewcommand{\thepage}{$\mayanumber[horizontal,scale=3]{\arabic{page}}$}
\begin{document}
\Huge
\input tufte
\input knuth
\input knuth
\input tufte
\input knuth
\input knuth
\end{document}

现在我们来看文件,,玛雅数字。 在此处输入图片描述

相关内容