我认为实际上我们不会在一个输入文件中同时使用tcolorbox
和mdframed
。如果我错了,请纠正我。所以我们必须选择或tcolorbox
。mdframed
然而,如果不知道两者的优缺点,我们只能通过赌博来选择其中一个。
简单来说,这两个软件包的优缺点是什么?这些问题的答案确实影响了我在 TeX 的职业生涯。
答案1
我理解tcolorbox
功能是的超集mdframed
。虽然mdframed
尝试为您提供创建彩色框架的工具,但与tcolorbox
它们相比,它们对我来说显得苍白和简单。
我认为只要有足够的tikz
忍者技能,你就可以通过这两种方式实现你想要的目标,但tcolorbox
对我来说,语法和选项更简单。
此外,tcolorbox
具有这种所缺乏的“上部/下部”功能mdframed
,并且使用创建带有标题的简单彩色框架似乎更简单tcolorbox
。
根据文献框架
\mdfdefinestyle{theoremstyle}{%
linecolor=red,middlelinewidth=2pt,%
frametitlerule=true,%
apptotikzsetting={\tikzset{mdfframetitlebackground/.append style={%
shade,left color=white, right color=blue!20}}},
frametitlerulecolor=green!60,
frametitlerulewidth=1pt,
innertopmargin=\topskip,
}
\mdtheorem[style=theoremstyle]{definition}{Definition}
\begin{definition}[Inhomogeneous linear]
\ExampleText
\end{definition}
\begin{definition*}[Inhomogeneous linear]
\ExampleText
\end{definition*}
相当于彩色盒子文档:
\tcbuselibrary{theorems}
\newtcbtheorem[number within=section]{mytheo}{My Theorem}%
{colback=green!5,colframe=green!35!black,fonttitle=\bfseries}{th}
\begin{mytheo}{This is my title}{theoexample}
This is the text of the theorem. The counter is automatically assigned and,
in this example, prefixed with the section number. This theorem is numbered with
\ref{th:theoexample} and is given on page \pageref{th:theoexample}.
\end{mytheo}
@claudio-fiandrino 提到,mdframe 框可以用 tikz 进行自定义。tcolorbox 也是如此,因为它依赖于 tikz。
\tcbset{colback=Salmon!50!white,colframe=FireBrick!75!black, width=(\linewidth-8mm)/2,before=,after=\hfill,equal height group=ske}
\begin{tcolorbox}[adjusted title=My title]
This is my content.
\end{tcolorbox}
\begin{tcolorbox}[skin=beamer,beamer,adjusted title=My title]
This is my content.
\end{tcolorbox}
答案2
值得一提的是:我已经使用了mdframed
很长时间了……我都不知道它tcolorbox
的存在!浏览了tcolorbox
几分钟的文档后,我迫不及待地想要转换我的文档。
在我看来,这是一个制作精良的软件包。它本身基于pgf
,并pgfkeys
正确使用以提供自己的一系列选项,在我看来,这是质量的标志。它还提供了一套库来扩展功能,例如全面tikz
支持。
相比之下,mdframed
界面对我来说总是感觉有点笨拙和令人沮丧。对自定义 TikZ 选项的支持似乎是“附加的”,而不是正确实现的。此外,我不止一次遇到过它与其他软件包发生冲突的情况。
答案3
我读了一些关于的文档tcolorbox
,还有一些关于的文档mdframed
,我主要用mdframed
在我的环境中。在我看来,人们可以轻松地mdframed
使用来更改框架线tikz/pgf
,上面有很多插图stackchange给出贡萨洛·梅迪纳和其他人。至于tcolorbox
,似乎示例代码很少,但是tcolorbox
的文档制作得非常精美。
答案4
另一点反对意见mdframed
:易碎的盒子有时会造成严重损坏。
请参见下面的示例。
⋅
(例子取自如何防止 mdframed 排版包含带有彩色背景的少量 vspace 的寡妇线?)
各种各样的评论建议改用tcolorbox
。