编号框并将其添加到 mdframed 中的目录中

编号框并将其添加到 mdframed 中的目录中

我正在尝试构建一个带有编号框的文本示例,该示例也可以在目录中引用。这个例子是两个问题的混合,其中一个是我问的:内容表中的 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\addcontentslineinfoboxinfoboxframetitle

\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}

相关内容