带标题包的自定义浮点连续编号

带标题包的自定义浮点连续编号

我定义了一个自定义环境,允许我定义数学问题陈述并将它们放在一个框中。由于我的报告中有相当多的陈述,我决定为它们添加适当的标题,这也允许我回顾这些问题cleveref

这是我的代码[1]:

\usepackage{xparse}
\usepackage{xcolor}
\usepackage{caption}
\usepackage{cleveref}

\definecolor{problemgray}{gray}{0.9}

\DeclareCaptionType{problem}[Problem][List of Problems]
\crefname{problem}{Problem}{Problems}
\Crefname{problem}{Problem}{Problems}

\newsavebox{\tmpbox}
\NewDocumentEnvironment{problembox}{mo}{%
    \noindent%
    \begin{lrbox}{\tmpbox}%
        \begin{minipage}{0.9\textwidth}%
            \par\noindent%
        }{%
        \end{minipage}\end{lrbox}%
    \begin{center}%
        \captionof{problem}{#1}%
        \vspace{0.25em}%
        \setlength{\fboxsep}{0.5em}
        \colorbox{problemgray}{\usebox{\tmpbox}}%
        \ifthenelse{\equal{#2}{}}{
            %
        }{
            \label{#2}%
        }
    \end{center}
}

格式如下:\begin{problembox}{<problem caption>}[<optional label>]

这样,问题目前按章节编号,例如问题 2.1、问题 2.2 等等。但是,我的大多数问题都是相互建立的。

因此我的问题是,
我怎样才能caption对自定义浮点数进行连续编号而不是按章节编号?

[1] 请注意,我撒了谎:这些框实际上不是浮动的,但我可以按照设置的方式让它们浮动。我只是想要一个有标题但固定的环境。

附加问题:如何使用我的代码允许问题中的分页符?

答案1

我知道链接回答了您的主要问题。

  1. 您的主要问题可以通过包的可能性来回答caption。该命令\DeclareCaptionType有一个可选参数,您可以在其中指定数字的行为。在您的情况下,within=none需要该选项:

    \DeclareCaptionType[within=none]{problem}[Problem][List of Problems]
    
  2. 如果您使用,则lrbox可以跨页面拆分而无需特殊处理。对于您的情况,您可以使用包framed。下面的示例演示了这一点。

  3. 您正在使用xparse。要测试是否给出了可选参数的值,您可以使用\IfNoValue(TF)

例子:

\documentclass[]{report}
\usepackage{xparse}
\usepackage{xcolor}
\usepackage{caption}
\usepackage{cleveref}
\usepackage{framed}
\definecolor{shadecolor}{gray}{0.9}

\DeclareCaptionType[within=none]{problem}[Problem][List of Problems]
\crefname{problem}{Problem}{Problems}
\Crefname{problem}{Problem}{Problems}
\NewDocumentEnvironment{problembox}{mo}{%
    \begin{trivlist}\item\relax%
        \captionof{problem}{#1}%
         \IfNoValueF { #2 } { \label{#2} }%
         \vspace{0.25em}%
        \setlength{\fboxsep}{0.5em}
        \begin{shaded}
        }{%
        \end{shaded}
    \end{trivlist}
}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{problembox}{caption}
\lipsum
\end{problembox}
\end{document}

Axel Sommerfeldt 的附录

\DeclareCaptionType集成到caption包中时,人们抱怨他们需要加载caption包才能使用该功能。因此,我将其外包到新生的包中,并从包文档中newfloat删除了文档,因为人们抱怨文档太长。(我认为这不是最好的主意,所以我将在下一个版本中重新添加对该包的简短引用。)因此,要获得最新的文档,请查看包文档,命令。(实际上,该包仍然提供与现有文档的兼容性,但只是在内部使用该包。这也将在未来版本中实现,因此使用仍然没问题。)\DeclareCaptionTypecaptioncaptionnewfloatnewfloat\DeclareFloatingEnvironmentcaption\DeclareCaptionType\DeclareFloatingEnvironmentnewfloat\DeclareCaptionType

相关内容