标题框或侧边栏(宽度可变)用于附加文本?

标题框或侧边栏(宽度可变)用于附加文本?

灵感来自这个问题和答案我一直想为可变宽度的标题侧边栏创建一个方便的命令。

到目前为止,我已经解决了一半的问题。以下代码给出了一个标题,但我还没有计算出变量宽度……

\documentclass{article}
\usepackage{wrapfig}
\usepackage{tcolorbox}
\usepackage{lipsum}

\newenvironment{SideBox}[1]
  {\wrapfigure{#1}{0.5\textwidth} \tcolorbox[title=#1]}
  {\endtcolorbox\endwrapfigure}

\begin{document}

\begin{SideBox}{A fancy title}
  text inside the box
\end{SideBox}
\lipsum[2]

\end{document}

关于如何改进代码以通过以下命令获取可变宽度的任何建议:

\begin{SideBox}{0.3}{A fancy title}
  text inside the box
\end{SideBox}

谢谢你的帮助。

答案1

像这样吗?

\documentclass{article}
\usepackage{wrapfig}
\usepackage{tcolorbox}
\usepackage{lipsum}

\newenvironment{SideBox}[3][]
  {\wrapfigure{#3}{#2\textwidth} \tcolorbox[title=#3,width={#2\textwidth},#1]}
  {\endtcolorbox\endwrapfigure}

\begin{document}

\begin{SideBox}[colbacktitle={yellow},colback={white!70!yellow},coltitle={black},fonttitle={\large\bfseries}]{0.3}{A fancy title}
  text inside the box
\end{SideBox}
\lipsum[2]

\end{document}

在此处输入图片描述

**一些“改进”**

\documentclass{article}
\usepackage{wrapfig}
\usepackage[most]{tcolorbox}

\usepackage{lipsum}

\newtcolorbox{mysidebox}[1][]{%
  nobeforeafter,
  colbacktitle={yellow},
  colback={white!70!yellow},
  coltitle={black},
  fonttitle={\large\bfseries},
  #1,
}

\newenvironment{SideBox}[4][]
  {\wrapfigure{#4}{#2\textwidth}\mysidebox[title=#3,width={#2\textwidth},#1]}
  {\endmysidebox\endwrapfigure}

\begin{document}

\begin{SideBox}{0.3}{A fancy title}{r}
  text inside the box
\end{SideBox}
\lipsum[2]

\begin{SideBox}[enhanced,sharp corners,drop shadow={green}]{0.4}{A fancy title}{l}
  text inside the box
\end{SideBox}
\lipsum[2]


\end{document}

相关内容