如何超越颜色的 [0,1] 范围

如何超越颜色的 [0,1] 范围

当我在颜色中超过 !100 时,它会出现错误,但它仍然有效。简单来说,我的问题是:我该如何摆脱这个烦人的错误?

\documentclass{article}
    \usepackage[utf8]{inputenc}
    \usepackage{xcolor}
    
    \begin{document}
    
    \centering
    \fboxrule = 5pt
    \setbox0=\hbox{\begin{minipage}[h][2in][t]{3in}
        \color{white}
        \centering 
        hello
    \end{minipage}}
    \fcolorbox{orange!120}{black}{\box0}
    
    \end{document}

答案1

我认为这是不可能的,因为xcolor 文档,它在第 13 页明确指出百分比必须在区间 [0,100] 内,因此除非您以某种方式重写包,否则您总是会收到该错误。但是,该x11names选项有颜色 DarkOrange1、2 和 3,因此也许可以尝试使用这些颜色。要使用它,请在您的序言中输入\usepackage[x11names]{xcolor},然后您可以输入\fcolorbox{DarkOrange2}{black}{\box0}。如果您不喜欢这些选项,该x11names选项还有颜色 Brown1、2 和 3,我认为\Brown1它们看起来非常相似orange!120。您也可以随时查看我上面链接的 xcolor 文档以浏览不同的颜色,这是第 39-41 页。希望这对您有所帮助。

答案2

避免错误的最佳方法是不要使用这种无效值。这些混合值应该是 0 到 100 之间的整数。

错误实际上不是来自包xcolor,而是来自包的后端代码color

! Package color Error: ....

xcolor它本身会尝试避免这种超出范围的错误,但是这种情况并没有被捕获。

正如您所发现的,有办法避免错误,我们也许会添加一些东西来xcolor完全抑制它,但请记住,没有错误并不意味着您获得了“正确的”所需颜色。包如何处理超出范围的值是您无法真正控制的实现细节。

例如,目前您的解决方法给出的 rgb 值为1 0.4 0。(因此比具有 值的原始橙色略微少一点绿色1 0.5 0)。如果我更正错误并在开头截断120为, 将与 相同。这意味着您的文档颜色将在 xcolor 更新后发生变化。100orange!120orange!100

答案3

我发现您可以通过自己定义 orange!130 并使用它来解决此问题。

\colorlet{orangething}{orange!130}

这不会造成错误

rowcolor{orangething}

问题解决了

相关内容