评论

评论

我怎样才能排版如下的框架:

带标题的框架跨越边界

我一直使用mdframedtcolorbox排版框架,但我找不到此类功能的提及。

有没有一种简单的方法可以用上述包之一实现这种效果?如果没有,我们可以tcolorbox通过 tikz 获得带有 皮肤的输出吗?如果没有,我们还能如何获得该框?

答案1

评论

该解决方案的使用tcolorbox深受tcolorbox第 45 页文档中的“FancyTitle”示例的启发。

执行

\documentclass{article}
\pagestyle{empty}
\usepackage{tcolorbox,lipsum}
% Inspired by FancyTitle in the tcolorbox-doc page 45
\tcbuselibrary{skins}
\newtcolorbox{mycolorbox}[2][]{%
    enhanced,
    colback=white,colframe=black,
    arc=0pt,outer arc=0pt,
    enlarge top by=\baselineskip/2+1mm,
    overlay unbroken and first={%
        \node[
            rectangle,fill=white,
            inner sep=1mm,anchor=west
        ] at ([xshift=4.5mm]frame.north west) {\strut\textbf{#2}};
    },
    #1%
}
\begin{document}
\lipsum[1]
\begin{mycolorbox}{Variables}
    \[ \frac{}{x_1 : A_1,\ldots,x_n : A_n \vdash x_i : A_i} i \in \{ 1,\ldots,n \} \]
\end{mycolorbox}
\lipsum[1]
\end{document}

输出

在此处输入图片描述

答案2

你可以使用蒂克兹对于任务:

代码

\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usetikzlibrary{calc}

\usepackage{lipsum}

\newcommand{\mybox}[3][black]% [options] title, content
{   \par
    \begin{tikzpicture}
        \node[draw,minimum width=\textwidth,inner sep=5mm,align=center,#1] (tempnode) {#3};
        \node[right,#1,fill=white] at ($(tempnode.north)!0.9!(tempnode.north west)$) {#2};
    \end{tikzpicture}
    \par
}

\begin{document}

\lipsum[1]

\mybox{Test 1}{$\int\limits_{e}^{\pi}\log_2 x\ dx$}

\lipsum[2]

\mybox[very thick,red]{Test 2}{$\int\limits_{e}^{\pi}\log_2 x\ dx$}

\lipsum[3]

\mybox[line width=1mm,densely dashed,cyan!50!lime,text=black]{Test 3}{$\int\limits_{e}^{\pi}\log_2 x\ dx$}

\lipsum[4]

\end{document}

输出

在此处输入图片描述


编辑1:

由于太宽的框会引起overfull hbox警告,因此我使用\rlap数学工具包将其宽度减小到零。对于细框架来说,这可能没问题,但非常粗的框架可能会挤入边距。此外,现在您可以分别影响文本和标题(因此如果您愿意,可以尽情发挥):

代码

\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{mathtools}

\usepackage{lipsum}

\newcommand{\mybox}[4]% title, content, options, title options
{   \par
    \vspace{3mm}
    \rlap{%
    \begin{tikzpicture}
        \node[draw,minimum width=\textwidth,inner sep=5mm,align=center,outer sep=0pt,#3] (tempnode) {#2};
        \node[fill=white,right,#4] at ($(tempnode.north)!0.9!(tempnode.north west)$) {#1};
    \end{tikzpicture}}
    \par
}

\begin{document}

\lipsum[1]

\mybox{Test 1}{$\int\limits_{e}^{\pi}\log_2 x\ dx$}{}{}

\lipsum[2]

\mybox{Test 2}{$\int\limits_{e}^{\pi}\log_2 x\ dx$}{red,densely dotted,ultra thick,fill=yellow!30}{text=red,rounded corners=3mm,font=\Huge,circle}

\lipsum[3]

\mybox{Test 3}{$\int\limits_{e}^{\pi}\log_2 x\ dx$}{text=yellow,inner color=blue,outer color=red,rounded corners=10mm}{left color=orange,right color=yellow,rounded corners=3mm,draw}

\lipsum[4]

\end{document}

输出

在此处输入图片描述

相关内容