根据变量定义颜色

根据变量定义颜色

我正在尝试根据变量的内容设置颜色。请查看下面的 MWE。如果是,\junk{A}文本应该是绿色背景上的红色。如果是,内容\junk不是 A,则背景应该是蓝色。但是背景始终是蓝色。我做错了什么?

beamersthememwest.sty

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerthememwe}
\def\junk#1{\def\@junk{#1}}
\junk{A}
\RequirePackage{etoolbox}
\RequirePackage{xcolor}
\definecolor{foreground}{RGB}{255, 0, 0}
\ifstrequal{\@junk}{A}{
   \definecolor{background}{RGB}{0, 128, 0}
}{
   \definecolor{background}{RGB}{0, 0, 128}
}
\setbeamercolor{normal text}{fg = foreground, bg = background}

麦格

\documentclass{beamer}
  \usepackage{lipsum}
  \usetheme{mwe}
  \junk{A}
\begin{document}
  \begin{frame}
    \frametitle{Lipsum}
    \lipsum[1]
  \end{frame}
\end{document}

答案1

您正在\@junk与进行比较A,当然会返回“false”。这是因为\ifstrequal没有执行扩展。

因此,您需要\@junk在进行比较之前进行扩展。

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerthememwe}
\def\junk#1{\def\@junk{#1}}
\junk{A}
\RequirePackage{etoolbox}
\RequirePackage{xcolor}
\definecolor{foreground}{RGB}{255, 0, 0}
\expandafter\ifstrequal\expandafter{\@junk}{A}{%
   \definecolor{background}{RGB}{0, 128, 0}%
}{%
   \definecolor{background}{RGB}{0, 0, 128}%
}
\setbeamercolor{normal text}{fg = foreground, bg = background}

在此处输入图片描述

相关内容