Numeración de páginas con fuente Tengwar

Numeración de páginas con fuente Tengwar

Usar el sistema de tipos desarrollado por JRR Tolkien con TeX y sus extensiones es complicado pero posible. Una solución es el paquete tengwarscript. Ahora bien, lo interesante del sistema de escritura es que el sistema numérico correspondiente no es de base 10, sino de base 12.

Me pregunto si alguien ha intentado alguna vez convertir automáticamente el número de páginas en los caracteres correspondientes. Desafortunadamente, mi conocimiento actual sobre TeX no es suficiente para implementar algo así. ¿Alguien me puede ayudar?

Respuesta1

No estoy completamente seguro, pero hasta donde tengo entendido, Tengwar no solo usa un sistema numérico con base 12, sino que también coloca el dígito menos significativo a la izquierda.

El siguiente código crea una macro de usuario \tengwarnumeralque convierte un número en su contraparte Tengwar. Lo hace convirtiendo primero el número en una secuencia que representa los dígitos individuales del número Tengwar (donde el orden de los dígitos ya está invertido) y luego reemplazando las cadenas en esta secuencia por el glifo correcto usando el tengwarscriptpaquete.

\documentclass{article}
\pdfmapfile{=tengwarscript.map}
\usepackage[annatar]{tengwarscript}

\ExplSyntaxOn
\int_new:N \l_tengwarnumeral_tempa_int
\int_new:N \l_tengwarnumeral_tempb_int
\seq_new:N \l_tengwarnumeral_tengwardigits_seq

\NewDocumentCommand { \tengwarnumeral } { m } { 
    \seq_clear:N \l_tengwarnumeral_tengwardigits_seq
    \int_set:Nn \l_tengwarnumeral_tempa_int { #1 }
    \int_do_until:nn { \l_tengwarnumeral_tempa_int <= 0 } {
        \int_set:Nn \l_tengwarnumeral_tempb_int { \int_mod:nn { \l_tengwarnumeral_tempa_int } { 12 } }
        \int_compare:nNnTF \l_tengwarnumeral_tempb_int = { 0 } {
            \int_sub:Nn \l_tengwarnumeral_tempa_int { 12 } 
        } {
            \int_sub:Nn \l_tengwarnumeral_tempa_int { \l_tengwarnumeral_tempb_int } 
        }
        \int_set:Nn \l_tengwarnumeral_tempa_int { \int_div_truncate:nn \l_tengwarnumeral_tempa_int { 12 } }
        \seq_put_right:Nx \l_tengwarnumeral_tengwardigits_seq { \int_use:N \l_tengwarnumeral_tempb_int } 
    }
    \seq_map_inline:Nn \l_tengwarnumeral_tengwardigits_seq {
        \str_case:nn { ##1 } {
            { 0 } { \Tzero }
            { 1 } { \Tone }
            { 2 } { \Ttwo }
            { 3 } { \Tthree }
            { 4 } { \Tfour }
            { 5 } { \Tfive }
            { 6 } { \Tsix }
            { 7 } { \Tseven }
            { 8 } { \Teight }
            { 9 } { \Tnine }
            { 10 } { \Tten }
            { 11 } { \Televen }
        }
    }
}
\ExplSyntaxOff

\begin{document}

\tengwarnumeral{3}

% is 12 + 3, so should be: 3 1
\tengwarnumeral{15}

% is 1728 + 144 + 120 + 3, so should be: 3 10 1 1
\tengwarnumeral{1995}

\end{document}

ingrese la descripción de la imagen aquí


Si desea utilizar fuentes con sabor Unicode fontspec, como Tengwar Telcontar, puede ajustar la segunda parte de la macro donde se realiza la conversión de la siguiente manera (también agregué los puntos de código Unicode a los que se asignarían los números Tengwar si elúltima propuesta de codificaciónsería aceptado):

\documentclass{article}
\usepackage{fontspec}
\newfontfamily\tengwarfont{tengtelc.ttf}

\ExplSyntaxOn
\int_new:N \l_tengwarnumeral_tempa_int
\int_new:N \l_tengwarnumeral_tempb_int
\seq_new:N \l_tengwarnumeral_tengwardigits_seq

\NewDocumentCommand { \tengwarnumeral } { m } { 
    \seq_clear:N \l_tengwarnumeral_tengwardigits_seq
    \int_set:Nn \l_tengwarnumeral_tempa_int { #1 }
    \int_do_until:nn { \l_tengwarnumeral_tempa_int <= 0 } {
        \int_set:Nn \l_tengwarnumeral_tempb_int { \int_mod:nn { \l_tengwarnumeral_tempa_int } { 12 } }
        \int_compare:nNnTF \l_tengwarnumeral_tempb_int = { 0 } {
            \int_sub:Nn \l_tengwarnumeral_tempa_int { 12 } 
        } {
            \int_sub:Nn \l_tengwarnumeral_tempa_int { \l_tengwarnumeral_tempb_int } 
        }
        \int_set:Nn \l_tengwarnumeral_tempa_int { \int_div_truncate:nn \l_tengwarnumeral_tempa_int { 12 } }
        \seq_put_right:Nx \l_tengwarnumeral_tengwardigits_seq { \int_use:N \l_tengwarnumeral_tempb_int } 
    }
    \group_begin:
    \tengwarfont
    \seq_map_inline:Nn \l_tengwarnumeral_tengwardigits_seq {
        \str_case:nn { ##1 } {
            { 0 } { \char"E070 } % \char"160B0
            { 1 } { \char"E071 } % \char"160B3
            { 2 } { \char"E072 } % \char"160E2
            { 3 } { \char"E073 } % \char"160E3
            { 4 } { \char"E074 } % \char"160E4
            { 5 } { \char"E075 } % \char"160E5
            { 6 } { \char"E076 } % \char"160E6
            { 7 } { \char"E077 } % \char"160E7
            { 8 } { \char"E078 } % \char"160E8
            { 9 } { \char"E079 } % \char"160E9
            { 10 } { \char"E07A } % \char"160EA
            { 11 } { \char"E07B } % \char"160EB
        }
    }
    \group_end:
}
\ExplSyntaxOff

\begin{document}

\tengwarnumeral{3}

% is 12 + 3, so should be: 3 1
\tengwarnumeral{15}

% is 1728 + 144 + 120 + 3, so should be: 3 10 1 1
\tengwarnumeral{1995}

\end{document}

información relacionada