Wie verwende ich Sonderfarben innerhalb von \special für dvi -> ps -> pdf?

Wie verwende ich Sonderfarben innerhalb von \special für dvi -> ps -> pdf?

Ich habe eine Menge alter Figuren, die die pictureUmgebung verwenden. Um die Figuren zu kompilieren, muss ich die dvi->dvips->ps2pdfToolchain verwenden.

Ich muss die Farben in diesen Bildern von rgbModellfarbe in cmykPantonefarbe ändern. Mit der Antwort indiese Frage,Ich schaffe es, die Sonderfarbe zu definieren. Mein Problem ist, dass \specialder PDF-Viewer (evince) sie schwarz anzeigt, wenn ich sie direkt im Makro verwende.

Wie weise ich dvips an, die definierte Sonderfarbe zu verwenden?

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}

Ich verwende die folgenden Befehle zum Kompilieren

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

Antwort1

Der Name Ihrer Farbe ist XC@RedSpot, und Sie können in einem Sonderzeichen keine beliebigen Wörter verwenden, normalerweise sind es Schlüsselwörter. Wenn Sie Postscript wörtlich einfügen möchten, können Sie verwenden ps: keyword.

Folgendes scheint zu funktionieren (ich habe die Vorschau und die anderen Farben entfernt, sie haben die Tests erschwert).

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

Bildbeschreibung hier eingeben

Dies scheint auch zu funktionieren (aber Sie können der Farbe dann keinen Farbton hinzufügen:

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

verwandte Informationen