myRandomInteger
在包下工作正常pgfmath
。如果包pgfplots
也加载,!Package PGF Math Error: Sorry, the operation 'random' has not yet been implemented in the floating point unit (in 'random(1,10000)'). ...
则会出现编译错误。我想使用可用random
的功能。有运气吗?pgfmath
pgfplots
\documentclass{article}
% RN. 23 November 2016
% DESCRIPTION: clash of pgfmath and pgfplots packages.
\usepackage{xparse}
\usepackage{pgfmath}
%\usepackage{pgfplots}
%\pgfplotsset{compat=1.13}
\ExplSyntaxOn
\cs_new:Npn \rn_RandomInteger:nn #1#2
{
\pgfmathparse{random(#1,#2)}
}
\NewDocumentCommand\myRandomInteger{O{1}O{100}}
{
\rn_RandomInteger:nn {#1}{#2}
\pgfmathresult
}
\ExplSyntaxOff
\begin{document}
\myRandomInteger,
\myRandomInteger,
\myRandomInteger
\myRandomInteger[1][10000],
\myRandomInteger[1][10000],
\myRandomInteger[1][10000]
\myRandomInteger[1][5],
\myRandomInteger[1][5],
\myRandomInteger[1][5]
\end{document}
答案1
这是由于fpu
库中的一个错误造成的,具体解释如下Christian Feuersänger 的回答。修改那里提供的解决方法以满足您的需要,我们可以编写以下内容以使事情正常运转。
\documentclass{article}
\usepackage{xparse}
\usepackage{pgfmath}
% adapted from ateb Christian Feuersänger: https://tex.stackexchange.com/a/330076/
\makeatletter
\let\pgfmathrandomX=\pgfmathrandom@
\usepackage{pgfplots}
\let\pgfmathrandom@=\pgfmathrandomX
\makeatother
\ExplSyntaxOn
\cs_new:Npn \rn_RandomInteger:nn #1#2
{
\pgfmathparse{random(#1,#2)}
}
\NewDocumentCommand\myRandomInteger{O{1}O{100}}
{
\rn_RandomInteger:nn {#1}{#2}
\pgfmathresult
}
\ExplSyntaxOff
\begin{document}
\myRandomInteger,
\myRandomInteger,
\myRandomInteger
\myRandomInteger[1][10000],
\myRandomInteger[1][10000],
\myRandomInteger[1][10000]
\myRandomInteger[1][5],
\myRandomInteger[1][5],
\myRandomInteger[1][5]
\end{document}