tcolorboxes 之间不需要的垂直分隔

tcolorboxes 之间不需要的垂直分隔

我正在尝试为活页夹的书脊准备打印机标签。文本设计为打印在 A4 格式的标签纸上,顶部和底部边距为26.5mm,左/右边距为9mm

标签的格式61mm为,每张纸上192mm有,彼此之间没有任何分隔。4

我使用tcolorbox环境作为标签的“框架”,也许我的想法很天真,但我只是连续写了四个这样的环境,并nobeforeafter为每个环境设置(嗯,使用\tcbset命令)。

即使\parskip设置为 0pt,框之间的间距也只有大约 1mm,这会导致内容连续移动,并且第 4 个框会出现在下一页。当然,减少底部边距不是一个选择。我相信,\parskip无论如何,这在这里是没用的。

我很确定,只要高度不是太大,盒子的内容就不会影响间距,但这似乎并非如此。

我怎样才能将这些颜色框之间的空间减小到有效的“零”值,从而导致打印时不会发生偏移?

笔记

打印出来后我检查了边距等,它们是正确的!

即使这种标签打印可能有其他解决方案,我还是希望有一些解决方案来减少盒子之间的间距(好吧,这可能是一个非常简单的解决方案。)

在此处输入图片描述

这是我迄今为止尝试过的代码

\documentclass[12pt,paper=a4]{article}

\usepackage[lmargin=0.9cm,rmargin=0.9cm,tmargin=26.5mm,bmargin=26.5mm,showframe=true,a4paper]{geometry}
\usepackage{tcolorbox}
\usepackage{lmodern}


\begin{document}
\setlength{\parindent}{0pt}%
\setlength{\parskip}{0pt}%
\pagestyle{empty}%

\fontsize{80}{96}\selectfont 
\tcbset{height=61mm,nobeforeafter,top=2cm}
\begin{tcolorbox}%
\textbf{\LaTeX}%
\end{tcolorbox}
\begin{tcolorbox}%
\textbf{is}%
\end{tcolorbox}
\begin{tcolorbox}%
\textbf{very}%
\end{tcolorbox}
\begin{tcolorbox}%
\textbf{sophisticated}%
\end{tcolorbox}

\end{document}

我在这里研究了其他“类似”的问题,但似乎都没有与这个问题相关

笔记

tcolorbox这是该软件包的一些功能以及 Gonzalo Medina 和 egreg 的解决方案以及 Thomas F. Sturm 的评论的结果。

在此处输入图片描述

答案1

您需要取消自然的\lineskip

\documentclass[12pt,paper=a4]{scrartcl}

\usepackage[lmargin=0.9cm,rmargin=0.9cm,tmargin=26.5mm,bmargin=26.5mm,showframe=true,a4paper]{geometry}
\usepackage{tcolorbox}
\usepackage{lmodern}


\begin{document}
\setlength{\parindent}{0pt}%
\setlength{\parskip}{0pt}%
\pagestyle{empty}%

\fontsize{80}{96}\selectfont 
\offinterlineskip
\tcbset{height=61mm,nobeforeafter,top=2cm}
\begin{tcolorbox}%
\textbf{\LaTeX}%
\end{tcolorbox}
\begin{tcolorbox}%
\textbf{is}%
\end{tcolorbox}
\begin{tcolorbox}%
\textbf{very}%
\end{tcolorbox}
\begin{tcolorbox}%
\textbf{sophisticated}%
\end{tcolorbox}

\end{document}

在此处输入图片描述

在上面的例子中,\offinterlineskip将从发出的位置开始生效。要\lineskip以更可控的方式抑制,可以after使用

after=\par\nointerlineskip

作为托马斯·F·斯特姆建议his comment

答案2

间距是由于\lineskip; 的通常设置\parskip是具有零自然宽度,因此它只能在\flushbottom设置时添加垂直空间,因为它具有 1pt 的拉伸分量。在这种情况下,您应该将其设置为零,也设置\lineskip为零,但要分组设置,以避免设置永远持续下去。

\documentclass[12pt,paper=a4]{scrartcl}

\usepackage[lmargin=0.9cm,rmargin=0.9cm,tmargin=26.5mm,bmargin=26.5mm,showframe=true,a4paper]{geometry}
\usepackage{tcolorbox}
\usepackage{lmodern}


\begin{document}

\begingroup
\setlength{\parindent}{0pt}
\setlength{\parskip}{0pt}
\setlength{\lineskip}{0pt}

\fontsize{80}{96}\selectfont 
\tcbset{height=61mm,nobeforeafter,top=2cm}
\begin{tcolorbox}
\textbf{\LaTeX}
\end{tcolorbox}
\begin{tcolorbox}
\textbf{is}
\end{tcolorbox}
\begin{tcolorbox}
\textbf{very}
\end{tcolorbox}
\begin{tcolorbox}
\textbf{sophisticated}
\end{tcolorbox}

\endgroup % the empty line is needed

\end{document}

在此处输入图片描述

为什么是\lineskip?因为每条线的高度加上深度都大于\baselineskip,所以“上面一行的深度加上下面一行的高度”和 之间的差\baselineskip大于\lineskiplimit(通常为 0pt),因此 TeX 会插入\lineskip粘连,认为这些线彼此太近了。

根据 Thomas F. Sturm 的评论,另一种解决方案是添加after=\par\nointerlineskip以下选项tcolorbox

\tcbset{height=61mm,top=2cm,after=\par\nointerlineskip,before={}}

相关内容