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?
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It only takes a minute to sign up.
Sign up to join this communityYou 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}
rule
command? I'm just curious about it.
The easiest alternative is:
\textcolor{blue}{\rule{2cm}{2cm}}
If you want to define your own command, you can put this in the preamble or latter to change the color as you go.
\newcommand{\myRule}[3][black]{\textcolor{#1}{\rule{#2}{#3}}}
and use e.g.:
\myRule{1cm}{1cm}
\myRule[red]{1cm}{1cm}
\myRule[blue]{1cm}{1cm}
And if you want to fix the color throughout your document, try:
\newcommand{\myRule}[3]{%
\textcolor{red}{\rule{#2}{#3}} %change red to blue, green black whatever.
}
\textcolor
as in the MWE than \color
using \color
can badly affect the position of the rule.
Dec 29, 2012 at 22:16