我正在尝试使用 来制作数学课程的讲义mdframed
,以便让它比典型的研究文章更简洁一些。我无法获得定理、命题、定义等的连贯编号。
理想情况下,我希望
定义1.1.1,命题1.1.2定理1.1.3警告1.1.4等等。
到目前为止我只得到 1.1.0.1 的所有版本。
我在 StackExchange 上看到过一些使用新虚拟计数器的黑客,但这似乎不起作用\newmdtheoremenv
。
以下是我尝试过的方法。有什么办法可以解决这个问题吗?提前谢谢!
\documentclass[ 11pt]{report}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{geometry}
\usepackage[english]{babel}
\usepackage{cite}
\usepackage{dsfont}
\usepackage{hyperref}
\usepackage{amssymb}
\usepackage[dvipsnames]{xcolor}
\usepackage{amsmath}
\usepackage{amscd}
\usepackage{graphics}
\usepackage{float}
\usepackage{fullpage}
\usepackage{amsthm}
\usepackage{latexsym}
\usepackage[all]{xy}
\usepackage[framemethod=TikZ]{mdframed}
\usepackage{lipsum}
\usepackage{fourier}
\usepackage{sectsty}
\usetikzlibrary{calc}
\usepackage{titlesec}
\newcounter{dummy}
\numberwithin{dummy}{section}
\theoremstyle{definition}
\newmdtheoremenv[%
middlelinewidth = 2 ,%
roundcorner = 3 pt ,%
innertopmargin = -3 ,
topline=false,
bottomline=false,
backgroundcolor = white ,%
middlelinecolor = green!70!black ,%
]{prop}{Proposition}[dummy]
\newmdtheoremenv[%
middlelinewidth = 2 ,%
innertopmargin = -3 ,
topline=false,
bottomline=false,
backgroundcolor = white ,%
middlelinecolor = blue!60!white ,%
]{definition}{Definition}[dummy]
\newmdtheoremenv[%
middlelinewidth = 2 ,%
innertopmargin = -3 ,
backgroundcolor = white ,%
middlelinecolor = green!70!black ,%
]{thm}{Theorem}[dummy]
\newmdtheoremenv[%
middlelinewidth = 0 ,%
innertopmargin = -3 ,
backgroundcolor = black!10!white ,%
]{example}{Example}[dummy]
\tikzset{
warningsymbol/.style={
rectangle,
draw=black,
fill=white,
scale=1,
overlay}
}
\newmdtheoremenv[%
hidealllines=true,leftline=true,
skipabove=12,skipbelow=12pt,
innertopmargin=0.4em,%
innerbottommargin=0.4em,%
innerrightmargin=0.7em,%
rightmargin=0.7em,%
innerleftmargin=1.7em,%
leftmargin=0.7em,%
middlelinewidth=.2em,%
linecolor= black,%
fontcolor=black,%
firstextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$)
node[warningsymbol] {\danger};},%
secondextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$)
node[warningsymbol] {\danger};},%
middleextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$)
node[warningsymbol] {\danger};},%
singleextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$)
node[warningsymbol] {\danger};},%
]{warning}{Warning}[dummy]
\begin{document}
\chapter{First chapter}
\section{First section}
\begin{definition}
Hey
\end{definition}
\begin{prop}
Hey
\end{prop}
\begin{thm}
Hey
\end{thm}
\begin{warning}
Hey
\end{warning}
\end{document}
答案1
- 查找,
\mdfdefinestyle
这mdframed
将节省你大量的输入 - 查找的语法
\newtheorem
,并\newmdtheoremenv
在此语法的基础上进行构建。
我建议这样做:
\newmdtheoremenv[%
...
]{prop}{Proposition}[section] % <-- note
这将创建一个prop
环境和一个prop
由该计数器控制的计数器section
。然后prop
在其他计数器上重复使用该计数器:
\newmdtheoremenv[%
...
]{definition}[prop]{Definition} % <--- note placement
然后你会得到贯穿始终的环境chapter.section.prop
。