在写一篇论文(法语)时,我使用了很多方框来框住一些日期。幸运的是,tcolor 功能非常强大,可以制作出一些漂亮的方框。但我在\tcbsubtitle
区分(或添加更多信息)不同数据方面遇到了一点问题。
盒子的标题(很好地)集成在边缘,我尝试让子标题也这样做...如果有人有想法的话。
这里有一个 MCE:
\documentclass[12pt,french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper]{geometry}
\usepackage{microtype}
\usepackage{graphicx}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\usepackage{xspace}
\xspaceremoveexception{-}
%\usepackage{varioref}
\usepackage[autostyle]{csquotes}
\usepackage{babel}
\usepackage[osf]{garamondx}
\usepackage[breaklinks,colorlinks=true]{hyperref}
%opening
\newenvironment{supercadre}[2]{
\begin{tcolorbox}[enhanced,breakable,
size=fbox,sharp corners=northwest,
before=\smallskip,
after=\smallskip,
% boxrule=5pt,
parbox=true,
adjusted title={\footnotesize{{#1} \no{#2}}},
colframe=black,colback=black!01!white, %couleur du cadre et du fond de la boît
colbacktitle=black!10!white, %couleur du fond du titre
coltitle=black!50!black, %couleur de la police du titre
fonttitle=\bfseries, %font du titre
subtitle style={colback=black!10!white},
attach boxed title to top left={xshift=-\tcboxedtitlewidth,yshift=-\tcboxedtitleheight},
boxed title style={size=fbox,sharp corners=east}
]}
{\end{tcolorbox}}
\newcommand{\cadrebis}[3]{\begin{supercadre}{#1}{#2}\noindent{\small#3}\end{supercadre}}
\begin{document}
\cadrebis{Try}{1}{
\lipsum[2]
\tcbline
\lipsum[1]
}
\cadrebis{Try}{2}{
\lipsum[2]
\tcbsubtitle[nobeforeafter,subtitle style={colbacktitle=white, attach boxed title to top left={xshift=-\tcboxedtitlewidth,yshift=-\tcboxedtitleheight}}]{The subtitle}
\lipsum[2]
}
\end{document}
答案1
如果您的框仅包含一个字幕,则可以使用类似以下代码。它使用segmentation
位置来附加带有字幕内容的可选覆盖tcbox
。
\documentclass[12pt,french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper]{geometry}
%\usepackage{microtype}
%\usepackage{graphicx}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
%\usepackage{xspace}
%\xspaceremoveexception{-}
%\usepackage{varioref}
%\usepackage[autostyle]{csquotes}
\usepackage{babel}
%\usepackage[osf]{garamondx}
\usepackage[breaklinks,colorlinks=true]{hyperref}
%opening
\newtcolorbox{supercadre}[3][]{%
enhanced,breakable,
size=fbox,sharp corners=northwest,
before=\smallskip,
after=\smallskip,
% boxrule=5pt,
parbox=true,
adjusted title={\footnotesize{{#2} \no{#3}}},
colframe=black,colback=black!01!white, %couleur du cadre et du fond de la boît
colbacktitle=black!10!white, %couleur du fond du titre
coltitle=black!50!black, %couleur de la police du titre
fonttitle=\bfseries, %font du titre
fontupper=\small,
fontlower=\small,
subtitle style={colback=black!10!white},
attach boxed title to top left={xshift=-\tcboxedtitlewidth,yshift=-\tcboxedtitleheight},
boxed title style={size=fbox,sharp corners=east},
#1
}
\newtcbox{\subtitle}{size=fbox, sharp corners=east, colback=black!10!white, fontupper=\bfseries, colframe=black}
\tcbset{subtitle/.style={overlay={\node[anchor=north east, inner sep=0pt] at (segmentation.west) {\subtitle{#1}};}}}
\newcommand{\cadrebis}[3]{\begin{supercadre}{#1}{#2}#3\end{supercadre}}
\begin{document}
\begin{supercadre}[subtitle=SubTitle]{Try}{1}
\lipsum[2]
\tcblower
\lipsum[1]
\end{supercadre}
\begin{supercadre}[subtitle=Test]{Try}{1}
\lipsum[2]
\tcblower
\lipsum[1]
\end{supercadre}
\end{document}
更新
另一个选项是模拟一个 tcolorbox,其中有多个 tcolorbox,并且它们之间没有垂直空间。以下解决方案并不完美(我不知道为什么分隔线会引入不必要的空间),但您可以开始使用它:
\documentclass[12pt,french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\tcbset{
general/.style={
enhanced,
breakable,
colback=black!1!white,
colbacktitle=black!10!white,
coltitle=black,
fonttitle=\bfseries,
fontupper=\small,
size=fbox,
parbox=true,
attach boxed title to top left={xshift=-\tcboxedtitlewidth, yshift=-\tcboxedtitleheight},
boxed title style={size=fbox, sharp corners=east}
}
}
\newtcolorbox{topbox}[3][]{%
general,
bottomrule=0pt,
after=\par\nointerlineskip,
before={},
sharp corners,
adjusted title={\footnotesize{{#2} \no{#3}}},
rounded corners=northeast,#1}
\newtcolorbox{middlebox}[3][]{%
general,
bottomrule=0pt,
toprule=0pt,
after=\par\nointerlineskip,
before={},
sharp corners,
overlay={\draw[dashed](frame.north west)--(frame.north east);},
adjusted title={\footnotesize{{#2} \no{#3}}},
#1
}
\newtcolorbox{bottombox}[3][]{%
general,
toprule=0pt,
before={},
sharp corners=north,
overlay={\draw[dashed](frame.north west)--(frame.north east);},
adjusted title={\footnotesize{{#2} \no{#3}}},
#1
}
\begin{document}
\begin{topbox}{1}{test}
\lipsum[1]
\end{topbox}
\begin{middlebox}{2}{test}
\lipsum[1]
\end{middlebox}
\begin{bottombox}{3}{test}
\lipsum[1]
\end{bottombox}
\end{document}