
Usar o sistema de tipos desenvolvido por JRR Tolkien com TeX e suas extensões é complicado, mas possível. Uma solução é o pacote tengwarscript
. Agora, o interessante sobre o sistema de escrita é que o sistema numérico correspondente não é de base 10, mas de base 12.
Gostaria de saber se alguém já tentou converter automaticamente o número de páginas nos caracteres correspondentes. Infelizmente, meu conhecimento atual sobre TeX não é suficiente para implementar algo assim. Alguém pode me ajudar?
Responder1
Não tenho certeza, mas pelo que entendi, Tengwar não apenas usa um sistema numérico com base 12, mas também coloca o dígito menos significativo à esquerda.
O código a seguir cria uma macro de usuário \tengwarnumeral
que converte um número em sua contraparte Tengwar. Isso é feito primeiro convertendo o número em uma sequência que representa os dígitos únicos do número Tengwar (onde a ordem dos dígitos já está invertida) e, em seguida, substituindo as strings nesta sequência pelo glifo correto usando o tengwarscript
pacote.
\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}
Se você quiser usar fontes com sabor Unicode fontspec
, como Tengwar Telcontar, você pode ajustar a segunda parte da macro onde a conversão ocorre da seguinte maneira (também adicionei os pontos de código Unicode aos quais os numerais Tengwar seriam atribuídos se oproposta de codificação mais recenteseria aceito):
\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}