Cómo hacer que la mezcla de colores xcolor funcione en un nuevo comando

Cómo hacer que la mezcla de colores xcolor funcione en un nuevo comando

Quiero establecer el color de una celda de la tabla usando el argumento pasado a un comando, pero no parece tener ningún efecto. Aquí está mi código:

\PassOptionsToPackage{table}{xcolor}
\documentclass{beamer}

\usepackage{xcolor}

\newcommand*{\heatmap}[1][]{\cellcolor{red!#1} {#1}}
\begin{document}

\section{Background}

\begin{frame}
    \frametitle{The size and type of repeats}
    \begin{tabular}{lcccc}
        Species & genomes & G/C & A/T & Di-\\
        Widget & 7 & \heatmap{97}\% & \heatmap{3}\% & 0\%\\
    \end{tabular}
\end{frame}

\end{document}

Mi expectativa es que las dos celdas con la \heatmapmacro utilizada en ellas salgan con diferentes tonos de rojo en ese momento, pero, de hecho, ambas salen completamente rojas. ¿Cómo puedo hacer que el comando funcione en estas circunstancias?

Respuesta1

Se trata de hacer que el comando espere un argumento opcional (que no parece apropiado en este caso). Compara la diferencia:

\PassOptionsToPackage{table}{xcolor}
\documentclass{beamer}

\usepackage{xcolor}

\newcommand*{\heatmap}[1][]{\cellcolor{red!#1} {#1}}
\newcommand*{\xheatmap}[1]{\cellcolor{red!#1} {#1}}
\begin{document}

\section{Background}

\begin{frame}
    \frametitle{The size and type of repeats}
    \begin{tabular}{lcccc}
        Species & genomes & G/C & A/T & Di-\\
        Widget & 7 & \heatmap[97]\% & \heatmap[30]\% & 0\%\\
        Widget & 7 & \heatmap[57]\% & \heatmap[30!blue!30]\% & 0\%\\
        Widget & 7 & \xheatmap{97}\% & \xheatmap{30}\% & 0\%\\
    \end{tabular}
\end{frame}

\end{document}

información relacionada