如果使用 pgfplots 和 tkz-berge (Petersen Graph),则与 Mod 不兼容

如果使用 pgfplots 和 tkz-berge (Petersen Graph),则与 Mod 不兼容

下面的 MWE 可以正常工作,但如果pgfplots包未注释,则会失败并显示以下错误消息。

包 PGF 数学错误:抱歉,运算“Mod”尚未在浮点单元中实现(在“Mod(0+2,5)”中)。

参考

代码:

\documentclass[border=2pt]{standalone}

%\usepackage{pgfplots}% <---- Problem if comment this out.
%\pgfplotsset{compat=1.14}
\usepackage{tkz-berge}

\listfiles
\begin{document}
\begin{tikzpicture}[scale=.3] 
    \GraphInit[vstyle=Art] 
    \SetGraphArtColor{blue!40}{olive} 
    \grPetersen[form=1,RA=5,RB=3]
\end{tikzpicture}%
\end{document}

文件列表:

standalone.cls    2015/07/15 v1.2 Class to compile TeX sub-files standalone
ifluatex.sty    2016/05/16 v1.4 Provides the ifluatex switch (HO)
   ifpdf.sty    2017/03/15 v3.2 Provides the ifpdf switch
 ifxetex.sty    2010/09/12 v0.6 Provides ifxetex conditional
 xkeyval.sty    2014/12/03 v2.7a package option processing (HA)
 xkeyval.tex    2014/12/03 v2.7a key=value parser (HA)
standalone.cfg    2015/07/15 v1.2 Default configuration file for 'standalone' c
lass
 article.cls    2014/09/29 v1.4h Standard LaTeX document class
  size10.clo    2014/09/29 v1.4h Standard LaTeX file (size option)
pgfplots.sty    2016/08/10 v1.14 Data Visualization (1.14)
graphicx.sty    2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
graphics.sty    2016/10/09 v1.0u Standard LaTeX Graphics (DPC,SPQR)
    trig.sty    2016/01/03 v1.10 sin cos tan (DPC)
graphics.cfg    2016/06/04 v1.11 sample graphics configuration
  pdftex.def    2017/01/12 v0.06k Graphics/color for pdfTeX
infwarerr.sty    2016/05/16 v1.4 Providing info/warning/error messages (HO)
 ltxcmds.sty    2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
    tikz.sty    2015/08/07 v3.0.1a (rcs-revision 1.151)
     pgf.sty    2015/08/07 v3.0.1a (rcs-revision 1.15)
  pgfrcs.sty    2015/08/07 v3.0.1a (rcs-revision 1.31)
everyshi.sty    2001/05/15 v3.00 EveryShipout Package (MS)
  pgfrcs.code.tex
 pgfcore.sty    2010/04/11 v3.0.1a (rcs-revision 1.7)
  pgfsys.sty    2014/07/09 v3.0.1a (rcs-revision 1.48)
  pgfsys.code.tex
pgfsyssoftpath.code.tex    2013/09/09  (rcs-revision 1.9)
pgfsysprotocol.code.tex    2006/10/16  (rcs-revision 1.4)
  xcolor.sty    2016/05/11 v2.12 LaTeX color extensions (UK)
   color.cfg    2016/01/02 v1.6 sample color configuration
 pgfcore.code.tex
pgfcomp-version-0-65.sty    2007/07/03 v3.0.1a (rcs-revision 1.7)
pgfcomp-version-1-18.sty    2007/07/23 v3.0.1a (rcs-revision 1.1)
  pgffor.sty    2013/12/13 v3.0.1a (rcs-revision 1.25)
 pgfkeys.sty    
 pgfkeys.code.tex
 pgfmath.sty    
 pgfmath.code.tex
  pgffor.code.tex
    tikz.code.tex
tkz-berge.sty    2011/06/01 1.00 c tkz-berge for named graphs
tkz-graph.sty    2011/06/01 ctan v 1.00 base for graphs
    etex.sty    2016/08/01 v2.7 eTeX basic definition package (PEB,DPC)
  ifthen.sty    2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)
tkz-arith.sty    2011/02/28 v 1.00 c integers numbers
tkz-tools-arith.tex
supp-pdf.mkii
pdftexcmds.sty    2017/03/19 v0.25 Utility functions of pdfTeX for LuaTeX (HO)
epstopdf-base.sty    2016/05/15 v2.6 Base part for package epstopdf
  grfext.sty    2016/05/16 v1.2 Manage graphics extensions (HO)
kvdefinekeys.sty    2016/05/16 v1.4 Define keys (HO)
kvoptions.sty    2016/05/16 v3.12 Key value format for package options (HO)
kvsetkeys.sty    2016/05/16 v1.17 Key value parser (HO)
etexcmds.sty    2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
epstopdf-sys.cfg    2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
 ***********

答案1

pdfplots 激活了 fpu 库。正如错误所言,tkz-berge 使用的 Mod 未在那里实现。但似乎无法停用此更改:

\documentclass{article}

\usepackage{tikz}% 
\usetikzlibrary{fpu}
\begin{document}
\begin{tikzpicture}[scale=0.3]
\pgfmathsetcounter{section}{Mod(4,8)} %works

\pgfkeys{/pgf/fpu=true}
\pgfkeys{/pgf/fpu=false}
\pgfmathsetcounter{section}{Mod(5,3)} %fails
\end{tikzpicture}%
\end{document}

在我看来,这是一个错误。

编辑

fpu-library 代码中的这个定义有错误:

\def\pgfmathfloat@install@unimplemented#1{%
    \expandafter\pgfmathfloat@prepareuninstallcmd\csname pgfmath@#1@\endcsname%
    \expandafter\def\csname pgfmath#1@\endcsname##1{\pgfmathfloat@notimplemented{#1}}%
}

第二行后面有一个 @ 太多了\csname pgfmath

但问题是,它pgfplots使用了自己版本的 fpu 库 ( pgfplotsoldpgfsupp_pgflibraryfpu.code.tex),该库加载在 pgfplots 中间,因此很难干扰您的扩展示例。修补\pgfmathfloat@uninstall也不起作用。最后,我通过编辑本地版本才消除了错误pgfplotsoldpgfsupp_pgflibraryfpu.code.tex

相关内容