最后一行的 tcolorbox 框略有错位

最后一行的 tcolorbox 框略有错位

以下代码利用tcolorbox包创建圆角矩形的模板gamebox。一个简单的语句打印游戏框,并在其上打印\foreach字符串。我将其清零并覆盖,以便框对齐,从而易于切割。包含在循环中以防止第一行缩进。Lv. 0Lv. 103beforeafter\hfill\noindent

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[a4paper,landscape,left=0.7cm,right=0.7cm,top=0.5cm,bottom=0.5cm]{geometry}
\usepackage{tcolorbox}
\tcbuselibrary{most}
\usepackage{tikz}
\title{}
\author{}
\begin{document}

\newtcbox{\gamebox} {
fontupper=\fontsize{0.7cm}{0.7cm}\selectfont\bfseries,
width=3cm,
boxrule=0.1cm,
height=1.5cm,
halign=center,
valign=center,
before=,
after=\hfill,
tcbox width=forced center
}

\foreach \i in {0,...,103} {
    \noindent
    \gamebox{Lv. \i}
}
\end{document}

但是 PDF 输出的最后一行(96 到 103)有点偏离。无论我如何调整页边距和框大小,最后一行似乎都比\hfill其他行略小,并且后面的列中差异变得明显。LaTeX默认情况下是否为最后一行的末尾保留空间?如果是,我该如何禁用此功能以获得完美的 8x13 位置?

答案1

\hfill每个由 提供的框后都有tcolorbox一个普通空格(由 之后的行尾引入的空格\gamebox{Lv. \i},可以稍微缩小或拉伸),以及在 之后(\foreach最后一个 之后)的最后一个空格}。最后,有一个段落结束符,它使普通空格成为其标称大小(或多或少,我认为它是一个\hfil)。因此,普通行和最后一行中的空格大小并不完全相同。

在此处输入图片描述

例如,您可以使用\unskip末尾的空格删除最后一个(段落末尾)的空格:

...    
    \gamebox{Lv. \i}
}\unskip
...

在此处输入图片描述

或者删除所有不必要的空格:

...
\foreach \i in {0,...,103} {%
    \noindent
    \gamebox{Lv. \i}%
}%
...

在此处输入图片描述

无论如何,为了将事物放入网格中,我会使用表格结构(并tcolorbox具有“花名册”功能)来创建类似的东西。

相关内容