Representación de números separados por comas ingresados ​​al modo matemático de látex desde \sage{}

Representación de números separados por comas ingresados ​​al modo matemático de látex desde \sage{}

Me encontré con otras preguntas de texto en las que la gente preguntaba formas de representar números en formato separado por comas. Es decir, escribir 1234567 como 1.234.567. Necesito esto mientras le enseño sumas y restas a mi hijo. Estoy tratando de generar una lista aleatoria de problemas de suma que se vuelve más difícil cada día. Básicamente, quiero ejecutar el código y generar, digamos, conjuntos de problemas diarios para 30 días, lo que se vuelve más difícil a medida que avanzamos. Si bien puedo modificarlo para mi propio hijo mientras estoy en movimiento, hay otros niños involucrados y no tendrán la posibilidad de acceder a mí. Entonces, depende de los padres. En pocas palabras, este es el desafío que tengo:

Las soluciones dadas anteriormente a este problema tienen dos problemas:

  1. ¡Muchos no funcionan lo suficientemente bien en modo matemático!

  2. (y este es mi problema principal) Me gustaría hacer algo como esto (usando el paquete numprint como ejemplo fallido): $\numprint{\sage{12454785*34}}$

Como puedes adivinar, esto no funciona ya que \numprintlee una cadena y no augura nada bueno en \sage{...}el interior. Pensé en definir mi propia función sage y luego usarla, \sagestr{}pero proporciona una solución temporal ya que más adelante usaré el mismo conjunto de archivos para generar contenido en línea que NO augura nada bueno \sagestr(¡otra historia!).

Respuesta1

Sólo algunas ideas en lugar de una respuesta:

  • Personalmente evitaría la salvia. LaTeX puede hacer cálculos por sí solo (al menos con expl3).
  • No deberías reinventar la rueda. Su \numprintsería, en cualquier caso, inferior a siunitxla de \num.
  • Actualización: como Mico mencionó en los comentarios debajo de su pregunta, podría considerar adaptar una de las soluciones deesta pregunta. En combinación con mi siguiente fragmento de código, la versión de egreg encajaría.

Aquí hay un enfoque muy simple de una \numberfromcalcmacro que solo espera que se calcule alguna expresión numérica y luego imprime el resultado formateado independientemente de si está en modo matemático o no.

\documentclass{article}

\usepackage{siunitx}

\ExplSyntaxOn
\NewDocumentCommand { \numberfromcalc } { m }
    {
        \int_set:Nn \l_tmpa_int { #1 }
        \num[group-separator={,}]{\int_use:N \l_tmpa_int}
    }
\ExplSyntaxOff

\begin{document}
    \noindent\numberfromcalc{12454785*34}\\
    $\numberfromcalc{12454785*34}$
\end{document}

números

Como no publicaste ningún código, no intentaré generar algunas listas aleatorias aquí, pero eso tampoco sería tan difícil. Como dije, esto es sólo un comienzo.

Respuesta2

Una de las ventajas de utilizar Sage es que está construido en Python. Por lo tanto, obtienes muchas funciones integradas sin código largo y difícil de leer. En este caso, cambie los números a cadenas en Sage e inserte las comas antes de ir a LaTeX.

\documentclass{article}
\usepackage{sagetex}
\begin{document}
\begin{sagesilent}
a = Integer(randint(1000,10000))
b = Integer(randint(1000,10000))
\end{sagesilent}
\noindent What's $\sagestr{"{0:12,.0f}".format(a)} \times \sagestr{"{0:12,.0f}".format(b)}$?\\
Answer: $\sagestr{"{0:12,.0f}".format(a*b)}$
\end{document}

La salida que se ejecuta en CoCalc tiene este aspecto: ingrese la descripción de la imagen aquí

La información sobre el comando para crear las comas esaquí.

información relacionada