使用 amsthm 包中的定理注释更改定理颜色

使用 amsthm 包中的定理注释更改定理颜色

在 amsthm 包中定义新的定理样式时,可以指定所称的(根据http://web.mat.bham.ac.uk/RWKaye/latex/thm.pdf) 自定义头部规范。在其中,您可以使用“#3”将参数指定的内容打印到屏幕上。在我的例子中,我想使用参数作为开关。更具体地说,我正在编写一份包含一系列数学问题的文档,并希望有一种简单的方法来查看我的学生已经完成了哪些问题。我想使用 newthmstyle 来实现它,以便它像这样工作:

\begin{problem}
 blah blah
\end{problem} %prints a regular problem

\begin{problem}[done]
 blah blah
\end{problem} %prints a problem, which colors the "problem 5:" part green

我知道如何进行着色,它已经过测试并且有效。我不知道如何让开关工作。如果它更容易,那么它可能是一个数字,而不是“完成”来进行切换。

我认为应该有一种方法可以做到这一点,但我对 Latex 的语义不够精通,无法让它发挥作用。我尝试了一些 if 语句,但无济于事。有什么想法吗?

答案1

通过\ifstrequal此,etoolbox您可以测试#3以获得所需的问题头部颜色。

\documentclass{article}
\usepackage{amsmath, amsthm}
\usepackage{etoolbox}
\usepackage{xcolor}

\newtheoremstyle{mystyle}% Name of the style
  {\topsep}% Space above
  {\topsep}% Space below
  {}% Body font
  {0pt}% Indent amount
  {\bfseries}% Theorem head font
  {}% Punctuation after theorem head (in this case empty because defined in the head spec)
  {.5em}% Space after theorem head
  {\ifstrequal{#3}{done}{\color{green}}{}\thmname{#1}\thmnumber{ #2:}}% Theorem head spec
\theoremstyle{mystyle}
\newtheorem{problem}{Problem}

\begin{document}
\begin{problem}
  blah blah
\end{problem} %prints a regular problem

\begin{problem}[done]
  blah blah
\end{problem} %prints a problem, which colors the "problem 5:" part green    

\begin{problem}
  blah blah
\end{problem} %prints a regular problem

\begin{problem}[done]
  blah blah
\end{problem} %prints a problem, which colors the "problem 5:" part green    
\end{document}

enter image description here

相关内容