\sage{}에서 라텍스 수학 모드에 제공되는 쉼표로 구분된 숫자 표현

\sage{}에서 라텍스 수학 모드에 제공되는 쉼표로 구분된 숫자 표현

나는 사람들이 쉼표로 구분된 형식으로 숫자를 표현하는 방법을 묻는 다른 텍스트 질문을 발견했습니다. 즉 1234567을 1,234,567로 쓰는 것입니다. 아이에게 덧셈/뺄셈을 가르칠 때 꼭 필요해요. 날이 갈수록 어려워지는 덧셈 문제의 무작위 목록을 생성하려고 합니다. 나는 기본적으로 코드를 실행하고 30일 분량의 일일 문제 세트를 생성하고 싶습니다. 이 문제는 갈수록 어려워집니다. 이동 중에도 내 자녀를 위해 조정할 수 있지만 다른 자녀가 관련되어 있으므로 나에게 접근할 기회는 없습니다. 그래서 그것은 부모에게 있습니다. 간단히 말해서 제가 직면한 과제는 다음과 같습니다.

이 문제에 대해 이전에 제공된 솔루션에는 두 가지 문제가 있습니다.

  1. 많은 경우 수학 모드에서는 제대로 작동하지 않습니다!

  2. (이것이 내 주요 문제입니다.) 다음과 같은 작업을 수행하고 싶습니다(실패한 예로 numprint 패키지 사용). $\numprint{\sage{12454785*34}}$

짐작할 수 있듯이 이것은 \numprint문자열을 읽을 때 작동하지 않으며 내부와도 잘 어울리지 않습니다 \sage{...}! 나는 내 자신의 세이지 함수를 정의한 다음 사용하려고 생각했지만 \sagestr{}나중에 동일한 파일 세트를 사용하여 잘 어울리지 않는 일부 온라인 콘텐츠를 생성할 것이기 때문에 임시 솔루션을 제공합니다 \sagestr(또 다른 이야기!).

답변1

답변보다는 몇 가지 생각만 해보세요.

  • 개인적으로 나는 세이지를 피하고 싶습니다. LaTeX는 자체적으로 계산을 수행할 수 있습니다(적어도 expl3에서는).
  • 바퀴를 재발명해서는 안 됩니다. \numprint어쨌든 당신은 siunitx' 보다 열등할 것입니다 \num.
  • 업데이트: 귀하의 질문 아래 의견에서 Mico가 언급했듯이 다음 솔루션 중 하나를 적용하는 것을 고려할 수 있습니다.이 질문. 다음 코드 조각과 함께 egreg의 버전이 적합할 것입니다.

\numberfromcalc다음은 수학 모드인지 여부에 관계없이 일부 숫자 표현식을 계산한 다음 형식화된 결과를 인쇄하는 매우 간단한 매크로 접근 방식입니다 .

\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}

숫자

귀하가 일부 코드를 게시하지 않았기 때문에 여기서는 임의의 목록을 생성하려고 시도하지 않을 것입니다. 그러나 그것도 그렇게 어렵지는 않습니다. 내가 말했듯이 이것은 단지 시작일뿐입니다.

답변2

Sage를 사용하는 장점 중 하나는 Python을 기반으로 한다는 것입니다. 따라서 길고 읽기 어려운 코드 없이도 많은 내장 기능을 얻을 수 있습니다. 이 경우 Sage에서 숫자를 문자열로 변경하고 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}

CoCalc에서 실행되는 출력은 다음과 같습니다. 여기에 이미지 설명을 입력하세요

쉼표를 생성하는 명령에 대한 정보는 다음과 같습니다.여기.

관련 정보