Incluindo cores categóricas com \newcommand em PdfLatex

Incluindo cores categóricas com \newcommand em PdfLatex

Desejo ter uma lista de códigos de cores HTML predefinidos e convertê-los em uma variável reutilizável numerada que possa ser referenciada posteriormente. Isso é útil quando você tem um número definido de variáveis ​​ou categorias que deseja colorir em linha sem ter que lembrar o nome da definição ou criar grandes quantidades de definições e digitá-las \textcolour{colname}{text}sempre.

Definição:

cols = ['#222','#ffc','#123']

Uso:

\c1 {text in firstcolour} and then \c2{text in secondcolour}

Responder1

Podemos usar um contador em conjunto com uma macro de novo comando para gerar novos comandos no futuro que podem colorir o texto. Um exemplo simples é dado abaixo:

%define colours pre document 

\newcounter{cnt}
\newcommand{\cdef}[1]{%
 \stepcounter{cnt}%
\xglobal \definecolor{#1}{HTML}{#1}
\expandafter\newcommand\csname c\Roman{cnt}\endcsname{\textcolor{#1}}%
}


%start the main body
\begin{document}



% Define list of colours to run here, reference with \cI \cII \cIII etc... 
\cdef{00CCFF}
\cdef{99CC99}


%write away within the document
\cI {test c1} and then \cII{test c2}

Isso produz o seguinte:

insira a descrição da imagem aqui

Responder2

Você pode construir uma lista referenciada por números:

\documentclass{article}
\usepackage{xparse}
\usepackage{xcolor}

\ExplSyntaxOn
\NewDocumentCommand{\colorlist}{m}
 {
  \clist_map_inline:nn {#1}
   {
    \seq_gput_right:Nn \g_colorlist_list_seq { ##1 }
   }
 }

\NewDocumentCommand{\usecolor}{mm}
 {
  \textcolor[HTML]{ \seq_item:Nn \g_colorlist_list_seq { #1 } } { #2 }
 }

\seq_new:N \g_colorlist_list_seq

\ExplSyntaxOff

\colorlist{828282,FF0000,00FF00}

\begin{document}

\usecolor{1}{text in first color}

\usecolor{2}{text in second color}

\usecolor{3}{text in third color}

\end{document}

Observe que xcolorrequer que as cores HTML sejam fornecidas como uma sequência deseisdígitos hexadecimais, maiúsculos ou minúsculos.

insira a descrição da imagem aqui

Responder3

Você pede um comando \c.
\cjá está definido pelo kernel do LaTeX 2e para entregar uma carta com uma cedilha.
Portanto, nos exemplos abaixo, um comando \ColorNumberé definido.


Aí vem uma variação do que você forneceu como sua própria resposta:

\documentclass{article}
\usepackage{xcolor}

\makeatletter

% define colours pre document 

\newcommand\MYNAMESPACEDefinedColorTotal{0}%
\newcommand\cdef[1]{%
 \@bsphack
 \begingroup
 \@tempcnta=\MYNAMESPACEDefinedColorTotal\relax
 \advance\@tempcnta by 1\relax
 \xdef\MYNAMESPACEDefinedColorTotal{\number\@tempcnta}%
 \endgroup
 \xglobal\definecolor{%
   MYNAMESPACEDefinedColor\MYNAMESPACEDefinedColorTotal%
 }{HTML}{#1}%
 \@esphack
}

\newcommand\ColorNumber[1]{\textcolor{MYNAMESPACEDefinedColor#1}}%

\makeatother

%start the main body
\begin{document}

\cdef{00CCFF}
\cdef{99CC99}

%write away within the document
\ColorNumber{1}{test c1} and then \ColorNumber{2}{test c2}


\end{document}

insira a descrição da imagem aqui


Aí vem outra variação do que você forneceu como sua própria resposta, aqui \ColorNumbero primeiro argumento é delimitado por uma chave via #1#-notação no texto do parâmetro - isso está mais próximo da notação que você solicitou em sua pergunta:

\documentclass{article}
\usepackage{xcolor}

\makeatletter

% define colours pre document 

\newcommand\MYNAMESPACEDefinedColorTotal{0}%
\newcommand\cdef[1]{%
 \@bsphack
 \begingroup
 \@tempcnta=\MYNAMESPACEDefinedColorTotal\relax
 \advance\@tempcnta by 1\relax
 \xdef\MYNAMESPACEDefinedColorTotal{\number\@tempcnta}%
 \endgroup
 \xglobal\definecolor{%
   MYNAMESPACEDefinedColor\MYNAMESPACEDefinedColorTotal%
 }{HTML}{#1}%
 \@esphack
}

\newcommand\ColorNumber{}%
\def\ColorNumber#1#{\textcolor{MYNAMESPACEDefinedColor#1}}%

\makeatother

%start the main body
\begin{document}

\cdef{00CCFF}
\cdef{99CC99}

%write away within the document
\ColorNumber1{test c1} and then \ColorNumber2{test c2}


\end{document}

insira a descrição da imagem aqui


Aí vem mais uma variação em que os espaços à direita do número são removidos:

\documentclass{article}
\usepackage{xcolor}

\makeatletter
%%=============================================================================
%% Paraphernalia:
%%    \UD@firstoftwo, \UD@secondoftwo,\UD@CheckWhetherNull,
%%=============================================================================
\newcommand\UD@firstoftwo[2]{#1}%
\newcommand\UD@secondoftwo[2]{#2}%
%%-----------------------------------------------------------------------------
%% Check whether argument is empty:
%%.............................................................................
%% \UD@CheckWhetherNull{<Argument which is to be checked>}%
%%                     {<Tokens to be delivered in case that argument
%%                       which is to be checked is empty>}%
%%                     {<Tokens to be delivered in case that argument
%%                       which is to be checked is not empty>}%
%%
%% The gist of this macro comes from Robert R. Schneck's \ifempty-macro:
%% <https://groups.google.com/forum/#!original/comp.text.tex/kuOEIQIrElc/lUg37FmhA74J>
\newcommand\UD@CheckWhetherNull[1]{%
  \romannumeral0\expandafter\UD@secondoftwo\string{\expandafter
  \UD@secondoftwo\expandafter{\expandafter{\string#1}\expandafter
  \UD@secondoftwo\string}\expandafter\UD@firstoftwo\expandafter{\expandafter
  \UD@secondoftwo\string}\expandafter\expandafter\UD@firstoftwo{ }{}%
  \UD@secondoftwo}{\expandafter\expandafter\UD@firstoftwo{ }{}\UD@firstoftwo}%
}%
%%-----------------------------------------------------------------------------
%% \UD@RemoveTrailingSpaces{<argument>} removes trailing spaces from <argument>.
%% !!!! <argument> must not contain the token \UD@seldom !!!!
%%.............................................................................
\begingroup
\newcommand\UD@RemoveTrailingSpaces[1]{%
  \endgroup
  \newcommand\UD@RemoveTrailingSpaces[1]{%
    \romannumeral0%
    \UD@trimtrailspaceloop.##1\UD@seldom#1\UD@seldom\UD@seldom#1{.##1}%
  }%
  \newcommand\UD@trimtrailspaceloop{}%
  \long\def\UD@trimtrailspaceloop##1#1\UD@seldom##2\UD@seldom#1##3{%
    \UD@CheckWhetherNull{##2}{%
      \UD@firstoftwo{ }##3%
    }{%
      \UD@trimtrailspaceloop##1\UD@seldom#1\UD@seldom\UD@seldom#1{##1}%
    }%
  }%
}%
\UD@RemoveTrailingSpaces{ }%

% define colours pre document 

\newcommand\MYNAMESPACEDefinedColorTotal{0}%
\newcommand\cdef[1]{%
 \@bsphack
 \begingroup
 \@tempcnta=\MYNAMESPACEDefinedColorTotal\relax
 \advance\@tempcnta by 1\relax
 \xdef\MYNAMESPACEDefinedColorTotal{\number\@tempcnta}%
 \endgroup
 \xglobal\definecolor{%
   MYNAMESPACEDefinedColor\MYNAMESPACEDefinedColorTotal%
 }{HTML}{#1}%
 \@esphack
}

\newcommand\ColorNumber{}%
\def\ColorNumber#1#{%
  \expandafter\expandafter\expandafter\@ColorNumber
  \expandafter\expandafter\expandafter{\UD@RemoveTrailingSpaces{#1}}%
}%
\newcommand*\@ColorNumber[1]{%
  \textcolor{MYNAMESPACEDefinedColor#1}%
}%

\makeatother

%start the main body
\begin{document}

\cdef{00CCFF}
\cdef{99CC99}

%write away within the document
\ColorNumber1{test c1} and then \ColorNumber2{test c2}

\ColorNumber 1 {test c1} and then \ColorNumber 2 {test c2}

\end{document}

insira a descrição da imagem aqui


Se a lista de cores for pequena, você poderia usar algo como \UD@PassKthArgextrair o K-ésimo elemento dessa lista e passá-lo para \textcolor- desta forma você pode chamar \textcolormesmo sem a necessidade de definir a cor via \definecolor:

\documentclass{article}
\usepackage{xcolor}%

\makeatletter
%% Code for \UD@PassKthArg
%%=============================================================================
%% Paraphernalia:
%%    \UD@firstoftwo, \UD@secondoftwo, UD@Exchange, \UD@PassFirstToSecond, 
%%    \UD@CheckWhetherNull, UD@CheckWhetherBlank
%%=============================================================================
\newcommand\UD@firstoftwo[2]{#1}%
\newcommand\UD@secondoftwo[2]{#2}%
\newcommand\UD@Exchange[2]{#2#1}%
\newcommand\UD@PassFirstToSecond[2]{#2{#1}}%
%%-----------------------------------------------------------------------------
%% Check whether argument is empty:
%%.............................................................................
%% \UD@CheckWhetherNull{<Argument which is to be checked>}%
%%                     {<Tokens to be delivered in case that argument
%%                       which is to be checked is empty>}%
%%                     {<Tokens to be delivered in case that argument
%%                       which is to be checked is not empty>}%
%%
%% The gist of this macro comes from Robert R. Schneck's \ifempty-macro:
%% <https://groups.google.com/forum/#!original/comp.text.tex/kuOEIQIrElc/lUg37FmhA74J>
\newcommand\UD@CheckWhetherNull[1]{%
  \romannumeral0\expandafter\UD@secondoftwo\string{\expandafter
  \UD@secondoftwo\expandafter{\expandafter{\string#1}\expandafter
  \UD@secondoftwo\string}\expandafter\UD@firstoftwo\expandafter{\expandafter
  \UD@secondoftwo\string}\expandafter\expandafter\UD@firstoftwo{ }{}%
  \UD@secondoftwo}{\expandafter\expandafter\UD@firstoftwo{ }{}\UD@firstoftwo}%
}%
%%------------------------------------------------------------------------------
%% Check whether argument is blank (empty or only spaces):
%%..............................................................................
%% -- Take advantage of the fact that TeX discards space tokens when
%%    "fetching" _un_delimited arguments: --
%% \UD@CheckWhetherBlank{<Argument which is to be checked>}%
%%                      {<Tokens to be delivered in case that
%%                        argument which is to be checked is blank>}%
%%                      {<Tokens to be delivered in case that argument
%%                        which is to be checked is not blank}%
\newcommand\UD@CheckWhetherBlank[1]{%
  \romannumeral\expandafter\expandafter\expandafter\UD@secondoftwo
  \expandafter\UD@CheckWhetherNull\expandafter{\UD@firstoftwo#1{}.}%
}%
%%=============================================================================
%% Put K-th inner undelimited argument behind sequence of tokens:
%%
%% \UD@PassKthArg{<tokens>}{<ErrorTokens>}{<integer K>}{<list of undelimited args>} 
%% 
%% In case there is no K-th argument in <list of indelimited args> : 
%%   Does deliver <ErrorTokens>.
%% In case there is a K-th argument in <list of indelimited args> : 
%%   Does place that K-th argument with one level of braces removed behind <tokens>.
%%
%% Examples:
%%
%%   \UD@PassKthArg{ELEMENT-}{ERROR}{0}{ABCDE} yields: ERROR
%%
%%   \UD@PassKthArg{ELEMENT-}{ERROR}{3}{ABCDE} yields:  ELEMENT-C
%%
%%   \UD@PassKthArg{ELEMENT-}{ERROR}{3}{AB{CD}E} yields:  ELEMENT-CD
%%
%%   \UD@PassKthArg{ELEMENT-}{ERROR}{4}{{001}{002}{003}{004}{005}} yields: ELEMENT-004
%%
%%   \UD@PassKthArg{ELEMENT-}{ERROR}{6}{{001}{002}{003}} yields: ERROR
%% 
%%=============================================================================
\newcommand\UD@PassKthArg[3]{%
  \romannumeral0%
  % #1: <Tokens>
  % #2: <ErrorTokens>
  % #3: <integer number K>
  \expandafter\UD@PassKthArgCheck
  \expandafter{\romannumeral\number\number#3 000}{#1}{#2}%
}%
\newcommand\UD@PassKthArgCheck[4]{%
  % #1 - <K letters m>
  % #2 - <Tokens>
  % #3 - <ErrorTokens>
  % #4 - <list>
  \UD@CheckWhetherNull{#1}{ #3}{%
    \expandafter\UD@PassKthArgLoop\expandafter{\UD@firstoftwo{}#1}{#4}{#2}{#3}%
  }%
}%
\newcommand\UD@PassKthArgLoop[4]{%
  % #1 - <letters m in an amount that corresponds to the number
  %       of arguments trailing the to-be-kept argument>
  % #2 - <list>
  % #3 - <Tokens>
  % #4 - <ErrorTokens>
  \UD@CheckWhetherBlank{#2}{ #4}{%
    \UD@CheckWhetherNull{#1}{%
      \UD@ExtractFirstArgLoop{#2\UD@SelDOm}{#3}%
    }{%
      \expandafter\UD@PassFirstToSecond\expandafter{\UD@firstoftwo{}#2}%
      {\expandafter\UD@PassKthArgLoop\expandafter{\UD@firstoftwo{}#1}}%
      {#3}{#4}%
    }%
  }%
}%
\newcommand\UD@RemoveTillUD@SelDOm{}%
\long\def\UD@RemoveTillUD@SelDOm#1#2\UD@SelDOm{{#1}}%
\newcommand\UD@ExtractFirstArgLoop[2]{%
  \expandafter\UD@CheckWhetherNull\expandafter{\UD@firstoftwo{}#1}%
  {\UD@Exchange#1{ #2}}%
  {\expandafter\UD@ExtractFirstArgLoop\expandafter{\UD@RemoveTillUD@SelDOm#1}{#2}}%
}%
%% End of code for \UD@PassKthArg

\newcommand\ColorNumber[1]{%
  \expandafter\UD@PassFirstToSecond\expandafter{\Mycolorlist}{\UD@PassKthArg{\textcolor}{%
    \GenericError{%
      \@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\space\space\space
    }{%
       Error with command \string\ColorNumber: \string\Mycolorlist\space does not have a%
       \MessageBreak color-specification-element #1%
    }{Color will not be changed.}{Specify the number of an element which is in the list.}%
  }{#1}}%
}%
\makeatother

\definecolor{myweirdcolor}{HTML}{800080}% PURPLE

% List of color-specifications.
% Each specification must be nested in braces.
% You are not bound to the HTML-Hex-Code-model.

\newcommand\Mycolorlist{%
  {[HTML]{00CCFF}}% CYAN
  {[HTML]{C0C0C0}}% SILVER
  {[HTML]{808080}}% GRAY
  {[HTML]{000000}}% BLACK
  {[rgb]{1,0,0}}  % RED
  {[HTML]{800000}}% MAROON
  {[HTML]{FFFF00}}% YELLOW
  {[HTML]{808000}}% OLIVE
  {[HTML]{00FF00}}% LIME
  {[HTML]{008000}}% GREEN
  {[HTML]{00FFFF}}% AQUA
  {[HTML]{008080}}% TEAL
  {[HTML]{0000FF}}% BLUE
  {[HTML]{000080}}% NAVY
  {[HTML]{FF00FF}}% FUCHSIA
  {{myweirdcolor}}% PURPLE
}

\begin{document}
\noindent
\ColorNumber{1}{test C1 - CYAN}\\
\ColorNumber{2}{test C2 - SILVER}\\
\ColorNumber{3}{test C3 - GRAY}\\
\ColorNumber{4}{test C4 - BLACK}\\
\ColorNumber{5}{test C5 - RED}\\
\ColorNumber{6}{test C6 - MAROON}\\
\ColorNumber{7}{test C7 - YELLOW}\\
\ColorNumber{8}{test C8 - OLIVE}\\
\ColorNumber{9}{test C9 - LIME}\\
\ColorNumber{10}{test C10 - GREEN}\\
\ColorNumber{11}{test C11 - AQUA}\\
\ColorNumber{12}{test C12 - TEAL}\\
\ColorNumber{13}{test C13 - BLUE}\\
\ColorNumber{14}{test C14 - NAVY}\\
\ColorNumber{15}{test C15 - FUCHSIA}\\
\ColorNumber{16}{test C16 - PURPLE}\\
%\ColorNumber{17}{test C17 - ERROR}\\
%\ColorNumber{0}{test C0 - ERROR}
\end{document}

insira a descrição da imagem aqui


Combinando a abordagem acima, onde os espaços finais atrás do número são removidos, com a abordagem onde \UD@PassKthArgé usado para extrair o K-ésimo elemento produz:

\documentclass{article}
\usepackage{xcolor}%

\makeatletter
%% Code for \UD@PassKthArg
%%=============================================================================
%% Paraphernalia:
%%    \UD@firstoftwo, \UD@secondoftwo, UD@Exchange, \UD@PassFirstToSecond, 
%%    \UD@CheckWhetherNull, UD@CheckWhetherBlank
%%=============================================================================
\newcommand\UD@firstoftwo[2]{#1}%
\newcommand\UD@secondoftwo[2]{#2}%
\newcommand\UD@Exchange[2]{#2#1}%
\newcommand\UD@PassFirstToSecond[2]{#2{#1}}%
%%-----------------------------------------------------------------------------
%% Check whether argument is empty:
%%.............................................................................
%% \UD@CheckWhetherNull{<Argument which is to be checked>}%
%%                     {<Tokens to be delivered in case that argument
%%                       which is to be checked is empty>}%
%%                     {<Tokens to be delivered in case that argument
%%                       which is to be checked is not empty>}%
%%
%% The gist of this macro comes from Robert R. Schneck's \ifempty-macro:
%% <https://groups.google.com/forum/#!original/comp.text.tex/kuOEIQIrElc/lUg37FmhA74J>
\newcommand\UD@CheckWhetherNull[1]{%
  \romannumeral0\expandafter\UD@secondoftwo\string{\expandafter
  \UD@secondoftwo\expandafter{\expandafter{\string#1}\expandafter
  \UD@secondoftwo\string}\expandafter\UD@firstoftwo\expandafter{\expandafter
  \UD@secondoftwo\string}\expandafter\expandafter\UD@firstoftwo{ }{}%
  \UD@secondoftwo}{\expandafter\expandafter\UD@firstoftwo{ }{}\UD@firstoftwo}%
}%
%%------------------------------------------------------------------------------
%% Check whether argument is blank (empty or only spaces):
%%..............................................................................
%% -- Take advantage of the fact that TeX discards space tokens when
%%    "fetching" _un_delimited arguments: --
%% \UD@CheckWhetherBlank{<Argument which is to be checked>}%
%%                      {<Tokens to be delivered in case that
%%                        argument which is to be checked is blank>}%
%%                      {<Tokens to be delivered in case that argument
%%                        which is to be checked is not blank}%
\newcommand\UD@CheckWhetherBlank[1]{%
  \romannumeral\expandafter\expandafter\expandafter\UD@secondoftwo
  \expandafter\UD@CheckWhetherNull\expandafter{\UD@firstoftwo#1{}.}%
}%
%%==============================================================================
%% Put K-th inner undelimited argument behind sequence of tokens:
%%
%% \UD@PassKthArg{<tokens>}{<ErrorTokens>}{<integer K>}{<list of undelimited args>} 
%% 
%% In case there is no K-th argument in <list of indelimited args> : 
%%   Does deliver <ErrorTokens>.
%% In case there is a K-th argument in <list of indelimited args> : 
%%   Does place that K-th argument with one level of braces removed behind <tokens>.
%%
%% Examples:
%%
%%   \UD@PassKthArg{ELEMENT-}{ERROR}{0}{ABCDE} yields: ERROR
%%
%%   \UD@PassKthArg{ELEMENT-}{ERROR}{3}{ABCDE} yields:  ELEMENT-C
%%
%%   \UD@PassKthArg{ELEMENT-}{ERROR}{3}{AB{CD}E} yields:  ELEMENT-CD
%%
%%   \UD@PassKthArg{ELEMENT-}{ERROR}{4}{{001}{002}{003}{004}{005}} yields: ELEMENT-004
%%
%%   \UD@PassKthArg{ELEMENT-}{ERROR}{6}{{001}{002}{003}} yields: ERROR
%% 
%%=============================================================================
\newcommand\UD@PassKthArg[3]{%
  \romannumeral0%
  % #1: <Tokens>
  % #2: <ErrorTokens>
  % #3: <integer number K>
  \expandafter\UD@PassKthArgCheck
  \expandafter{\romannumeral\number\number#3 000}{#1}{#2}%
}%
\newcommand\UD@PassKthArgCheck[4]{%
  % #1 - <K letters m>
  % #2 - <Tokens>
  % #3 - <ErrorTokens>
  % #4 - <list>
  \UD@CheckWhetherNull{#1}{ #3}{%
    \expandafter\UD@PassKthArgLoop\expandafter{\UD@firstoftwo{}#1}{#4}{#2}{#3}%
  }%
}%
\newcommand\UD@PassKthArgLoop[4]{%
  % #1 - <letters m in an amount that corresponds to the number
  %       of arguments trailing the to-be-kept argument>
  % #2 - <list>
  % #3 - <Tokens>
  % #4 - <ErrorTokens>
  \UD@CheckWhetherBlank{#2}{ #4}{%
    \UD@CheckWhetherNull{#1}{%
      \UD@ExtractFirstArgLoop{#2\UD@SelDOm}{#3}%
    }{%
      \expandafter\UD@PassFirstToSecond\expandafter{\UD@firstoftwo{}#2}%
      {\expandafter\UD@PassKthArgLoop\expandafter{\UD@firstoftwo{}#1}}%
      {#3}{#4}%
    }%
  }%
}%
\newcommand\UD@RemoveTillUD@SelDOm{}%
\long\def\UD@RemoveTillUD@SelDOm#1#2\UD@SelDOm{{#1}}%
\newcommand\UD@ExtractFirstArgLoop[2]{%
  \expandafter\UD@CheckWhetherNull\expandafter{\UD@firstoftwo{}#1}%
  {\UD@Exchange#1{ #2}}%
  {\expandafter\UD@ExtractFirstArgLoop\expandafter{\UD@RemoveTillUD@SelDOm#1}{#2}}%
}%
%% End of code for \UD@PassKthArg
%%==============================================================================
%% \UD@RemoveTrailingSpaces{<argument>} removes trailing spaces from <argument>.
%% !!!! <argument> must not contain the token \UD@seldom !!!!
%%==============================================================================
\begingroup
\newcommand\UD@RemoveTrailingSpaces[1]{%
  \endgroup
  \newcommand\UD@RemoveTrailingSpaces[1]{%
    \romannumeral0%
    \UD@trimtrailspaceloop.##1\UD@seldom#1\UD@seldom\UD@seldom#1{.##1}%
  }%
  \newcommand\UD@trimtrailspaceloop{}%
  \long\def\UD@trimtrailspaceloop##1#1\UD@seldom##2\UD@seldom#1##3{%
    \UD@CheckWhetherNull{##2}{%
      \UD@firstoftwo{ }##3%
    }{%
      \UD@trimtrailspaceloop##1\UD@seldom#1\UD@seldom\UD@seldom#1{##1}%
    }%
  }%
}%
\UD@RemoveTrailingSpaces{ }%
%% End of code for \UD@RemoveTrailingSpaces

\newcommand\ColorNumber{}%
\def\ColorNumber#1#{%
  \expandafter\expandafter\expandafter\@ColorNumber
  \expandafter\expandafter\expandafter{\UD@RemoveTrailingSpaces{#1}}%
}%
\newcommand\@ColorNumber[1]{%
  \expandafter\UD@PassFirstToSecond\expandafter{\Mycolorlist}{\UD@PassKthArg{\textcolor}{%
    \GenericError{%
      \@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\space\space\space
    }{%
       Error with command \string\ColorNumber: \string\Mycolorlist\space does not have a%
       \MessageBreak color-specification-element #1%
    }{Color will not be changed.}{Specify the number of an element which is in the list.}%
  }{#1}}%
}%
\makeatother

\definecolor{myweirdcolor}{HTML}{800080}% PURPLE

% List of color-specifications.
% Each specification must be nested in braces.
% You are not bound to the HTML-Hex-Code-model.

\newcommand\Mycolorlist{%
  {[HTML]{00CCFF}}% CYAN
  {[HTML]{C0C0C0}}% SILVER
  {[HTML]{808080}}% GRAY
  {[HTML]{000000}}% BLACK
  {[rgb]{1,0,0}}  % RED
  {[HTML]{800000}}% MAROON
  {[HTML]{FFFF00}}% YELLOW
  {[HTML]{808000}}% OLIVE
  {[HTML]{00FF00}}% LIME
  {[HTML]{008000}}% GREEN
  {[HTML]{00FFFF}}% AQUA
  {[HTML]{008080}}% TEAL
  {[HTML]{0000FF}}% BLUE
  {[HTML]{000080}}% NAVY
  {[HTML]{FF00FF}}% FUCHSIA
  {{myweirdcolor}}% PURPLE
}

\begin{document}
\noindent
\ColorNumber1{test C1 - CYAN}\\
\ColorNumber2{test C2 - SILVER}\\
\ColorNumber3{test C3 - GRAY}\\
\ColorNumber4{test C4 - BLACK}\\
\ColorNumber5{test C5 - RED}\\
\ColorNumber6{test C6 - MAROON}\\
\ColorNumber7{test C7 - YELLOW}\\
\ColorNumber8{test C8 - OLIVE}\\
\ColorNumber9{test C9 - LIME}\\
\ColorNumber10{test C10 - GREEN}\\
\ColorNumber11{test C11 - AQUA}\\
\ColorNumber12{test C12 - TEAL}\\
\ColorNumber13{test C13 - BLUE}\\
\ColorNumber14{test C14 - NAVY}\\
\ColorNumber15{test C15 - FUCHSIA}\\
\ColorNumber16{test C16 - PURPLE}\\
%\ColorNumber17{test C17 - ERROR}\\
%\ColorNumber0{test C0 - ERROR}
\end{document}

insira a descrição da imagem aqui

Responder4

Eu usaria o pacote xColors para isso:

\usepackage{xcolor}

%Color palette that looks great
\definecolor{xRed}{HTML}{B51E0E}    %[0.71 0.12 0.06]
\definecolor{xGreen}{HTML}{6DB565}  %[0.23 0.51 0.20]
\definecolor{xBlue}{HTML}{074E82}   %[0.03 0.31 0.51]
\definecolor{xBrown}{HTML}{9C5C19}  %[0.61 0.36 0.10]
\definecolor{xYellow}{HTML}{F7B538} %[0.97 0.71 0.22]
\definecolor{xOrange}{HTML}{EC6D00} %[0.93 0.43 0.00]
\definecolor{xCyan}{HTML}{0094AC}   %[0.00 0.58 0.68]
\definecolor{xPurple}{HTML}{8711A1} %[0.53 0.07 0.64]
\definecolor{xPink}{HTML}{D30580}   %[0.83 0.02 0.51]

E então use assim:

\textcolor{xCyan}{cyan}

Ah, e aliás, ao colorir o texto geralmente fica melhor em negrito:

\textcolor{xCyan}{\textbf{cyan}}

informação relacionada