我正在使用 tcolorbox 来创建几个包含各种单词的框,以便拥有某种特征系统,就像他们在奥尼(见下图)。
框创建如下:
\usepackage[most]{tcolorbox}
\definecolor{light-gray}{gray}{0.90}
\newtcolorbox{TraitBox}{
enhanced,
size=tight,
height=1.2em,
leftrule=0.3mm,
rightrule=0.3mm,
left=0.5mm,
right=0.5mm,
top=0.3mm,
bottom=0.3mm,
coltext=white,
halign=center,
valign=center,
colback=gray,
colframe=light-gray,
hbox}
\begin{TraitBox} Agile \end{TraitBox}
\begin{TraitBox} Finesse \end{TraitBox}
\begin{TraitBox} Thrown 10 Ft. \end{TraitBox}
\begin{TraitBox} Versatile S \end{TraitBox}
\begin{TraitBox} Invest \end{TraitBox}
这里理想的和想要的功能是框适合文本的宽度。
但是,我还希望框水平对齐,就像内联列表一样。此外,我想使用 foreach 循环简单地列出所有特征。
尝试使其成为一个内联列表,其中包括 foreach 循环,并制作了一个栅格:
\newcommand{\ListOfTraits}[1]{
\begin{tcbraster}[
raster before skip=0.5mm,
raster after skip=0.5mm,
% raster left skip=-0.5mm,
raster columns=4,
% raster width=\textwidth -1pt,
raster row skip = 0.5mm,
raster equal height,
enhanced,
size=tight,
leftrule=0.3mm,
rightrule=0.3mm,
% left=0.5mm,
% right=0.5mm,
top=0.3mm,
bottom=0.3mm,%
coltext=white,
halign=center,
valign=center,
colback=gray,
colframe=light-gray,
]
\hspace{-1mm}
\foreach \traits in {#1}{
\begin{tcolorbox}\traits\end{tcolorbox}}
\end{tcbraster}
}
\ListOfTraits{Agile,Finesse,Thrown 10 Ft.,Versatile S,Invest}
但是,使用栅格时,必须使用列来定义宽度。并且如所观察到的,框不再适合单词的宽度。此外,由于“Thrown 10 Ft.”的特性,此条目对于列宽来说太长,因此会变成两行。
跳出思维定式(呵呵,抱歉),也许将 TraitBox 放在列表中,从中汲取灵感不带项目符号的逐项列举,但正如汤姆在文章中提出的那样,将其设为内联使用 paralist 在 LaTeX 中内联列表,暂时放弃 foreach 循环:
\begin{inparadesc}
\item[] \begin{TraitBox} Agile \end{TraitBox}
\item[] \begin{TraitBox} Finesse \end{TraitBox}
\item[] \begin{TraitBox} Thrown 10 Ft. \end{TraitBox}
\item[] \begin{TraitBox} Versatile S \end{TraitBox}
\item[] \begin{TraitBox} Invest \end{TraitBox}
\end{inparadesc}
有谁能解决这个问题?