我正在尝试构建一个带有编号框的文本示例,该示例也可以在目录中引用。这个例子是两个问题的混合,其中一个是我问的:内容表中的 mdframed 框。
在我看来,我应该将startinnercode=\addcontentsline{mdbox}{subsection}\mdf@frametitle
中的命令\newenvironment{infobox}
作为 的参数传递mdframed
。但我无法让它工作。将其分开,要么我用 调用它infobox
,然后我有编号框但不在目录中,要么我用 调用它mdframedtoc
,但它们没有编号。
非常感谢您的帮助,谢谢!
\documentclass{book}
\usepackage{lipsum}
\usepackage[english]{babel}
\newcounter{infobox}[chapter]
\renewcommand{\theinfobox}{\thechapter.\arabic{infobox}}
\usepackage[framemethod=tikz,rightmargin=5,
leftmargin=5,backgroundcolor=gray!10,
frametitlerule=true,frametitlebackgroundcolor=gray!30,roundcorner=10pt]
{mdframed}
\newenvironment{infobox}[1][]{%
\refstepcounter{infobox}
\begin{mdframed}[%
frametitle={Infobox \theinfobox\ #1},
]%
}{%
\end{mdframed}
}
\makeatletter
\newmdenv[startinnercode=\addcontentsline{mdbox}{subsection}\mdf@frametitle]
{mdframedtoc}
\newcommand{\listofboxes}{%
\section*{Liste des focus}
\@starttoc{mdbox}%
}
\makeatother
\begin{document}
\tableofcontents
\listofboxes
\chapter{Stuff}
\lipsum[1]
\begin{infobox}[Sausage]
\lipsum[2]
\label{ibx:sausage}
\end{infobox}
Infobox \ref{ibx:sausage} says:
\lipsum[2]
\chapter{Other Stuff}
\begin{infobox}[Fried eggs]
\lipsum[4-5]
\label{ibx:eggs}
\end{infobox}
Infobox \ref{ibx:eggs} says:
%
\lipsum[4]
\lipsum[5]
\end{document}
答案1
环境mdframedtoc
应该在包装器中调用infobox
,而不是。由于使用作为起始代码,mdframed
因此生成列表条目,并且由于已编号,因此对它们进行了编号。编号是正确的,因为使用其编号方案设置了。mdframedtoc
\addcontentsline
infobox
infobox
frametitle
\documentclass{book}
\usepackage{lipsum}
\usepackage[english]{babel}
\newcounter{infobox}[chapter]
\renewcommand{\theinfobox}{\thechapter.\arabic{infobox}}
\usepackage[framemethod=tikz,rightmargin=5,
leftmargin=5,backgroundcolor=gray!10,
frametitlerule=true,frametitlebackgroundcolor=gray!30,roundcorner=10pt]
{mdframed}
\newenvironment{infobox}[1][]{%
\refstepcounter{infobox}
\begin{mdframedtoc}[%
frametitle={Infobox \theinfobox\ #1},
]%
}{%
\end{mdframedtoc}
}
\makeatletter
\newmdenv[startinnercode=\addcontentsline{mdbox}{subsection}\mdf@frametitle]
{mdframedtoc}
\newcommand{\listofboxes}{%
\section*{Liste des focus}
\@starttoc{mdbox}%
}
\makeatother
\begin{document}
\tableofcontents
\listofboxes
\chapter{Stuff}
\lipsum[1]
\begin{infobox}[Sausage]
\lipsum[2]
\label{ibx:sausage}
\end{infobox}
\begin{infobox}[Garam Masala]
A delicious and important spice mixture from India!
\label{ibx:garammasala}
\end{infobox}
Infobox \ref{ibx:sausage} says:
\lipsum[2]
\chapter{Other Stuff}
\begin{infobox}[Fried eggs]
\lipsum[4-5]
\label{ibx:eggs}
\end{infobox}
Infobox \ref{ibx:eggs} says:
%
\lipsum[4]
\lipsum[5]
\end{document}
更新 Babel 的使用情况
\documentclass{book}
\usepackage{lipsum}
\usepackage[T1]{fontenc}
\usepackage[english,french]{babel}
\newcounter{infobox}[chapter]
\renewcommand{\theinfobox}{\thechapter.\arabic{infobox}}
\usepackage[framemethod=tikz,rightmargin=5,
leftmargin=5,backgroundcolor=gray!10,
frametitlerule=true,frametitlebackgroundcolor=gray!30,roundcorner=10pt]
{mdframed}
\usetikzlibrary{babel}
\newenvironment{infobox}[1][]{%
\refstepcounter{infobox}
\begin{mdframedtoc}[%
frametitle={Infobox \theinfobox\ #1},
]%
}{%
\end{mdframedtoc}
}
\makeatletter
\newmdenv[startinnercode=\addcontentsline{mdbox}{subsection}\mdf@frametitle]
{mdframedtoc}
\newcommand{\listofboxes}{%
\section*{Liste des focus}
\@starttoc{mdbox}%
}
\makeatother
\begin{document}
\tableofcontents
\listofboxes
\chapter{Stuff}
\lipsum[1]
\begin{infobox}[Sausage]
\lipsum[2]
\label{ibx-sausage}
\end{infobox}
\begin{infobox}[Garam Masala]
A delicious and important spice mixture from India!
\label{ibx-garammasala}
\end{infobox}
Infobox \ref{ibx-sausage} says:
\lipsum[2]
\chapter{Other Stuff}
\begin{infobox}[Fried eggs]
\lipsum[4-5]
\label{ibx-eggs}
\end{infobox}
Infobox \ref{ibx-eggs} says:
%
\lipsum[4]
\lipsum[5]
\end{document}