\documentclass{ctexbeamer}
\usepackage{tikz}
\usepgflibrary{fpu}
\begin{document}
\begin{frame}{fpu库与画箭头冲突}
\begin{center}
    \begin{tikzpicture}[thick, scale=0.8, font=\footnotesize]
        \pgfkeys{/pgf/fpu, /pgf/fpu/output format=fixed}
        \path[use as bounding box] (-6.5,-3.5) -- (6.6,3.5);
        \draw[very thin,color=gray] (-6,-3) grid (6,3);
        \draw[thin,->] (-6.5,0) -- (6.6,0) node[right] {$x$};
        \draw[thin,->] (0,-3.2) -- (0,3.2) node[above] {$y$};
        \draw plot[domain=-6.28:6.28,samples=50]
        (\x,{sin(\x r)}) node[above=7mm] {$y=\sin x$};
        \draw[red] plot[domain=-6:6,samples=60]   
            (\x,{\x-(1/3!)*(\x)^3+(1/5!)*(\x)^5-(1/7!)*(\x)^7+(1/9!)*(\x)^9-(1/11!)*(\x)^11})   
            node[left,inner sep=1pt,red]{$y=x - \frac1{3!}x^3 + \frac1{5!}x^5 - \frac1{7!}x^7+\frac1{9!}x^9-\frac1{11!}x^{11}$};
        \end{tikzpicture}
\end{center}
\end{frame}
\end{document}

系统:texlive2019,用 xelatex 编绎,出错信息如下:

Package PGF Math Error: Sorry, an internal routine of the floating point unit

 got an ill-formatted floating point number `0.0'. The unreadable part was near

 '0.0'..


  \draw[thin,->] (-6.5,0) -- (6.6,0) node[right] {$x$};
  \draw[thin,->] (0,-3.2) -- (0,3.2) node[above] {$y$};

改为

 \draw[thin] (-6.5,0) -- (6.6,0) node[right] {$x$};
 \draw[thin] (0,-3.2) -- (0,3.2) node[above] {$y$};


即可通过编绎

4 回答4

0
<p>可以看看这个解释:</p><p><a href="https://tex.stackexchange.com/questions/145694/pgf-math-an-internal-routine-of-the-floating-point-unit-near" target="_blank">https://tex.stackexchange.com/questions/145694/pgf-math-an-internal-routine-of-the-floating-point-unit-near</a></p><p><br></p>
0
<p>虽然我还没有搞清楚这个fpu库和箭头冲突的本质原因是什么,但是可以用子环境scope来规避这个问题</p><pre class="brush:plain;toolbar:false">\documentclass{ctexbeamer} \usepackage{tikz} \usepgflibrary{fpu} \begin{document} \begin{frame}{用 \textcolor{red}{scope} 环境规避冲突} \begin{center}     \begin{tikzpicture}[thick, scale=0.8, font=\footnotesize]       \begin{scope}  \pgfkeys{/pgf/fpu, /pgf/fpu/output format=fixed}         \path[use as bounding box] (-6.5,-3.5) -- (6.6,3.5);         \draw[very thin,color=gray] (-6,-3) grid (6,3);         \draw plot[domain=-6.28:6.28,samples=200]         (\x,{sin(\x r)}) node[above=7mm] {$y=\sin x$};         \draw[red] plot[domain=-6:6,samples=200]             (\x,{\x-(1/3!)*(\x)^3+(1/5!)*(\x)^5-(1/7!)*(\x)^7+(1/9!)*(\x)^9-(1/11!)*(\x)^11})             node[left,inner sep=1pt,red]{$y=x - \frac1{3!}x^3 + \frac1{5!}x^5 - \frac1{7!}x^7+\frac1{9!}x^9-\frac1{11!}x^{11}$};         \end{scope}         \draw[thin,->] (-6.5,0) -- (6.6,0) node[right] {$x$};         \draw[thin,->] (0,-3.2) -- (0,3.2) node[above] {$y$};         \end{tikzpicture} \end{center} \end{frame} \end{document}</pre><p><br></p>
0
<p></p><p>在&nbsp; PGF 手册 fpu 库那一部分有一句话:</p><p>Note that the library has not really been tested together with any drawing operations.</p><p><br/></p><p>我猜可能是这样:添加箭头时需要计算各种尺寸,例如线宽,箭头的各种尺寸(长度,宽度等),也需要对路径做裁剪,裁剪时需要计算裁剪的尺寸。计算这些尺寸时数值格式可能仍然是没有调用 fpu 库时的格式,并没有自动转为浮点格式,所以计算浮点数的函数不能解析这些数值,导致错误。所以简单地 <br/></p><p>\pgfkeys{/pgf/fpu, /pgf/fpu/output format=fixed}<br/></p><p>并不能很好地发挥 fpu 的作用——目前如此。</p><p>如果需要箭头选项兼容 fpu,&nbsp; 可以试试 pgfplots,也可以试试 tikz 的 Data Visualization. 使用 pgfplots 比较简单一些。</p><p><br/></p><p>以上纯属猜测,要是猜错了还请见谅。<br/></p><p></p>
0
<p>tikz library fpu 和 arrows 功能冲突,是一个已知问题,见 <a href="https://github.com/pgf-tikz/pgf/issues/678">https://github.com/pgf-tikz/pgf/issues/678</a></p><p><br></p><p>根据 issue 下的讨论,尚未找到修复方案。找绕过的方式吧。</p>

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。