如何在 ExerciseList 环境中改变问题的颜色?

如何在 ExerciseList 环境中改变问题的颜色?
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{nicefrac}
\usepackage{makeidx}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{xcolor}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}

\usepackage[lastexercise]{exercise}

\definecolor{DarkBlue}{rgb}{0.00,0.08,0.45} % #000086
\renewcommand{\Question}{ \color{DarkBlue}}

\begin{document}

\section{Minimal Beispiel} \vspace{2cm}

\begin{ExerciseList}
\Exercise{teest}
  \Question{Hier steht die Frage?}
  \Answer{Hier steht die Antwort}
\end{ExerciseList}

\end{document}

答案1

欢迎使用 TeX.SX!遗憾的是,此包不支持简单的样式设置,因此您需要使用一些技巧。

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{xcolor}

\usepackage[lastexercise]{exercise}

\definecolor{DarkBlue}{rgb}{0.00,0.08,0.45} % #000086

\let\OldQuestion\Question
\renewcommand{\Question}[1]{\OldQuestion{\color{DarkBlue} #1}}

% in case you also want to color the number:
\renewcommand{\QuestionNB}{{\color{DarkBlue}\arabic{Question}.\ }}

\begin{document}

\section{Minimal Beispiel} \vspace{2cm}

\begin{ExerciseList}
\Exercise{teest}
  \Question{Hier steht die Frage?}
  \Answer{Hier steht die Antwort}
\end{ExerciseList}

\end{document}

在此处输入图片描述


既然你问了,让我简单解释一下发生了什么:

该宏\Question对你传递给它的参数(大括号内的部分)进行了大量格式化操作。它的定义实际上如下(当然,不需要理解这个定义):

\def\Question{\@InitQuestion\@ifnextchar[\@@Question{\@@Question[]}}%]

现在,如果你说\renewcommand{\Question}{\color{DarkBlue}}你覆盖了所有这些定义,格式就会丢失。相反,你会得到一个你可能没有想到的相当奇怪的输出。(实际上你很幸运,你根本没有得到错误。)

真正有效的是放置颜色宏在论证内部\Question\Question{\color{DarkBlue}Steht hier eine Frage?}。但当然你必须对每一个问题都这样做,我知道你想对所有问题都使用这种颜色,因此正在寻找更好的解决方案。

现在,解决方案实际上是复制原始宏,然后替换原始宏。宏的\let作用正是如此:它将旧宏的定义复制\Question到新宏,我将其称为\OldQUestion。将原始定义存储在其他地方后,我们可以安全地\Question用重新定义原始宏\OldQuestion{\color{DarkBlue} #1}。这样,我们就将颜色宏包含在\Question宏中了。部分#1代表您传递给宏的参数。我希望这个解释是可以理解的。

相关内容