使用 enumitem 和 newtcbox 进行标记时出现垂直行距问题

使用 enumitem 和 newtcbox 进行标记时出现垂直行距问题

我想避免当标签用框书写时,项目化段落的前两行之间的垂直间距大于其余部分,正如本例中发生的情况:

在此处输入图片描述

这是产生该输出的代码:

\documentclass{article}
\usepackage{enumitem}
\usepackage[most]{tcolorbox}

\newtcbox{\mybox}[1][]{colback=blue!10,colframe=blue!30,tcbox raise base, #1}

\begin{document}

\begin{enumerate}[label=\mybox{\arabic*}]
  \item Primer ítem en la lista, una línea más larga para demostrar el espaciado entre las líneas del párrafo. Primer ítem en la lista, una línea más larga para demostrar el espaciado entre las líneas del párrafo. Primer ítem en la lista, una línea más larga para demostrar el espaciado entre las líneas del párrafo.
  \item Segundo ítem en la lista.
  \item Tercer ítem en la lista.
\end{enumerate}

\end{document}

答案1

tcolorbox我建议使用enlarge top by和来缩小 的垂直边界框enlarge bottom by。由于默认情况下会向其内容添加 3.5 毫米(top/为 2 毫米bottom, 为 1 毫米boxsep, 为 0.5 毫米boxrule),因此使用:

\newtcbox{\mybox}[1][]{%
  enlarge top by=-3.5mm, enlarge bottom by=-3.5mm,
  colback=blue!10,colframe=blue!30,tcbox raise base, #1}

然后应扩大物品分隔以避免箱子重叠。尝试:

\begin{enumerate}[label=\mybox{\arabic*}, itemsep=5mm plus 0.5em]

完整代码:

\documentclass{article}
\usepackage{enumitem}
\usepackage[most]{tcolorbox}

\newtcbox{\mybox}[1][]{%
  enlarge top by=-3.5mm, enlarge bottom by=-3.5mm,
  colback=blue!10,colframe=blue!30,tcbox raise base, #1}

\begin{document}

\begin{enumerate}[label=\mybox{\arabic*}, itemsep=5mm plus 0.5em]
  \item Primer ítem en la lista, una línea más larga para demostrar el espaciado entre las líneas del párrafo. Primer ítem en la lista, una línea más larga para demostrar el espaciado entre las líneas del párrafo. Primer ítem en la lista, una línea más larga para demostrar el espaciado entre las líneas del párrafo.
  \item Segundo ítem en la lista.
  \item Tercer ítem en la lista.
\end{enumerate}

\end{document}

以 tcolorbox 为标签的列表

答案2

我提出一个与\tikz相关的解决方案tabularray

  • 在 中Tikz,我使用默认值创建计数器样式tcbox

\tikzset{ counter/.style= { draw=blue!30, fill=blue!10, inner xsep=4.0 mm, inner ysep=2.0 mm, rounded corners=1mm, } }

  • 在中tabularray,我使用计数器库(文档中的第 48 页)

     \documentclass{article}
     \usepackage{tikz}
     \usepackage{tabularray}
     \UseTblrLibrary{counter}
     %%%%%%%%%%%%%%%%%%
     \newcounter{mycnta}
     \newcommand{\mycnta}{\stepcounter{mycnta}\arabic{mycnta}}
     %
     \tikzset{
         counter/.style=
         {
             draw=blue!30,
             fill=blue!10,
             inner xsep=4.0 mm,
             inner ysep=2.0 mm,
             rounded corners=1mm,
         }
         }
     \begin{document}
     \begin{tblr}{
         colspec={Q[l,wd=2.5em] X},
         column{1} = {cmd=\tikz[baseline] {\node[counter]{\mycnta .};}}
     }
     & Primer ítem en la lista, una línea más larga para demostrar el espaciado entre las líneas del párrafo. Primer ítem en la lista, una línea más larga para demostrar el espaciado entre las líneas del párrafo. Primer ítem en la lista, una línea más larga para demostrar el espaciado entre las líneas del párrafo.\\
     &Segundo ítem en la lista.\\
     & Tercer ítem en la lista.
     \end{tblr}
     \end{document}
    

在此处输入图片描述

相关内容