内容表中的 mdframed 框

内容表中的 mdframed 框

关于这个问题我在这里问过:目录中的方框列表,我尝试了以下代码,其中我尝试使用 startcode 作为创建目录条目的包 mdframed 的选项。不幸的是,它似乎不起作用(而前一个注释的选项工作得很好)。对我做错的事情有什么建议吗?目标是避免定义新环境,并继续在文本中使用标准 mdframed 命令。这就是为什么我真的很想在 mdframed 的选项中定义 addtocontents 行部分

谢谢!

\documentclass[12pt,a4paper,final]{book}
\definecolor{grigiochiaro}{gray}{0.90}
 \makeatletter
\usepackage[startcode=\addcontentsline{mdbox}{subsection}\mdf@frametitle},framemethod=tikz,rightmargin=5,leftmargin=5,backgroundcolor=grigiochiaro,roundcorner=10pt]{mdframed}
\newcommand{\listofboxes}{%
\section*{List of Focus}
\@starttoc{mdbox}%
}
\makeatother
\begin{document}
\tableofcontents
\listofboxes

\chapter{Chapter 1}

text text text text text text text text text text text text text 
text text text text text 

\section{Section 1}
text text text text text text text text text text text text text 
text text text text text 
\begin{mdframed}[frametitle={Title of frame}]
\vspace{-15pt}
\singlespacing
text of frame text of frame text of frame text of frame text of frame 
text of frame text of frame text of frame 
text of frame text of frame 
\end{mdframed}
text text text text text text text text text text text text text 

\end{document}

答案1

主要问题是startcodeorstartinnercode不是一个包选项,而是一个环境选项mdframed。你可以在\begin{mdframed}or 之后定义mdframe样式或环境时直接使用它。

此外,\definecolor是由包定义的\xcolor,该包由包隐式加载mdframed,因此只有在加载该包后才能使用它。

最后,出现了不平衡的支架。

\documentclass[12pt,a4paper,final]{book}
 \makeatletter
\usepackage[framemethod=tikz,rightmargin=5,leftmargin=5,backgroundcolor=grigiochiaro,roundcorner=10pt]{mdframed}
\newmdenv[startinnercode=\addcontentsline{mdbox}{subsection}\mdf@frametitle]{mdframedtoc}
\newcommand{\listofboxes}{%
\section*{List of Focus}
\@starttoc{mdbox}%
}
\makeatother
\definecolor{grigiochiaro}{gray}{0.90}
\begin{document}
\tableofcontents
\listofboxes

\chapter{Chapter 1}

text text text text text text text text text text text text text 
text text text text text 

\section{Section 1}
text text text text text text text text text text text text text 
text text text text text 
 \makeatletter
\begin{mdframedtoc}[frametitle={Title of frame}]
\vspace{-15pt}
%\singlespacing
text of frame text of frame text of frame text of frame text of frame 
text of frame text of frame text of frame 
text of frame text of frame 
\end{mdframedtoc}
\makeatother
text text text text text text text text text text text text text 

\end{document}

相关内容