¿Cómo escribir una palabra en dos colores diferentes?

Aug 17 2020

Tengo una palabra y me gustaría escribirla en dos colores diferentes. Por lo general, habrá un espacio entre las dos \textcolosecciones.

\textcolor{sectcol}{la}\textcolor{white}{tex}

Puedo "quitar" el espacio con un negativo \hspace.

\textcolor{sectcol}{la}\hspace{-1mm}\textcolor{white}{tex}

¿Hay una mejor manera de hacer esto?

Respuestas

3 UlrikeFischer Aug 17 2020 at 16:54

el color inserta los llamados whatits, y esto evitará el interletraje:

\documentclass{article}
\usepackage{color}

\begin{document}
VA

\textcolor{red}{V}\textcolor{blue}{A}
\end{document}

No hay mucho que pueda hacer al respecto (aparte de insertar un espacio negativo). La única forma de evitarlo es usar el motor lualatex y el paquete luacolor:

\documentclass{article}
\usepackage{luacolor}

\begin{document}
VA

\textcolor{red}{V}\textcolor{blue}{A}
\end{document}

2 egreg Aug 17 2020 at 17:13

Su ejemplo no es bueno, porque no hay interletraje entre "a" y "t" en las fuentes estándar.

Si está atascado pdflatexy no puede usar LuaTeX, puede calcular manualmente el kerning necesario.

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

\ExplSyntaxOn

\NewDocumentCommand{\twocolors}{mmmm}
 {% #1 = color for the first part
  % #2 = first part
  % #3 = color for the second part
  % #4 = second part
  \egreg_twocolors:nnnn { #1 } { #2 } { #3 } { #4 }
 }

\box_new:N \l__egreg_twocolors_kern_box
\box_new:N \l__egreg_twocolors_nokern_box

\cs_new_protected:Nn \egreg_twocolors:nnnn
 {
  \hbox_set:Nn \l__egreg_twocolors_kern_box
   {
    \tl_item:nn { #2 } { -1 }
    \tl_item:nn { #4 } { 1 } % could just be \tl_head:n
   }
  \hbox_set:Nn \l__egreg_twocolors_nokern_box
   {
    \hbox:n { \tl_item:nn { #2 } { -1 } }
    \hbox:n { \tl_item:nn { #4 } { 1 } } % could just be \tl_head:n
   }
  \textcolor{#1}{#2}
  \skip_horizontal:n
   {
    \box_wd:N \l__egreg_twocolors_kern_box - \box_wd:N \l__egreg_twocolors_nokern_box
   }
  \textcolor{#3}{#4}
 }

\ExplSyntaxOff

\begin{document}

\twocolors{green!50!blue}{two}{red!30}{color}

twocolor

\makebox[0pt][l]{twocolor}\twocolors{green!50!blue}{two}{red!30}{color}
\makebox[0pt][l]{\twocolors{green!50!blue}{two}{red!30}{color}}twocolor

\twocolors{green!50!blue}{la}{red!30}{tex}

latex

\makebox[0pt][l]{latex}\twocolors{green!50!blue}{la}{red!30}{tex}
\makebox[0pt][l]{\twocolors{green!50!blue}{la}{red!30}{tex}}latex

\twocolors{green!50!blue}{V}{red!30}{A}

VA

\makebox[0pt][l]{VA}\twocolors{green!50!blue}{V}{red!30}{A}
\makebox[0pt][l]{\twocolors{green!50!blue}{V}{red!30}{A}}VA

\end{document}

Cada ejemplo tiene la comprobación de que los colores no se filtran. Sin embargo, con resoluciones pequeñas, el rasterizador puede mostrar artefactos. La siguiente imagen ha sido tomada con una resolución bastante alta.

Limitación: si el último elemento de la primera parte o el primer elemento de la segunda parte es una letra acentuada, apriételo (o ellos).