我正在尝试根据变量的内容设置颜色。请查看下面的 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}