为什么 MdFramed 环境的对齐方式受所包含的标题的影响在 scrbook 和 article 文档类中有所不同?

为什么 MdFramed 环境的对齐方式受所包含的标题的影响在 scrbook 和 article 文档类中有所不同?

我正在尝试制作一个带有标题的浮动表格,表格和标题都应该被框架包围。框架的宽度应该反映表格和标题的大小,而不是整个行宽,并且我希望所有内容都居中。以下 MWE 显示了文章文档类的预期和期望行为:

\documentclass{article}
%\documentclass{scrbook}

\usepackage{lipsum}  

\usepackage[framemethod=TikZ]{mdframed}
\usetikzlibrary{shadows}
\usepackage{environ}
\usepackage{varwidth}

\newlength{\MyMdframedWidthTweak}

\NewEnviron{MyMdframed}[1][]{%
    \setlength{\MyMdframedWidthTweak}{\dimexpr%
        +\mdflength{innerleftmargin}
        +\mdflength{innerrightmargin}
        +\mdflength{leftmargin}
        +\mdflength{rightmargin}
    }%
    \savebox0{%
        \begin{varwidth}{\dimexpr\linewidth-\MyMdframedWidthTweak\relax}%
            \BODY
        \end{varwidth}%
    }%
    \begin{mdframed}[
        userdefinedwidth=\dimexpr\wd0+\MyMdframedWidthTweak\relax, 
        #1]
        \usebox0
    \end{mdframed}
}


\begin{document}

\lipsum[1]  

\begin{table}[h!]
     \begin{MyMdframed}[align=center]
         \caption{This is my caption text}
         \begin{tabular}{l|ccc}\hline
              Szenario $s$      &   1       &   2       &   3   \\ \hline
              Premium           &   3000    &   3500    &   4500 \\
              DeLuxe            &   1200    &   1500    &   2500 \\ \hline
          \end{tabular}     
      \end{MyMdframed}
 \end{table}

 \lipsum[1] 

 \end{document}

使用文章文档类,一切看起来都符合预期:

在此处输入图片描述

但是,如果我使用记事本类,表格不再居中并且框的宽度现在等于线宽: 在此处输入图片描述

我需要做什么才能看到我的表格的宽度和居中对齐效果相同文章使用时类记事本上课吗?

多谢!

斯蒂芬

答案1

tcolorbox这里有一个替代的解决方案mdframed

在此处输入图片描述

\documentclass{scrbook}

\usepackage{lipsum}  


\usepackage[most]{tcolorbox}

\newtcolorbox[blend into=tables]{mytable}[2][]{float=htb,
                                               sharp corners,
                                               boxrule=0.5pt,
                                               titlerule = 0pt,  
                                               colback=white,
                                               colframe=black,
                                               colbacktitle=white, 
                                               coltitle=black,
                                               halign=center, 
                                               capture=hbox,  
                                               title={#2}, 
                                               every float=\centering, 
                                               #1}


\begin{document}

\lipsum[1]  

\begin{mytable}[label=myref]{This is my caption text}
         \begin{tabular}{l|ccc}\hline
              Szenario $s$      &   1       &   2       &   3   \\ \hline
              Premium           &   3000    &   3500    &   4500 \\
              DeLuxe            &   1200    &   1500    &   2500 \\ \hline
          \end{tabular}     
\end{mytable}
 \lipsum[1] 

 \end{document}

相关内容