![如果使用 pgfplots 和 tkz-berge (Petersen Graph),则与 Mod 不兼容](https://linux22.com/image/354322/%E5%A6%82%E6%9E%9C%E4%BD%BF%E7%94%A8%20pgfplots%20%E5%92%8C%20tkz-berge%20(Petersen%20Graph)%EF%BC%8C%E5%88%99%E4%B8%8E%20Mod%20%E4%B8%8D%E5%85%BC%E5%AE%B9%20.png)
下面的 MWE 可以正常工作,但如果pgfplots
包未注释,则会失败并显示以下错误消息。
包 PGF 数学错误:抱歉,运算“Mod”尚未在浮点单元中实现(在“Mod(0+2,5)”中)。
参考
- 图表代码来自如何在 LaTeX 中绘制图形?。
- 下面的列表文件输出是根据 2017 年 5 月 5 日 TeXLive 2016 的更新生成的。
代码:
\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
。