
Ich habe eine Menge alter Figuren, die die picture
Umgebung verwenden. Um die Figuren zu kompilieren, muss ich die dvi->dvips->ps2pdf
Toolchain verwenden.
Ich muss die Farben in diesen Bildern von rgb
Modellfarbe in cmyk
Pantonefarbe ändern. Mit der Antwort indiese Frage,Ich schaffe es, die Sonderfarbe zu definieren. Mein Problem ist, dass \special
der 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}
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}