我定义了一个自定义环境,允许我定义数学问题陈述并将它们放在一个框中。由于我的报告中有相当多的陈述,我决定为它们添加适当的标题,这也允许我回顾这些问题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
我知道链接回答了您的主要问题。
您的主要问题可以通过包的可能性来回答
caption
。该命令\DeclareCaptionType
有一个可选参数,您可以在其中指定数字的行为。在您的情况下,within=none
需要该选项:\DeclareCaptionType[within=none]{problem}[Problem][List of Problems]
如果您使用,则
lrbox
可以跨页面拆分而无需特殊处理。对于您的情况,您可以使用包framed
。下面的示例演示了这一点。- 您正在使用
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
删除了文档,因为人们抱怨文档太长。(我认为这不是最好的主意,所以我将在下一个版本中重新添加对该包的简短引用。)因此,要获得最新的文档,请查看包文档,命令。(实际上,该包仍然提供与现有文档的兼容性,但只是在内部使用该包。这也将在未来版本中实现,因此使用仍然没问题。)\DeclareCaptionType
caption
caption
newfloat
newfloat
\DeclareFloatingEnvironment
caption
\DeclareCaptionType
\DeclareFloatingEnvironment
newfloat
\DeclareCaptionType