# How to change the shaded color of the \rule{…}{…} command?

To change the shaded color of the \rule{...}{...} command, one solution is

\textcolor‎{‎blue‎}{\rule{2cm}{2cm}}‎


but I want to know how can I directly change the color of this command globally?

-

You could do

\makeatletter
\let\old@rule\@rule
\def\@rule[#1]#2#3{\textcolor{blue}{\old@rule[#1]{#2}{#3}}}
\makeatother


But it may be better to instead define a new \colorrule command and use that instead, as you may find \rule is used in unexpected places so if you redefine it you may be changing more than you want to change.

If you need to override this sometimes it's probably better to use a colour such as rulecolor rather than blue that you can (re)define when needed:

\documentclass{article}

\usepackage[dvipsnames]{color}

\makeatletter
\let\old@rule\@rule
\def\@rule[#1]#2#3{\textcolor{rulecolor}{\old@rule[#1]{#2}{#3}}}
\makeatother

\definecolor{rulecolor}{named}{Blue}

\usepackage{color}

\begin{document}

\rule{1cm}{1cm}

\bigskip

\rule{.1cm}{1cm}

\bigskip

{\definecolor{rulecolor}{named}{Red}\rule{1cm}{1cm}}

\bigskip

\rule{1cm}{1cm}

\end{document}

-
 Could you please tell me where I can find the original definition of the rule command? I'm just curious about it. – Sisabe Dec 29 '12 at 16:45 I got it from latex.ltx \def\rule{\@ifnextchar[\@rule{\@rule[\z@]}} \def\@rule[#1]#2#3{% \leavevmode \hbox{% \setlength\@tempdima{#1}% \setlength\@tempdimb{#2}% \setlength\@tempdimc{#3}% \advance\@tempdimc\@tempdima \vrule\@width\@tempdimb\@height\@tempdimc\@depth-\@tempdima}} – David Carlisle Dec 29 '12 at 17:09 So where is the definition of the black color? Why doesn't this definition have any definition for the black color? – Sisabe Dec 29 '12 at 21:16 TeX itself has no knowledge of colour, rules and font cgyphs are just black and white, colour is implemented by telling the ps (or pdf or other) driver separate;y to switch the current colour) A TeX rule is not really "black" it is just a rule. – David Carlisle Dec 29 '12 at 22:15 A problem with this implementation is that if the user wants to change color to say red (from blue) for a single rule, on a case-by-case basis, the \textcolor{red}{\rule{...}{...}} no longer works. – ADP Dec 30 '12 at 4:15
show 2 more comments

I just do the following on a case by case basis.

\textcolor{blue}{\rule{2cm}{2cm}}


But if you want to define your own command, you can put this in the preamble or latter.

\newcommand{\myRule}[3]{
\textcolor{#1}{\rule{#2}{#3}}
}


And if you want to fix the color, try:

\newcommand{\myRule}[3]{
\textcolor{red}{\rule{#2}{#3}} %change red to blue, green black whatever.
}

-
 It is better to use \textcolor as in the MWE than \color using \color can badly affect the position of the rule. – David Carlisle Dec 29 '12 at 22:16 Yeah I spose. Cheers ill change it. – ADP Dec 30 '12 at 4:05