Saltar al contenido

¿Cómo puedo separar los dígitos de un número largo en grupos de longitud personalizada?

Gustavo, miembro de este equipo de trabajo, nos ha hecho el favor de redactar este enunciado ya que conoce muy bien dicho tema.

Solución:

Aquí está un groupify dominio:

groupify[]

que separará a los en grupos de elementos (a partir de la izquierda) e insertará entre cada par de grupos. El valor por defecto es ,allowbreak (un espacio delgado que permite un salto de línea).

documentclassarticle
usepackagexparse
ExplSyntaxOn
NewExpandableDocumentCommand groupify  O,allowbreak m m 
   jakob_groupify:nnn #1 #2 #3 
cs_new:Npn jakob_groupify:nnn #1 #2 #3
   __jakob_groupify_loop:nnw  1  #2 #3 q_recursion_tail #1 q_recursion_stop 
cs_new:Npn __jakob_groupify_loop:nnw #1 #2 #3
  
    quark_if_recursion_tail_stop:n #3
    exp_not:n #3
    int_compare:nNnTF #1 = #2
       __jakob_groupify_sep:n 
       exp_args:Nf __jakob_groupify_loop:nnw  int_eval:n  #1+1   
          #2
  
cs_new:Npn __jakob_groupify_sep:n #1 #2 q_recursion_tail #3
  
    tl_if_empty:nF #2  exp_not:n #3 
    __jakob_groupify_loop:nnw  1  #1
    #2 q_recursion_tail #3
  
ExplSyntaxOff
begindocument
groupify301234567890123456789012345678901234567890123456789

groupify[ X ]501234567890123456789012345678901234567890123456789
enddocument

Aquí hay una solución basada en LuaLaTeX. Consiste en una función de Lua llamada groupnum que hace el trabajo real y un LaTeX macro llamó groupnum, que toma dos argumentos. El primero es opcional y establece la longitud del agrupamiento; la longitud predeterminada es 4. El segundo es el número que se supone que debe agruparse.

ingrese la descripción de la imagen aquí

% !TEX TS-program = lualatex
documentclassarticle
usepackageluacode
beginluacode
function groupnum ( s , n )
   while #s > n do
      tex.sprint ( s:sub(1,n) .. "\mkern3mu\allowbreak")
      s = s:sub(n+1) 
   end
   tex.sprint ( s )
end   
endluacode
%% LaTeX utility macro:
newcommandgroupnum[2][4]directluagroupnum("#2",#1)

begindocument
raggedright
$groupnum123456789012345$

$groupnum[5]123456789012345$

$groupnum[7]1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890$
enddocument

Si te mola el asunto, puedes dejar un ensayo acerca de qué te ha gustado de este enunciado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *