如何使 tcolorbox 的下半部分与标题一样高

如何使 tcolorbox 的下半部分与标题一样高

我怎样才能使灰色部分与标题框(红色部分)一样高?我尝试更改bottommiddle,但middle会改变文本和下方框之间的空间(我不想要),即使没有,我仍然会目测所有的尺寸。

在此处输入图片描述

\documentclass{article}
\usepackage[many]{tcolorbox}
\usepackage{lipsum}
\newlength{\cornerwidth}
\setlength{\cornerwidth}{.5mm}
% --------------------------
\begin{document}
\tcbset{title={1 January 2001}, 
           center title, 
           halign lower=center, 
           boxrule=\cornerwidth,
           sharp corners,
           bicolor, 
           collower=black, 
           colback=white, 
           colframe=black!75, 
           colbacklower=black!40,
           colbacktitle=red,
           coltitle=black}

\begin{tcolorbox}[overlay={\draw[tcbcolframe, line width=\cornerwidth] (segmentation.west)--(segmentation.east);}]
\lipsum[1]
\tcblower
89.50
\end{tcolorbox}
\end{document}

答案1

我不建议尝试调整tcblower零件几何形状以适应title,而是建议使用一个棘手的解决方案:忘记和titlelowerbox并使用两个tcbsubtitle自动添加before upperafter upper选项的命令。

作为内容tcbsubtitle的一部分tcolorbox,它们显示与顶部和底部边框的垂直距离。boxsep选项定义的垂直空间可以用负topbottom值进行补偿。这些topbottom值应用于主标题tcolorbox,但每个副标题可以使用不同的特定值。

由于 everytcbtitle或多或少都是常规的tcbox,而不是 atitle加 a tcbox,因此不需要像toptitlein one 和topinto the other 这样的特定选项。我们可以为两个字幕定义一个通用的几何形状和样式,但仍然对顶部和底部使用特定设置。以下代码显示了如何执行此操作。

我认为此代码解决了问题 1、2 和 3(参见上面的评论)。

\documentclass{article}
\usepackage[many]{tcolorbox}
\usepackage{lipsum}
% --

\tcbset{
    titlecommon/.style={
        fontupper=\Large\bfseries\sffamily,
        top=2mm,
        bottom=2mm,
        halign=center,
        sharp corners,
        leftrule=0.5mm, %to draw left side in subtitle box
        rightrule=0.5mm, %to draw right side in subtitle box
        opacityfill=.5,  %to test subtitles geometry and positioning
    },
    toptitle/.style={
        titlecommon,
        colframe=green,
        colback=green!20,
    },
    bottomtitle/.style={
        titlecommon,
        colframe=red,
        colback=red!20,
    },
}   

\newtcolorbox{twotitle}[3][]{
    enhanced,
    sharp corners,
    colback=white,
    colframe=black!75,
    notitle,
    before upper={\tcbsubtitle[toptitle]{#2}},
    after upper={\tcbsubtitle[bottomtitle]{#3}},
    top=-1.5mm, %-boxsep-toprule
    bottom=-1.5mm, %-boxsep-bottomrule
    #1,
}

\begin{document}
\begin{twotitle}[colback=orange!20]{Title}{Test}
\lipsum[1]
\end{twotitle}
\end{document}

在此处输入图片描述

答案2

您可以向标题添加自定义支柱……这会使顶线更高,而不是底线更小。

\documentclass{article}
\usepackage[many]{tcolorbox}
\usepackage{lipsum}
\newlength{\cornerwidth}
\setlength{\cornerwidth}{.5mm}
% ----------------------------
\newcommand\mystrut{\rule[-6pt]{0pt}{19pt}}
\begin{document}
\tcbset{title={1 January 2001\mystrut}, 
           center title, 
           halign lower=center, 
           boxrule=\cornerwidth,
           sharp corners,
           bicolor, 
           collower=black, 
           colback=white, 
           colframe=black!75, 
           colbacklower=black!40,
           colbacktitle=red,
           coltitle=black}

\begin{tcolorbox}[overlay={\draw[line width=\cornerwidth] (segmentation.west)--(segmentation.east);}]
\lipsum[1]
\tcblower
89.50
\end{tcolorbox}
\end{document}

在此处输入图片描述

尝试降低下部盒子的高度:

\documentclass{article}
\usepackage[many]{tcolorbox}
\usepackage{lipsum}
\newlength{\cornerwidth}
\setlength{\cornerwidth}{.5mm}
% ----------------------------
\begin{document}
\tcbset{title={1 January 2001}, 
           center title, 
           halign lower=center, 
           boxrule=\cornerwidth,
           sharp corners,
           bicolor, 
           collower=black, 
           colback=white, 
           colframe=black!75, 
           colbacklower=black!40,
           colbacktitle=red,
           coltitle=black}

\begin{tcolorbox}[overlay={\draw[line width=\cornerwidth] (segmentation.west)--(segmentation.east);}]
\lipsum[1]
\tcblower \makebox{\smash{\raisebox{-3pt}{89.50}}}
\end{tcolorbox}
\end{document}

在此处输入图片描述

相关内容