![使用 amsthm 包中的定理注释更改定理颜色](https://linux22.com/image/387729/%E4%BD%BF%E7%94%A8%20amsthm%20%E5%8C%85%E4%B8%AD%E7%9A%84%E5%AE%9A%E7%90%86%E6%B3%A8%E9%87%8A%E6%9B%B4%E6%94%B9%E5%AE%9A%E7%90%86%E9%A2%9C%E8%89%B2.png)
在 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}