Color

From Wiki
Revision as of 19:39, 28 May 2020 by Garulfo (talk | contribs)
Jump to navigation Jump to search
  • General
  • Commands


  • Source files


    ConTeXt supports several color models: RGB (typically used for screen display),CMYK (typically used for printing) as well as HSV/HSL and HWB. There is also support for spot colors (typically used for offset printing) and transparencies.

    Before you start ...

    1. It’s usually bad style to use explicit color switches in the text. It’s better to define a semantic command that takes care of the color switching. For example, instead of using \color[red]{important text}, define

    \definehighlight[important][color=red]
    

    and then use \important{important text} in the text.

    2. Colors are not enabled by default in MkII. To enable colors in MkII, use

    \setupcolors[state=start]

    3. To disable colors in a document, use

    \setupcolors[state=stop]

    Basic Usage

    To color text, use

    \color[defined-color]{ ... text ... }

    or

    \startcolor[defined-color] 
       ... text ... 
    \stopcolor

    where defined-color is a color defined using \definecolor. For example, red is one of the predefined colors. So, we can use:

    Three \color[red]{cool} cats
    

    or

    \starttext
    \startcolor[red]
    \input tufte
    \stopcolor
    \stoptext
    

    It is also possible to use RGB or CMYK or hex values to color text. The syntax for these is

    \colored[settings]{... text ...}

    where settings are the same settings as used by \definecolor. For example:


    Three \colored[r=0.1, g=0.8, b=0.8]{colorful} cats
    


    Note. There is no need to use the color commands directly. Almost all ConTeXt commands accept a color key, and you can use color=defined-color. For example,

    • To color the section titles red, use
    \setuphead[color=red]
    • To color the footnotes red, use
    \setupfootnotes[color=red]

    etc.


    Pre-defined colors

    Default pre-defined colors

    The following colors are pre-defined in ConTeXt (see colo-imp-rgb.mkiv).


    Name Color Name Color Name Color Name Color
    black   white  
    gray   lightgray   middlegray   darkgray  
    red   lightred   middlered   darkred  
    green   lightgreen   middlegreen   darkgreen  
    blue   lightblue   middleblue   darkblue  
    cyan       middlecyan   darkcyan  
    magenta       middlemagenta   darkmagenta  
    yellow       middleyellow   darkyellow  

    X11 Colors

    In addition to the above basic color, ConTeXt also includes a definition of the X11 colors. To load this list (colo-imp-xwi.mkiv), use

    \usecolors[xwi]

    This loads the following additional colors:

    Name Color Name Color Name Color Name Color
    aliceblue   antiquewhite   aquamarine   azure  
    beige   bisque   black   blanchedalmond  
    blue   blueviolet   brown   burlywood  
    cadetblue   chartreuse   chocolate   coral  
    cornflowerblue   cornsilk   cyan   darkgoldenrod  
    darkgreen   darkkhaki   darkolivegreen   darkorange  
    darkorchid   darksalmon   darkseagreen   darkslateblue  
    darkturquoise   darkviolet   deeppink   deepskyblue  
    dodgerblue   firebrick   floralwhite   forestgreen  
    gainsboro   ghostwhite   gold   goldenrod  
    green   greenyellow   honeydew   hotpink  
    indianred   ivory   khaki   lavender  
    lavenderblush   lawngreen   lemonchiffon   lightblue  
    lightcoral   lightcyan   lightgoldenrod   lightgoldenrodyellow  
    lightpink   lightsalmon   lightseagreen   lightskyblue  
    lightslateblue   lightsteelblue   lightyellow   limegreen  
    linen   magenta   maroon   mediumaquamarine  
    mediumblue   mediumorchid   mediumpurple   mediumseagreen  
    mediumslateblue   mediumspringgreen   mediumturquoise   mediumvioletred  
    midnightblue   mintcream   mistyrose   moccasin  
    navajowhite   navy   navyblue   oldlace  
    olivedrab   orange   orangered   orchid  
    palegoldenrod   palegreen   paleturquoise   palevioletred  
    papayawhip   peachpuff   peru   pink  
    plum   powderblue   purple   red  
    rosybrown   royalblue   saddlebrown   salmon  
    sandybrown   seagreen   seashell   sienna  
    skyblue   slateblue   snow   springgreen  
    steelblue   tan   thistle   tomato  
    turquoise   violet   violetred   wheat  
    white   whitesmoke   yellow   yellowgreen  

    Additional pre-defined colors

    In addition to the above, there are two other sets of pre-defined colors.

    x11 \usecolors[x11] colo-imp-x11.mkiv 658 extended Xorg color keywords (WWW), defined in hex RGB
    crayola \usecolors[crayola] colo-imp-crayola.mkiv 235 Crayola (Binney & Smith) colors
    ema \usecolors[ema] colo-imp-ema.mkiv 549 Emacs colors
    RAL \usecolors[ral] colo-imp-ral.mkiv 213 RAL color system (Deutsches Institut für Gütesicherung und Kennzeichnung)
    Solarized \usecolors[solarized] colo-imp-solarized.mkiv 16 solarized colors

    Defining New Colors

    New colors may be defined in the following ways

    Name Syntax (and Example) Explanation
    RGB color model
    \definecolor[...][r=..., g=..., b=...]

    For example,

    \definecolor[lime][r=0.75, g=1, b=0] 
    This is \color[lime]{a new color}
    that we defined
    The values for r, g, and b are floating point number between 0 and 1.
    CMYK color model
    \definecolor[...][c=.., m=.., y=.., k=..]

    For example,

    \definecolor[lime][c=0.25, m=0, y=1, k=0] 
    This is \color[lime]{a new color}
    that we defined
    The values for c, m, y and k are floating point number between 0 and 1.
    HSV/HSL color model
    \definecolor[...][h=.., s=.., v=..]

    For example,

    \definecolor[lime][h=75, s=1, v=1] 
    This is \color[lime]{a new color}
    that we defined
    The value for h (hue) is between 0 and 360; the values for s (saturation), v (value/brightness) are floating point numbers between 0 and 1.
    HWB color model
    \definecolor[...][h=.., w=.., b=..]

    For example,

    \definecolor[something][h=75, w=0.5, b=.1] 
    This is \color[something]{a new color}
    that we defined
    The value for h (hue) is between 0 and 360; the values for w (whiteness), b (blackness) are floating point numbers between 0 and 1. This mostly unknown color model is also used in CSS3/SVG.
    Hex
    \definecolor[...][x=...]

    For example,

    \definecolor[lime][x=BFFF00] 
    This is \color[lime]{a new color}
    that we defined
    The value for x is a three-byte hexadecimal number where the bytes represent the red, green, and blue values. This follows the HTML and CSS style of defining colors.
    Gray scale
    \definecolor[...][s=...]

    For example,

    \definecolor[screen][s=0.5] 
    This is \color[screen]{a new color}
    that we defined
    The value for s is a floating point number between 0 and 1, representing the grayness value (1 represents white, 0 represents black).

    Cloning existing colors

    You can clone an existing color using

    \definecolor[new-color][old-color]

    For example

    \usecolors[xwi]
    \definecolor[highlight][yellow]
    \defineframed
        [important]
        [location=low, frame=off, 
         background=color, backgroundcolor=highlight]
    
    This is a \important{important}word.
    
    \definecolor[highlight][lavenderblush]
    This is a \important{important}word.
    

    Adapting existing colors


    TODO: add details about this (See: To-Do List)


    Advanced Usage

    Changing color of entire document

    To change the main text color of the document use

    \setupcolors[textcolor=defined-color]

    For example,

    \setupcolors[textcolor=blue]
    \starttext
    text
    \stoptext
    

    Changing background color of page

    The background color of the page can be changed using

    \setupbackgrounds[page][background=color,backgroundcolor=defined-color]


    For example,

    \setuppapersize[A10]
    \setupbackgrounds[page][background=color,backgroundcolor=blue]
    
    \starttext
    text
    \stoptext
    



    Using colors in MetaPost

    A color defined in TeX is available in MetaPost using \MPcolor{...}. For example:

    \definecolor[highlight][r=0.8,g=0.8,b=0]
    \starttext
    \color[highlight]{Highlighted text in TeX}
    
    \startMPcode
    label("Highlighted text in MetaPost", origin)
        withcolor \MPcolor{highlight};
    \stopMPcode
    

    Note that \MPcolor{...} behaves similar to a color primitive in MetaPost. For example, the following is valid MetaPost code.

    color myColor; myColor = 0.5[\MPcolor{highlight}, white];


    Using colors in TikZ

    Viewing pre-defined color

    View all defined colors

    To view pre-defined colors, you can use \showcolor. For example, to see all the colors defined in colo-imp-x11.mkiv, use (output truncated for display here ...)

    \showcolor[x11]

    If you use \showcolor without any argument, all currently defined colors are shown.

    View specific defined colors

    To view the components of a defined color, you can use:

    \showcolorcomponents[color-1, color-2]

    For example,

    \showcolorcomponents[red,middlered,darkred]
    \colorcompoents{defined-color}
    \tranparencycomponents{defined-color}
    \processcolorcomponents{defined-color}
    

    For example,

    \startlines
    \colorcomponents{red}
    \transparencycomponents{red}
    \processcolorcomponents{red}
    \stoplines
    

    Testing if color is defined

    To test if a color is defined, use

    Usage:

    \doifcolor{color-name}{... if branch ... }
    \doifcolorelse{color-name}{... if branch ...}{... else branch ...}
    

    Specialized topics

    References

    • Paletton - Website to choose color palettes
    • ColorBrewer - website to choose colors for maps and graphics.
    • Tina Sutton, Bride M Whelan: The Complete Color Harmony. Rockport Publishers (2004). ISBN 978-1592530311 (recommanded in the mailing list)