Comment écrire un mot de deux couleurs différentes?
J'ai un mot et j'aimerais l'écrire en deux couleurs différentes. Habituellement, il y aura un espace entre les deux \textcolo
sections
\textcolor{sectcol}{la}\textcolor{white}{tex}
Je peux "supprimer" l'espace avec un négatif \hspace
.
\textcolor{sectcol}{la}\hspace{-1mm}\textcolor{white}{tex}
Y a-t-il une meilleure manière de faire cela?
Réponses
les inserts de couleur soi-disant whatits
, et cela empêchera le crénage:
\documentclass{article}
\usepackage{color}
\begin{document}
VA
\textcolor{red}{V}\textcolor{blue}{A}
\end{document}
Vous ne pouvez pas faire grand-chose à ce sujet (à part insérer un espace négatif). Le seul moyen de l'éviter vraiment est d'utiliser le moteur lualatex et le package luacolor:
\documentclass{article}
\usepackage{luacolor}
\begin{document}
VA
\textcolor{red}{V}\textcolor{blue}{A}
\end{document}
Votre exemple n'est pas bon, car il n'y a pas de crénage entre «a» et «t» dans les polices standard.
Si vous êtes bloqué pdflatex
et que vous ne pouvez pas utiliser LuaTeX, vous pouvez calculer manuellement le crénage nécessaire.
\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}
Chaque exemple vérifie que les couleurs ne fuient pas. Cependant, à de petites résolutions, le rasterer peut afficher des artefacts. L'image ci-dessous a été prise à une résolution assez élevée.
Limitation: si le dernier élément de la première partie ou le premier élément de la seconde partie est une lettre accentuée, accollez-la (ou les).