当我尝试在专色(用 定义)处于活动状态时捕获当前颜色时,colorspace.sty
出现错误
! Undefined control sequence.
\color@&spot ...->\c@lor@arg {#2}\edef #1{\spc@ir
\space cs \spc@ir \space C...
l.23 \colorlet{current}{.}
梅威瑟:
\documentclass{article}
\usepackage{xcolor,colorspace}
\definespotcolor{spot}{SPOT COLOR}{0,1,0,0}
\definecolor{cmyk}{cmyk}{1,0,0,0}
\begin{document}
normal color
\color{cmyk}
cmyk color
\colorlet{current}{.}
\color{current}
current color
\color{spot}
spot color
\color{.}
period
\colorlet{current}{.}
\color{current}
current color
\colorlet{current}{.!50}
\color{current}
current color
\end{document}
我猜想当激活专色时,后台会发生一些变化,从而破坏了.
当前颜色(句点)的使用\colorlet
。\color{.}
虽然可以正常工作,甚至\colorlet{current}{.!n}
对于n
∈ {0, ..., 99} 也可以正常工作,但这.!100
不是解决方法 :-(
据我所知,PDF 输出是正确的,但我不想忽略错误消息……
是否有可能解决这个问题,或者更好地修复它?
答案1
错误提示未定义\spc@ir
。下面的代码似乎定义了它,但我不能完全确定它是否获得了正确的值(它似乎确实如此,但 Javier 也应该仔细研究一下)。输出中的 !50 与之无关,它也只发生在 xcolor 中。
\documentclass{article}
\usepackage{xcolor}
\usepackage{colorspace}
\makeatletter
{
\catcode`\&=11
\gdef\color@&spot#1#2{%
\ifdefined\spc@ir \else \spc@getir{\string\color@.}\fi
\c@lor@arg{#2}%
\edef#1{\spc@ir\space cs \spc@ir\space CS #2 sc #2 SC}}
}
\makeatother
\definespotcolor{spot}{SPOT COLOR}{0,1,0,0}
\definecolor{cmyk}{cmyk}{1,0,0,0}
\begin{document}
normal color
\color{cmyk}
cmyk color
\colorlet{current}{.}
\color{current}
current color
\colorlet{current50}{.!50}
\color{current50}
current color
\color{spot}
spot color
\colorlet{spotcurrent}{.}
\color{.}
period
\colorlet{current}{.}
\color{current}
current color
\colorlet{current}{.!50}
\color{current}
current color
\end{document}