文档元素周围的边界框

文档元素周围的边界框

我想在文档的元素周围绘制边界框,比如文本内容、图像或某些标题。

此外,我希望任何元素都不会因为边界框而改变其在文档上的位置,即,它们应该保持在放置边界框之前和之后的相同位置。

我该如何做呢?

我不想手动为一系列元素定义一个框,因为这需要我为文档不同部分的不同框做大量的劳动。

在边界框放置之前:

在元素周围放置边界框之前

放置边界框后:

在区域元素周围放置边界框后

我尝试使用 tbox 包,使用以下代码行:

\newtcolorbox{shadedBack}{colback=shadepink, sharp corners=southwest, colframe=shadepink, boxrule=0pt,arc=0pt,boxsep=2pt,left=2pt,right=2pt,leftrule=1pt}


\begin{shadedBack}
\pinkbullet Une phrase est \textbf{une suite de mots qui a un sens.} \\
\textbf{Elle commence par une majuscule et se termine par un point (. ! ? ...).}\\
\htab[0.75cm]  \textit{Exemple:} Elle apprend le norvégien pour parler à son correspondant. 
\vspace{0.5mm}

\pinkbullet Quand une phrase contient \textbf{un verbe} au moins, on dit que c'est une \textbf{phrase verbale.} \\
\htab[0.75cm]  \textit{Exemples:} La mère \textcolor{bullet_dark_pink}{s'inquiète} pour son fils. Àvous de \textcolor{bullet_dark_pink}{jouer} ! 

\vspace{0.5mm}

\pinkbullet Quand une phrase ne contient \textbf{pas de verbe}, on dit que c'est une \textbf{phrase non verbale.} \\
\htab[0.75cm]  \textit{Exemple:} Sans blague !\\
\end{shadedBack}

但是 tbox 前后的文本格式发生了变化。见下图:

在 Tbox 之前

Tbox 之后

答案1

默认情况下,tcolorbox文本周围有一些边距,并且框边框也会为其内容添加一些宽度和高度,因此当包含时,文本移动是正常的tcolorbox

但是您可以尝试使用minimaltcolorbox,它将文本周围的所有边距减少为零:

\documentclass[twocolumn]{article}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}

\newtcolorbox{minbox}[1][]{
    enhanced,
    breakable,
    size=minimal,
    before={\par\smallskip\parindent=0pt},
    after={\par},
    before upper={\parindent10pt},
    colback=red!30,
    pad at break*=0mm,
    #1
}

\begin{document}


\lipsum[1]

\begin{minbox}
\lipsum[2]
\end{minbox}

\begin{minbox}[colback=green!20]
\lipsum[3-4]
\end{minbox}

\begin{minbox}
\lipsum[5]
\end{minbox}

\end{document}

在此处输入图片描述

更新

如果 OP 坚持不编写带有所需框和背景的文本,而是稍后添加它们,我知道的唯一解决方案是eso-pic手动使用和添加背景,一个接一个,如下例所示。我不喜欢做这么多无聊和不精确的工作。

eso-pic包在背景上绘制网格,并AddToShipoutPictureBG*允许我们为每个页面定义特定的背景。由于我不知道如何使用绘制和填充矩形picture,所以我使用了TikZ。一旦背景就位,colorgrid选项就会被删除,我们就会得到所需的结果。

\documentclass[twocolumn]{article}
\usepackage{lipsum}
\usepackage[colorgrid,gridunit=mm]{eso-pic}
\usepackage{tikz}
\begin{document}

\AddToShipoutPictureBG*{%
    \begin{tikzpicture}[remember picture, overlay]
        \fill[red!30] ([shift={(25mm,50mm)}]current page.south west) rectangle ++(81.5mm,62.5mm);
        \fill[cyan!30] ([shift={(109.5mm,142.5mm)}]current page.south west) rectangle ++(81.5mm,59.5mm);
    \end{tikzpicture}}

\lipsum[1-5]

\end{document}

在此处输入图片描述

在此处输入图片描述

相关内容