我想在文档的元素周围绘制边界框,比如文本内容、图像或某些标题。
此外,我希望任何元素都不会因为边界框而改变其在文档上的位置,即,它们应该保持在放置边界框之前和之后的相同位置。
我该如何做呢?
我不想手动为一系列元素定义一个框,因为这需要我为文档不同部分的不同框做大量的劳动。
在边界框放置之前:
放置边界框后:
我尝试使用 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 前后的文本格式发生了变化。见下图:
答案1
默认情况下,tcolorbox
文本周围有一些边距,并且框边框也会为其内容添加一些宽度和高度,因此当包含时,文本移动是正常的tcolorbox
。
但是您可以尝试使用minimal
tcolorbox,它将文本周围的所有边距减少为零:
\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}