[Tikzdevice-bugs] Context and tikz?

mat matthieu.stigler at gmail.com
Wed Apr 20 01:13:10 CEST 2011


Le 19. 04. 11 23:57, Charlie Sharpsteen a écrit :
> On Tue, Apr 19, 2011 at 2:13 PM, mat <matthieu.stigler at gmail.com 
> <mailto:matthieu.stigler at gmail.com>> wrote:
>
>     Charlie
>
>     Wonderful!! It's exactly what I needed! And you did it so fast,
>     congratulations!
>
>
> Just make sure you double-check that the text in your plot still looks 
> OK as I didn't have time to implement proper calculations of text size 
> for `metapost`---the device still falls back to using LaTeX which does 
> things differently from ConTeXt.
>
>     The way you did it is really nice, since it seems the color def
>     are not rewritten each time, which allows one to set them
>     "globally". Now for the pentone color: as I understood it, the
>     most standard case will be one spot color, used with different
>     "tints" (ie percentage). For my case for example, it implied this:
>     \definecolor[PantoneBlue][c=1, m=0.58,y=0,k=0.29]
>
>     \definespotcolor[PantoneBlueHundredSpot][PantoneBlue][p=1,e=Pantone 294
>     C]
>     \definespotcolor[PantoneBlueSixtySpot][PantoneBlue][p=0.6,e=Pantone 294
>     C]
>     \definespotcolor[PantoneBlueFourtySpot][PantoneBlue][p=0.4,e=Pantone
>     294 C]
>     ....
>
>     So a function like:
>     define_metap_tint( Rname='PantoneBlueFourty', colRef='Pantone 294
>     C', tint=0.4)
>
>     could be very useful!!!
>
>
> I'll look into the tinting---I left it at a default of 1 because I 
> don't fully understand how it works and would need to read up a little 
> bit more. I think you may be able to achieve a similar effect using 
> R's transparency settings---in my experiments an object printed with 
> 100% opacity was represented in the spot color channel by a solid 
> black shape which I presume indicates a full layer of ink. An object 
> set to 60% opacity was represented in a shade of gray which I would 
> presume means that less ink is being laid down.
>
> The part I am not sure about is if setting the opacity achieves the 
> same effect as tinting the color.
>
I unfortunately do not know this...
>
>     One more remark: as the code stands now, it allows only "R color
>     names" since:
>      grDevices::col2rgb(rgb_value)
>     only accept R color names. I changed for my purpose in:
>     if ( is.character(rgb_value) ) {
>         if(rgb_value%in%colors()) {
>             rgb_value <- grDevices::col2rgb(rgb_value)
>     } else {
>           rgb_value <- grDevices::col2rgb(eval(parse(text=rgb_value))))
>     }
>     #might be wrong as I'm writing trying to remember
>
>     would something like this make sense?
>
>
> I'm not sure exactly what your code is trying to do---but feel free to 
> modify the functions any way you see fit!  The only important bit is 
> that the color definition has to accept a vector of three integers as 
> a valid input as that is what is emitted by the C code of the device. 
>  Automatically translating character strings into RGB values is just 
> a convenience for us humans.
well with actual code, color name within the plot has to be a R color 
name. However, if user defines his own, it does not work (it is 
character, but will create error with col2rgb)

>
>     Finally, the colors defs:
>
>      \definecolor
>        [Red]
>        [r=1.000,g=0.000,b=0.000]
>     did not appear in the tex file? Is this expected? Could it be made
>     automatical?
>
>
> The color definitions should get written into the tex file when 
> dev.off() is called. If you have an example of a plot where this isn't 
> happening, send it to me and I'll try to puzzle out what is going wrong.
code would be same as before:

library(tikzDevice)

metapost("try.tex")
define_metap_color("Red", 'red', 'Spot Color Red')
   op<-par(bg=11,bty="n", cex=2, mar=c(3,4,1,2)+0.1)
   x <- runif(100)
   plot(x, las=1, yaxt="n",tcl=0, ann=F, type="l", lwd=2, col="blue")
   grid(col="white", lty="solid", nx=NA, ny=NULL, lwd=2)
   lines(x, col="red", lwd=2)
   axis(1, tcl=0, labels=FALSE, col="black", lwd=1, 
at=as.Date(c("1970-01-01","2011-01-01")))
   axis(2, las=2, tick=FALSE)
   par(op)
dev.off()

does not produce the expected definitions, right?
>
>     I think as it stands the feature is already nice, so it can only
>     improve :-) And sure, adding the possibility to have spotcolors in
>     R with tikzDevice is a really nice feature, great you intend to
>     work on it!!!!!
>
>     Finally, yes I hope it will work for the printer. Would be nice to
>     find some professional but unfortunately all the graphical
>     designer we consulted have no idea of these low-levels
>     manipulation, and none could understand the "hacking" done. So we
>     can't really know until printing whether fine or not ( a big issue
>     is whether the black color should also be written with such
>     "separation" code, so that the printer put black on second
>     scale... no idea is necessary or not).
>
>
> I originally had the definition of black default to a spot color, but 
> I reversed it as I figured that it is already separated onto the K 
> channel of CMYK in the PDF.  It would be pretty easy to change back to 
> a spot color, just edit the appropriate entry in the `setTikzDefaults` 
> function in deviceUtils.R. I'm hoping that isolating colors 
> on separate channels in the PDF will be enough for a professional 
> printer to easily set up a run, but I am not a professional so I don't 
> know for sure :-)
>
>     Thanks so much!!
>
>
> You're welcome! Hope it helps with the book!
will be happy to send you the link soon!

Thanks again!!


>
> -Charlie



More information about the Tikzdevice-bugs mailing list