为什么使用预定义样式导出 pgfmathprintnumber 中的图形时指数会消失

为什么使用预定义样式导出 pgfmathprintnumber 中的图形时指数会消失

我想以科学计数法形式导出图形,例如,数字 1.25e-8 应该是 $1.25\times 10^{-8} $。但是我发现,如果我使用预定义样式作为 pgfmathprintnumber 的选项,指数将不会出现。例如,

\documentclass{article}
\usepackage{tikz}
\begin{document}
    \pgfkeys{
    /pgf/number format/.cd,
    sci,
    sci generic={mantissa sep=\times,exponent={10^{#1}}}}
    \pgfmathprintnumber{1.25e-8}


    \tikzset{
       /pgf/number format/scinum/.style={
         sci,
         sci generic={mantissa sep=\times,exponent={10^{#1}}},
         },
      }
    \pgfmathprintnumber[scinum]{1.25e-8}
\end{document}

第一个结果是正确的形式,而第二个结果丢失了指数。

我怎么解决这个问题?

答案1

这不是一个真正的 pgf 问题,而是一个 LaTeX 问题:如果你在定义中定义某些东西,则需要添加#,例如这个帖子。也就是说,您需要在命令中将替换#1为。##1\tikzset

\documentclass{article}
\usepackage{tikz}
\begin{document}
    \pgfkeys{
    /pgf/number format/.cd,
    sci,
    sci generic={mantissa sep=\times,exponent={10^{#1}}}}
    \pgfmathprintnumber{1.25e-8}


    \tikzset{
       /pgf/number format/scinum/.style={
         sci,
         sci generic={mantissa sep=\times,exponent={10^{##1}}},
         },
      }
    \pgfmathprintnumber[scinum]{1.25e-8}
\end{document}

在此处输入图片描述

相关内容