我正在嘗試建立一個帶有編號框的文字範例,也可以在目錄中引用。這個例子混合了兩個問題,其中一個是我問的:目錄中的 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}