tcolorbox:构建按顺序索引的示例问题并允许使用标题作为参数

tcolorbox:构建按顺序索引的示例问题并允许使用标题作为参数

我想tcolorbox在这里拍摄 Gonzalo Medina 创作的这幅作品排版定义 但每个框索引的用法从其开始,1, 2, ...允许输入标题。

目前我的设置如下:

在此处输入图片描述

所以说Example Problem (number) (what the problem is about)

\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}

\newtcolorbox{Examples}{
      breakable,
      fonttitle=\bfseries,
      title={Example Problem (indexing number here) rest of title:}
}
\begin{document}
\begin{Examples}
  \lipsum[4]
\end{Examples}
\end{document}

在此处输入图片描述

这样的事能做到吗?

编辑1:

按照 Gonzalo Medina 的第一个代码,第一个字母在框中被截断。

在此处输入图片描述

应该是 Calculate 而不是 alculate。所以这是因为

\begin{examples}{Synodic Period of the Earth/Mars Orbits} 

{test}{test}总要结束吧?

编辑2

描述后不会出现冒号

\documentclass{article}
\usepackage{tikz}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\usepackage{standalone}
\usepackage{capt-of}
\usepackage[pdfencoding = auto, psdextra, bookmarksdepth = 4]{hyperref}
\usepackage[noabbrev]{cleveref}

\tcbset{
  theorem/.style args = {#1#2#3#4}{%                                                
    step and label = {#2}{#4},%                                                     
    title = {\mbox{#1~\csname the#2\endcsname\ }#3:}}
}
\newcounter{exa}
\tcbmaketheorem{examples}{Example Problem}{
  breakable,
  fonttitle = \bfseries,
}{exa}{ex}

\begin{document}
\begin{examples}{example}{exa:test}
  \lipsum[4]
  \par\medskip
  \begin{minipage}{\linewidth}
    \centering
    \includestandalone{line}
    \captionof{figure}[line]{line}
    \label{line}
  \end{minipage}
\end{examples}
\cref{line}
\end{document}

在此处输入图片描述

答案1

在这种情况下,您可以使用\tcbmaketheorem来定义环境:

\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}

\newcounter{exa}
\tcbmaketheorem{Examples}{Example}{
breakable,
fonttitle=\bfseries,
}{exa}{ex}

\begin{document}
\begin{Examples}{Additional description}{test}
  \lipsum[4]
\end{Examples}
\end{document}

在此处输入图片描述

为了得到问题中的确切风格,可以重新定义定理风格:

\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}

\tcbset{
  theorem/.style args={#1#2#3#4}{%
    step and label={#2}{#4},%
    title={\mbox{#1~\csname the#2\endcsname\ }#3:}}
}
\newcounter{exa}
\tcbmaketheorem{Examples}{Example}{
breakable,
fonttitle=\bfseries,
}{exa}{ex}

\begin{document}
\begin{Examples}{Additional description}{test}
  \lipsum[4]
\end{Examples}
\end{document}

在此处输入图片描述

语法为\tcbmaketheorem

\tcbmaketheorem{<name>}{<display name>}{<options>}{<counter>}{<prefix>}

前四个参数的含义很清楚。 ,与环境调用的第二个强制参数<prefix>一起使用:<marker>

\begin{<name>}{<additional description>}{<marker>}
content
\end{<name>}

将用于生成具有<prefix>:<marker>交叉引用格式的交叉引用字符串。例如,使用上面示例的设置:

\tcbmaketheorem{Examples}{Example}{
breakable,
fonttitle=\bfseries,
}{exa}{ex}

\begin{Examples}{Additional description}{test}
  \lipsum[4]
\end{Examples}

声明的前缀是ex并且特定调用具有test作为标记,因此您可以使用交叉引用示例\ref{ex:test}

环境内不允许使用浮动;相反,您可以使用并在(来自或包)minipage的帮助下提供标题。一个小例子:\captionofcaptioncapt-of

\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{capt-of}
\usepackage[nopar]{lipsum}

\tcbset{
  theorem/.style args={#1#2#3#4}{%
    step and label={#2}{#4},%
    title={\mbox{#1~\csname the#2\endcsname\ }#3:}}
}
\newcounter{exa}
\tcbmaketheorem{Examples}{Example}{
breakable,
fonttitle=\bfseries,
}{exa}{ex}

\begin{document}

\begin{Examples}{Additional description}{exa:test}
\lipsum[4]\par\medskip
\begin{minipage}{\linewidth}
\centering
\includegraphics[height=3cm]{example-image-a}
\captionof{figure}{the description of the image}
\label{fig:testa}
\end{minipage}\par\medskip
\lipsum[4]
\end{Examples}

\end{document}

在此处输入图片描述

更新:

tcolorbox随着版本的更改2.40 (2013/07/15),上述样式的更改不会产生标题所需的结果。对于此版本,必须使用以下代码:

\documentclass{article}
\listfiles
\usepackage{tikz}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\usepackage{standalone}
\usepackage{capt-of}
\usepackage[pdfencoding = auto, psdextra, bookmarksdepth = 4]{hyperref}
\usepackage[noabbrev]{cleveref}

\makeatletter
\def\tcb@theo@title#1#2#3{%
  \ifdefempty{#2}{\setbox\z@=\hbox{#1}}{\setbox\z@=\hbox{#1~#2}}%
  \def\temp@a{#3}%
  \ifx\temp@a\@empty\relax%
    \unhbox\z@:%
  \else%
    \setbox\z@=\hbox{\unhbox\z@\ }%
    \hangindent\wd\z@%
    \hangafter=1%
    \mbox{\unhbox\z@}#3:%
  \fi%
}
\makeatother
\newcounter{exa}
\tcbmaketheorem{examples}{Example Problem}{
  breakable,
  fonttitle = \bfseries,
}{exa}{ex}

\begin{document}
\begin{examples}{Additional description}{test}
  \lipsum[4]
  \par\medskip
  \begin{minipage}{\linewidth}
    \centering
    \includestandalone{line}
    \captionof{figure}[line]{line}
    \label{line}
  \end{minipage}
\end{examples}
\cref{line}
\end{document}

新更新:

的作者在版本中tcolorbox对其进行了一些修改,因此现在我答案中的所有示例都可以使用了。tcbtheorems.code.tex2.41 (2013/07/23)

相关内容