使用该mdframed
包,我一直在尝试弄清楚如何在他们的离题环境中添加一个用于更改标题的选项(这里的示例 6:http://cloud.github.com/downloads/marcodaniel/mdframed/mdframed-example-texsx.pdf)。
我想象使用这样的包
\begin{mdframed}[style=digressionarrows]{Header of the environment}
有人知道如何自定义 digressionarrows 样式来实现这一点吗?
答案1
我并不建议重新定义环境,而是mdframed
建议如下。
新密钥的定义非常简单。因此,我建议定义新密钥,例如,digressiontitle
可以通过以下方式完成:
\mdf@do@stringoption{digressiontitle=={Digression}}
单词为Digression
默认值。您可以更改它。
此选项的值保存在宏中\mdf@digressiontitle
,可以在样式定义中使用。示例中就是这么做的。
在下一步中,我建议将\newmdenv
和 结合使用digressiontitle
。(有关该命令的更多信息,\newmdenv
请参阅文档。
因此你可以写:
\newmdenv[style=digressionarrows,digressiontitle=Info]{info}
\newmdenv[style=digressionarrows,digressiontitle=Side note]{sidenote}
并使用:
\begin{info}
\lipsum[1]
\end{info}
\begin{sidenote}
\lipsum[1]
\end{sidenote}
输出结果如下:
\documentclass{article}
\usepackage[framemethod=tikz]{mdframed}
\usetikzlibrary{calc,arrows}
\makeatletter
\mdf@do@stringoption{digressiontitle=={Digression}}
\tikzset{
excursus arrow/.style={%
line width=2pt,
draw=gray!40,
rounded corners=2ex,
},
excursus head/.style={
fill=white,
font=\bfseries\sffamily,
text=gray!80,
anchor=base west,
},
}
\mdfdefinestyle{digressionarrows}{%
singleextra={%
\path let \p1=(P), \p2=(O) in (\x2,\y1) coordinate (Q);
\path let \p1=(Q), \p2=(O) in (\x1,{(\y1-\y2)/2}) coordinate (M);
\path [excursus arrow, round cap-to]
($(O)+(5em,0ex)$) -| (M) |- %
($(Q)+(12em,0ex)$) .. controls +(0:16em) and +(185:6em) .. %
++(23em,2ex);
\node [excursus head] at ($(Q)+(2.5em,-0.75pt)$) {\mdf@digressiontitle};},
firstextra={%
\path let \p1=(P), \p2=(O) in (\x2,\y1) coordinate (Q);
\path [excursus arrow,-to] (O) |- %
($(Q)+(12em,0ex)$) .. controls +(0:16em) and +(185:6em) .. %
++(23em,2ex);
\node [excursus head] at ($(Q)+(2.5em,-2pt)$) {\mdf@digressiontitle};},
secondextra={%
\path let \p1=(P), \p2=(O) in (\x2,\y1) coordinate (Q);
\path [excursus arrow,round cap-]($(O)+(5em,0ex)$) -| (Q);},
middleextra={%
\path let \p1=(P), \p2=(O) in (\x2,\y1) coordinate (Q);
\path [excursus arrow](O) -- (Q);},
middlelinewidth=2.5em,middlelinecolor=white,
hidealllines=true,topline=true,
innertopmargin=0.5ex,
innerbottommargin=2.5ex,
innerrightmargin=2pt,
innerleftmargin=2ex,
skipabove=0.87\baselineskip,
skipbelow=0.62\baselineskip,
}
\makeatother
\newmdenv[style=digressionarrows,digressiontitle=Info]{info}
\newmdenv[style=digressionarrows,digressiontitle=Side note]{sidenote}
\usepackage{lipsum}
\begin{document}
\begin{info}
\lipsum[1]
\end{info}
\begin{sidenote}
\lipsum[1]
\end{sidenote}
\end{document}