包颜色错误:参数“1.01125”不在范围[0,1]内

包颜色错误:参数“1.01125”不在范围[0,1]内

我一直在写一篇论文,并使用 tikz 制作一些图表。然后,当我们决定提交给某个会议并使用他们提供的样式文件时,图表就坏了(编译失败)。我剖析了他们的样式文件,发现行“\p@=1bp”是导致问题的原因,但我不知道那行是什么以及如何解决它。简单地删除该行并不是解决方案,因为我无法控制他们将用于最终可发布版本的样式文件。

此版本可以正常运行:

\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \fill [blue!25] (1,1) rectangle (2,2);
\end{tikzpicture}
\end{document}

此版本会产生标题中提到的错误:

\documentclass{minimal}
\makeatletter
\p@=1bp
\makeatother
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \fill [blue!25] (1,1) rectangle (2,2);
\end{tikzpicture}
\end{document}

奇怪的是,当我删除“blue”后的“!25”时,它又起作用了:

\documentclass{minimal}
\makeatletter
\p@=1bp
\makeatother
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \fill [blue] (1,1) rectangle (2,2);
\end{tikzpicture}
\end{document}

我正在使用 pdflatex:pdfTeX 3.14159265-2.6-1.40.17(TeX Live 2016/MacPorts 2016_4)。

我正在寻找一种无需修改样式文件即可指定颜色“蓝色!25”的方法。也就是说,在序言中使用以下代码片段:

\makeatletter
\p@=1bp
\makeatother

谢谢。

答案1

\p@最初定义为1.0pt。在\p@=1bp其具有值之后1.00374pt。我建议添加以下行

\makeatletter
\p@=1pt
\makeatother

加载后返回前言dgruyter_NEW.sty

编辑:该问题在最新版本中仍然存在de Gruyter 的 LaTeX 软件包dgruyter.sty。 (标识自己为2016/09/28 v1.82 De Gruyter layout)中的第一行之一仍然是\p@=1bp\relax,这导致了原始帖子中描述的错误。

答案2

实际上我在提供的测试文件上没有得到任何错误

\makeatletter
\p@=1bp
\makeatother

是完全错误的,并且会破坏几乎所有的乳胶算术,不仅如此color,还有graphics包,包中的算术calc,,tabularx.....

要了解原因,请注意 Latex 没有浮点寄存器,只有长度或整数,所以如果你正在混合颜色并需要将 .3 乘以 2,通常的方式是通过长度

\dimen@=.3\p@

现在\dimen@是 .3pt

\dimen@=2\dimen@

现在是 .6pt

\edef\result{\strip@pt\dimen@}
\show\result

删除pt

> \result=macro:
->0.6.

但现在重新定义\p@1bp相同的计算结果

> \result=macro:
->0.60223.

因此即使是最简单的算术运算也会得出错误的结果。

相关内容