![tcolorbox:构建按顺序索引的示例问题并允许使用标题作为参数](https://linux22.com/image/272385/tcolorbox%EF%BC%9A%E6%9E%84%E5%BB%BA%E6%8C%89%E9%A1%BA%E5%BA%8F%E7%B4%A2%E5%BC%95%E7%9A%84%E7%A4%BA%E4%BE%8B%E9%97%AE%E9%A2%98%E5%B9%B6%E5%85%81%E8%AE%B8%E4%BD%BF%E7%94%A8%E6%A0%87%E9%A2%98%E4%BD%9C%E4%B8%BA%E5%8F%82%E6%95%B0.png)
我想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
的帮助下提供标题。一个小例子:\captionof
caption
capt-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.tex
2.41 (2013/07/23)