
En resumen, me gustaría hacer exactamente lo que se hizo en una anteriorpregunta, pero para cualquier color. O al menos entender mejor cómo funciona.
Para ser más preciso: me gustaría cambiar automáticamente el color del texto según el color de fondo (lo cual se hace en la pregunta anterior mencionada). La respuesta dada, usando un modo de fusión, es un poco "mágica" para mí: funciona para azul y blanco. Pero me gustaría saber cómo hacer lo mismo para cualquier par de colores (digamos colorA
y colorB
). Leí la documentación sobre los modos de fusión, pero no encontré ninguna fórmula o algoritmo que pudiera aplicar ingeniería inversa para reproducir la respuesta "mágica" para ningún color (o al menos entender cómo funciona).
Aquí hay un MWE:
\documentclass{beamer}
\usepackage{tikz}
\usetheme{Madrid}
\definecolor{colorA}{RGB}{255,0,0} % Red for the example but could be any other color
\definecolor{colorB}{RGB}{0,0,255} % Blue for the example but could be or any other color
% Define colorC and colorD to fit with the blend of colorA and colorB
\colorlet{colorC}{colorA!50!colorB} %
\colorlet{colorD}{colorB!50!colorA} % or maybe something like R_A + R_B, G_A + G_B, B_A + B_B
\usebackgroundtemplate{
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (0,\paperheight);
\coordinate (C) at (\paperwidth,0);
\coordinate (D) at (\paperwidth,\paperheight);
\fill[colorA] (A) -- (C) -- (B) -- cycle;
\fill[colorB](D) -- (C) -- (B) -- cycle;
\end{tikzpicture}
}
\begin{document}
\begin{frame}
\frametitle{Example}
\pgfsetblendmode{difference}% or another blend mode
\color{colorC} Could this text appear with colorA on a colorB background and with colorB on colorA background?
\end{frame}
\end{document}
Respuesta1
Esto realmente no responde a la pregunta (creo que es imposible con cualquier color determinado), pero es una forma de lograr el resultado.
\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{fadings}
\definecolor{colorA}{RGB}{200,0,0}
\definecolor{colorB}{RGB}{0,0,200}
\begin{tikzfadingfrompicture}[name=myfading]
\fill[transparent!0] (-1.5,-1) -- (-1.5,1) -- (1.5,-1) --cycle;
\node[transparent!100] {\Huge\bf Test};
\clip (-1.5,1) -- (1.5,1) -- (1.5,-1) --cycle;
\node[transparent!0] {\Huge\bf Test};
\end{tikzfadingfrompicture}
\begin{tikzfadingfrompicture}[name=myinversefading]
\fill[transparent!0] (-1.5,-1) rectangle (1.5,1);
\fill[transparent!100, path fading=myfading, fit fading=false] (-1.5,-1) rectangle (1.5,1);
\end{tikzfadingfrompicture}
\begin{document}
\begin{tikzpicture}
\fill[colorA, path fading=myfading, fit fading=false] (-1.5,-1) rectangle (1.5,1);
\fill[colorB, path fading=myinversefading, fit fading=false] (-1.5,-1) rectangle (1.5,1);
\end{tikzpicture}
\end{document}
Editar:También se puede hacer con solo uno tikzfadingfrompicture
, si se necesita anotar más en segundo plano.
\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{fadings}
\definecolor{colorA}{RGB}{200,0,0}
\definecolor{colorB}{RGB}{0,0,200}
\begin{tikzfadingfrompicture}[name=myfading]
\fill[transparent!0] (-1.5,-1) -- (-1.5,1) -- (1.5,-1) --cycle;
\node[transparent!100] {\Huge\bf Test};
\clip (-1.5,1) -- (1.5,1) -- (1.5,-1) --cycle;
\node[transparent!0] {\Huge\bf Test};
\end{tikzfadingfrompicture}
\begin{document}
\begin{tikzpicture}
\fill[colorA] (-1.5,-1) rectangle (1.5,1);
\fill[colorB, path fading=myfading, fit fading=false] (-1.5,-1) rectangle (1.5,1);
\end{tikzpicture}
\end{document}
o completamente sin él tikzfadingfrompicture
si el objetivo es solo este resultado:
\documentclass[tikz, border=1cm]{standalone}
\definecolor{colorA}{RGB}{200,0,0}
\definecolor{colorB}{RGB}{0,0,200}
\begin{document}
\begin{tikzpicture}
\fill[colorA] (-1.5,-1) -- (1.5,-1) -- (-1.5,1) --cycle;
\node[colorB] {\Huge\bf Test};
\clip (-1.5,1) -- (1.5,1) -- (1.5,-1) --cycle;
\fill[colorB] (-1.5,1) -- (1.5,1) -- (1.5,-1) --cycle;
\node[colorA] {\Huge\bf Test};
\end{tikzpicture}
\end{document}