可破坏的 tcolorbox 和居中环境错误

可破坏的 tcolorbox 和居中环境错误

center我相信我有一个与环境和易碎包的兼容性问题tcolorbox

我正在做的是:

\usepackage[breakable]{tcolorbox}
\tcbset{before=\begin{center}, after=\end{center}, width=0.8\linewidth, colback=blue!20!white, colframe=blue!70!white, boxrule=0.3mm, toptitle=1.5mm, bottomtitle=1.5mm}

文档已编译但存在一些错误:

\begin{center} on input line 53 ended by \end{tcolorbox}. \end{tcolorbox}
\begin{tcolorbox} on input line 43 ended by \end{center}. \end{tcolorbox}
Missing } inserted. \end{tcolorbox}
Too many }'s. \end{tcolorbox}

在此,我感谢您的帮助!

答案1

没有必要etoolboxtcolorbox有这方面的设施。

当你说width=0.8\linewidth,要使盒子居中时,你必须将其向右推0.1\linewidth。这可以通过

,enlarge left by=0.1\linewidth,
%% enlarge right by=0.1\linewidth  %% if needed from right

因此,此代码(从 Christian Hupfer 窃取的模板)按预期运行。

\documentclass{article}
\usepackage{showframe}
\usepackage[breakable]{tcolorbox}

\newtcolorbox{brokenbox}[1][]{width=0.8\linewidth, colback=blue!20!white, colframe=blue!70!white, boxrule=0.3mm, toptitle=1.5mm, bottomtitle=1.5mm,breakable,enlarge left by=0.1\linewidth,#1}


\usepackage{blindtext}

\begin{document}

\begin{brokenbox}[colback=yellow]
  \blindtext[5]
\end{brokenbox}

\end{document}

在此处输入图片描述

答案2

破坏机制使用单独的tcolorbox环境,我认为为最后一个框提供错误代码verbatim的方式——丢失了。tcolorbox\end{tcolorbox}\end{center}

使用\BeforeBeginEnvironment\AfterEndEnvironment来自etoolbox包可以解决这个问题:

\documentclass{article}
\usepackage{etoolbox}
\usepackage[breakable]{tcolorbox}

\newtcolorbox{brokenbox}[1][]{width=0.8\linewidth, colback=blue!20!white, colframe=blue!70!white, boxrule=0.3mm, toptitle=1.5mm, bottomtitle=1.5mm,breakable,#1}


\usepackage{blindtext}


\BeforeBeginEnvironment{brokenbox}{%
\begin{center}
}

\AfterEndEnvironment{brokenbox}{%
\end{center}
}

\begin{document}

\begin{brokenbox}[colback=yellow]
  \blindtext[5]
\end{brokenbox}

\end{document}

在此处输入图片描述

答案3

作为对已经解决问题的另外两个答案的补充,这里是第三种可能性。与其将框的宽度限制为0.8\linewidth然后使用某种居中方法,不如将left skipright skip值设置为0.1\linewidth。从技术上讲,这会改变边界框并产生与 Harish Kumar 的答案相同的效果。

\documentclass{article}
\usepackage{showframe}
\usepackage[breakable]{tcolorbox}

\newtcolorbox{brokenbox}[1][]{
  % width=0.8\linewidth,          <---- removed
  leftright skip=0.1\linewidth,%  <---- added
  colback=blue!20!white,
  colframe=blue!70!white,
  boxrule=0.3mm,
  toptitle=1.5mm,
  bottomtitle=1.5mm,
  breakable,
  #1}

\usepackage{blindtext}

\begin{document}

\begin{brokenbox}[colback=yellow]
  \blindtext[5]
\end{brokenbox}

\end{document}

相关内容