![不同颜色编码的定理](https://linux22.com/image/239811/%E4%B8%8D%E5%90%8C%E9%A2%9C%E8%89%B2%E7%BC%96%E7%A0%81%E7%9A%84%E5%AE%9A%E7%90%86.png)
我正在使用这段代码来构建我的定理:
\documentclass[a4paper,12pt]{scrreprt}
\usepackage[table]{xcolor}
\usepackage{latexsym}
\usepackage{amsmath}
\usepackage[amsmath,thmmarks,framed]{ntheorem}
\usepackage{framed}
\newframedtheorem{beispiel}{Beispiel}[section]
\renewcommand*\FrameCommand{{\color{gray}\vrule width 3pt \hspace{15pt}}}
\begin{document}
\begin{beispiel}
[Antwortzeit]
Unter der Antwortzeit eines Dienstes versteht man den Zeitintervall zwischen dem Absenden einer Nachricht und dem Empfang der entsprechenden Antwort.
\end{beispiel}
\end{document}
我正在寻找一种方法来用不同的颜色对不同的定理(示例、证明等)进行编码。但每次我尝试创建新命令时,我似乎都会全局“覆盖”颜色。
实现这一目标的最佳方法是什么?
答案1
一个选项是为每种颜色定义一个命令,其行为如下\newframedtheorem
:
\documentclass[a4paper,12pt]{scrreprt}
\usepackage[table]{xcolor}
\usepackage{latexsym}
\usepackage{amsmath}
\usepackage[amsmath,thmmarks,framed]{ntheorem}
\usepackage{framed}
\makeatletter
\def\newframedRtheorem#1{%
\theoremprework{\vskip\theoremframepreskipamount
\renewcommand*\FrameCommand{%
{\color{red}\vrule width 3pt \hspace{15pt}}}
\framed}%
\theorempostwork{\endframed\vskip\theoremframepostskipamount}%
\newtheorem@i{#1}%
}
\def\newframedBtheorem#1{%
\theoremprework{\vskip\theoremframepreskipamount
\renewcommand*\FrameCommand{%
{\color{blue}\vrule width 3pt \hspace{15pt}}}
\framed}%
\theorempostwork{\endframed\vskip\theoremframepostskipamount}%
\newtheorem@i{#1}%
}
\def\newframedGtheorem#1{%
\theoremprework{\vskip\theoremframepreskipamount
\renewcommand*\FrameCommand{%
{\color{green}\vrule width 3pt \hspace{15pt}}}
\framed}%
\theorempostwork{\endframed\vskip\theoremframepostskipamount}%
\newtheorem@i{#1}%
}
\makeatother
\newframedRtheorem{beispiel}{Beispiel}[section]
\newframedBtheorem{theo}[beispiel]{Theorem}
\newframedGtheorem{exam}[beispiel]{Example}
\begin{document}
\begin{beispiel}[Antwortzeit]
Unter der Antwortzeit eines Dienstes versteht man den Zeitintervall zwischen dem Absenden einer Nachricht und dem Empfang der entsprechenden Antwort.
\end{beispiel}
\begin{theo}[Antwortzeit]
Unter der Antwortzeit eines Dienstes versteht man den Zeitintervall zwischen dem Absenden einer Nachricht und dem Empfang der entsprechenden Antwort.
\end{theo}
\begin{exam}[Antwortzeit]
Unter der Antwortzeit eines Dienstes versteht man den Zeitintervall zwischen dem Absenden einer Nachricht und dem Empfang der entsprechenden Antwort.
\end{exam}
\end{document}
答案2
或者你可以使用mdframed
:
\documentclass[a4paper,12pt]{scrreprt}
\usepackage[table]{xcolor}
\usepackage{latexsym}
\usepackage{amsmath}
\usepackage[amsmath,thmmarks,framed]{ntheorem}
\usepackage[style=0,ntheorem]{mdframed}
\mdfsetup{%
topline=false,
rightline=false,
bottomline=false,
linewidth=3pt,
innerleftmargin=15pt,
innerrightmargin=0pt,
skipabove=\baselineskip,
skipabove=1.2\baselineskip,
}
\newtheorem{mdbeispiel}{Beispiel}[section]
\newtheorem{mdspiele}{Spiele}[section]
\newenvironment{beispiel}[1][]%
{\begin{mdframed}[linecolor=blue]\begin{mdbeispiel}[#1]}
{\end{mdbeispiel}\end{mdframed}}
\newenvironment{spiele}[1][]%
{\begin{mdframed}[linecolor=red]\begin{mdspiele}[#1]}
{\end{mdspiele}\end{mdframed}}
\begin{document}
\begin{beispiel}[Antwortzeit]
Unter der Antwortzeit eines Dienstes versteht man den Zeitintervall zwischen dem
Absenden einer Nachricht und dem Empfang der entsprechenden Antwort.
\end{beispiel}
\begin{spiele}[Antwortzeit]
Unter der Antwortzeit eines Dienstes versteht man den Zeitintervall zwischen dem
Absenden einer Nachricht und dem Empfang der entsprechenden Antwort.
\end{spiele}
\end{document}
编辑
0.8 版本mdframed
提供了命令newmdenv
、renewmdenv
和newmdtheoremenv
。因此您可以简单使用:
newmdtheoremenv[linecolor=red]{beispiel}{Beispiel}[section]