
Tengo un montón de figuras antiguas que utilizan el picture
medio ambiente. Para compilar las figuras tengo que usar la dvi->dvips->ps2pdf
cadena de herramientas.
Necesito cambiar los colores en estas imágenes de rgb
modelo a cmyk
color pantone. Usando la respuesta enesta pregunta,Logro definir el color directo. Mi problema es que si lo uso directamente en la \special
macro, el visor de pdf (evince) lo muestra en negro.
¿Cómo debo decirle a dvips que use el color directo definido?
MWE
\begin{filecontents*}{spot_color.pro}
TeXDict begin
/RedSpotCMYK [0 1 0 0] def
/RedSpotSpot (RedSpot) def
/RedSpotDef RedSpotCMYK aload pop RedSpotSpot findcmykcustomcolor def
/XC@RedSpot{RedSpotDef 1.0 setcustomcolor}XCdef
end
\end{filecontents*}
\documentclass{minimal}
\usepackage[prologue]{xcolor}
\usepackage[tightpage,active,psfixbb]{preview}
\setlength\PreviewBorder{2mm}
\PreviewEnvironment{picture}
\definecolor{RedSpot}{cmyk}{0 1 0 0}
\usepackage{eepic}
\begin{document}
\setlength{\unitlength}{0.254mm}
\begin{picture}(340,225)(100,-420)
% This compiles but arrow shows black
\special{RedSpot 1}\allinethickness{0.508mm}\path(110,-395)(170,-300)\special{sh 1}\path(170,-300)(167,-302)(168,-303)(169,-304)(170,-300) % Plain Solid Arrow
% This has compilation error:
% ps2pdf spotcolor-picture.ps
% Error: /undefined in TeXcolorRedSpot
% \special{color RedSpot 1}\allinethickness{0.508mm}\path(110,-395)(170,-300)\special{sh 1}\path(170,-300)(167,-302)(168,-303)(169,-304)(170,-300) % Plain Solid Arrow
% With the CMYK model it shows correctly
% \special{color cmyk 0 1 0 0}\allinethickness{0.508mm}\path(110,-395)(170,-300)\special{sh 1}\path(170,-300)(167,-302)(168,-303)(169,-304)(170,-300) % Plain Solid Arrow
\special{color cmyk 1 0 0 0}\allinethickness{0.508mm}\path(110,-395)(380,-310)\special{color cmyk 1 0 0 0}\path(380,-310)(377,-310)(377,-311)(377,-312)(380,-310) % Plain Solid Arrow
\end{picture}
\end{document}
Utilizo los siguientes comandos para compilar
latex spotcolor-picture.tex
dvips -h tex.pro -h xcolor.pro -h spot_color.pro spotcolor-picture.dvi
ps2pdf spotcolor-picture.ps
Respuesta1
El nombre de tu color es XC@RedSpot
, y no puedes usar palabras arbitrarias dentro de un especial, normalmente son palabras clave. Si desea insertar postscript literalmente, puede utilizar el archivo ps: keyword
.
Lo siguiente parece funcionar (eliminé la vista previa y los demás colores, complicaron las pruebas).
\begin{filecontents*}{spot_color.pro}
TeXDict begin
/RedSpotCMYK [0 1 0 0] def
/RedSpotSpot (RedSpot) def
/RedSpotDef RedSpotCMYK aload pop RedSpotSpot findcmykcustomcolor def
/XC@RedSpot{RedSpotDef 1.0 setcustomcolor}XCdef
end
\end{filecontents*}
\documentclass{article}
\usepackage{eepic}
\begin{document}
\setlength{\unitlength}{1mm}
abc
\begin{picture}(10,10)
\special{ps: XC@RedSpot 1 setcolor}
\put(0,0){\line(1,1){10}}
\put(0,10){\line(1,-1){10}}
\end{picture}
\end{document}
Esto también parece funcionar (pero luego no puedes agregar un tinte al color:
\begin{picture}(10,10)
\special{color push XC@RedSpot}
\put(0,0){\line(1,1){10}}
\put(0,10){\line(1,-1){10}}
\special{color pop XC@RedSpot}
\end{picture}