使用 pgf 打印不带数学分隔符的原始数字

使用 pgf 打印不带数学分隔符的原始数字

我正在尝试以pgf原始格式输出一个数字,但我不知道该怎么做,所以任何帮助都将不胜感激。如果你看下面,问题是\roundednumber扩展为$1,000$,我想将其扩展为1,000。我试过使用该xstring包,但没有成功。

\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\usepackage{tikz}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.10}
\usepackage{xstring}
\begin{document}
\pgfkeys{/pgf/fpu=true}
\pgfmathparse{1e9}\pgfmathparse{\pgfmathresult/1e6}
\pgfkeys{/pgf/fpu=false}
\pgfmathprintnumberto{\pgfmathresult}{\roundednumber}
\roundednumber \ 1,000
% \pgfmathparse{\roundednumber}
% \pgfmathparse{\StrBetween{\roundednumber}{$}{$}}
% \pgfmathresult
\end{document}

感谢您的帮助。

附言:如果您知道使用 Libertine 字体打印数字的更好方法,请告诉我。

答案1

您可以使用

\pgfmathprintnumberto[assume math mode=true]{\pgfmathresult}{\roundednumber}

这样可以避免进入数学模式。

更简单的方法是expl3使用siunitx

\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\usepackage{tikz}

\usepackage{xparse,siunitx}

%% if you really want a comma for separating groups
\sisetup{group-separator={,},group-four-digits=true}

\ExplSyntaxOn
\NewDocumentCommand{\printnumber}{m}
 {
  \num{ \fp_to_decimal:n { #1 } }
 }
\ExplSyntaxOff

\begin{document}

\printnumber{1e9/1e6}

\end{document}

相关内容