Как использовать точечный цвет внутри \special для dvi -> ps -> pdf?

Как использовать точечный цвет внутри \special для dvi -> ps -> pdf?

У меня есть куча старых фигурок, использующих pictureсреду. Чтобы собрать фигуры, мне нужно использовать dvi->dvips->ps2pdfнабор инструментов.

Мне нужно изменить цвета на этих картинках с rgbмодельного на cmykцвет пантона. Используя ответ вэтот вопрос,Мне удается определить плашечный цвет. Проблема в том, что если я использую его напрямую в макросе \special, то просмотрщик PDF (evince) показывает его черным.

Как мне указать dvips использовать определенный плашечный цвет?

МВЭ

\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}

Я использую следующие команды для компиляции

latex spotcolor-picture.tex
dvips -h tex.pro -h xcolor.pro -h spot_color.pro spotcolor-picture.dvi
ps2pdf spotcolor-picture.ps

решение1

Имя вашего цвета — XC@RedSpot, и вы не можете использовать произвольные слова внутри специального, обычно это ключевые слова. Если вы хотите вставить постскриптум буквально, вы можете использовать ps: keyword.

Похоже, что следующее работает (я удалил предварительный просмотр и другие цвета, они усложняли тесты).

\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}

введите описание изображения здесь

Кажется, это тоже работает (но тогда вы не сможете добавить оттенок к цвету):

\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}

Связанный контент