關於這個問題我在這裡問:目錄中的框列表,我嘗試了以下程式碼,其中我嘗試使用 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
主要問題是startcode
or不是一個包選項,而是一個環境startinnercode
選項。您可以在定義樣式或環境之後或定義樣式或環境時mdframed
直接使用它。\begin{mdframed}
mdframe
而且\definecolor
是由 package 定義的\xcolor
,它是由 隱式載入的mdframed
,所以只有載入了 package 後才能使用它。
最後,有一個不平衡的支架。
\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}