Как заставить работать смешивание цветов xcolor в newcommand

Как заставить работать смешивание цветов xcolor в newcommand

Я хочу задать цвет ячейки таблицы, используя аргумент, переданный в команду, но, похоже, это не дает никакого эффекта. Вот мой код:

\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}

Я ожидаю, что две ячейки с \heatmapмакросом, используемым в них, будут выдавать разные оттенки красного, но на самом деле они обе выдают полностью красный цвет. Как мне заставить команду работать при таких обстоятельствах?

решение1

Это случай, когда команда ожидает необязательный аргумент (что в данном случае не кажется уместным). Сравните разницу:

\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}

Связанный контент