如何更改盒装列表环境中的缩进

如何更改盒装列表环境中的缩进

我在 tcolorbox 里面有一个列表环境,我想对缩进进行一些控制,因为有时我在里面使用多列,由于项目的缩进较大,它会产生奇怪的结果。

\documentclass{standalone}

\usepackage{tcolorbox}
\usepackage{multicol}

\newtcolorbox{objbox}[1] {colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,title=#1, before skip=0.5cm, after skip=0.5cm}  %   

\newenvironment{objectives}{%                                                                                                           
    \begin{objbox}{Objectives:} \begin{list}{\(\bullet\)}{}%                                                                    
}{%                                                                                                                         
    \end{list} \end{objbox}%                                                                                
}%  

\begin{document}

\begin{objectives}
    \item foo:
    \begin{multicols}{2}
        \item one
        \item two
    \end{multicols}
\end{objectives}

\end{document}

如果可能的话,我希望它有一个可选参数来控制距离,当为空时设置一个默认值,但我很乐意使用一个命令来改变整个文档的距离。

答案1

这里有三种解决方案:一种使用 的参数enumitem(主要是wide选项)和multicols,第二种基于tasks包,最后一种使用shortlst包,该包在 CTAN 上可用,但不是 TeX Live 或 MiKTeX 的包(出于许可原因)。如果某个项目溢出到下一列,shortlst 会自动完成,但它不会管理需要多行的项目。对于这种情况,我必须定义一个\paritem,它定义一个\parbox带有可选参数的命令,即它将分布在的列数,以及一个强制参数,即它的内容。

\documentclass{article}
\usepackage{enumitem}
\usepackage{tasks}
\usepackage{tcolorbox}
\usepackage{multicol}
\usepackage{shortlst, setspace}
\newenvironment{boxeditemize}[1][3]{\settowidth{\labelwidth}{\mbox{\textbullet}}%
\setlength{\leftmargini}{\dimexpr\labelwidth+\labelsep\relax}%
\setlength{\shortitemwidth}{\dimexpr\linewidth/#1-\labelwidth-2\labelsep\relax}%
\begin{shortitemize}}%{1.333}
{\end{shortitemize}}%
%%
\newtcolorbox{objbox}[1] {colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,title=#1, before skip=0.5cm, after skip=0.5cm} %

\newenvironment{myobjectives}{%
    \begin{objbox}{Objectives: (with \texttt{enumitem})} \begin{itemize}[wide=0pt, leftmargin =*]%
}{%
    \end{itemize} \end{objbox}%
}%

\newenvironment{otherobjectives}[1][3]{%
 \begin{objbox}{Objectives (with \texttt{shortlst})}%
\begin{boxeditemize}[#1]
}{%
 \end{boxeditemize} \end{objbox}%
}%

\newcommand\paritem[2][1]{\item \parbox[t]{#1\shortitemwidth}{#2\medskip}}

\begin{document}

\begin{myobjectives}
 \item foo:
  \begin{multicols}{2}
 \item one
 \item two
 \end{multicols}
\end{myobjectives}

\par
\begin{objbox}{Objectives: (with \texttt{tasks})}\settasks{style = itemize, item-indent = 0em, label-offset =-0.2em, before-skip = -1.5ex, after-skip =-3ex}%
\begin{tasks}(2)
 \task* foo:
 \task one
 \task two
 \end{tasks}
\end{objbox}

\begin{otherobjectives}[2]\setstretch{2.5}
 \item foo:
 \item one
 \item two
\end{otherobjectives}

\begin{otherobjectives}[2]
 \item foo;
 \paritem[2] {Bla bla bla bla bla. Bla bla bla bla bla. Bla bla bla bla bla. Bla bla bla bla bla. }
 \paritem{Bli bli bli bli bli. Bli bli bli bli bli. Bli bli bli bli bli. Bli bli bli bli bli. Bli bli bli bli bli. }
 \item one
 \item two
\end{otherobjectives}

\end{document} 

在此处输入图片描述

答案2

如果您确实指的是和之间的水平空间onetwo您可以尝试将 multicol 放在具有设定宽度的 parbox 内,例如像这样:

\documentclass{standalone}

\usepackage{tcolorbox}
\usepackage{multicol}

\newtcolorbox{objbox}[1] {colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,title=#1, before skip=0.5cm, after skip=0.5cm}  %   

\newenvironment{objectives}{%                                                                                                           
    \begin{objbox}{Objectives:} \begin{list}{\(\bullet\)}{}%                                                                    
}{%                                                                                                                         
    \end{list} \end{objbox}%                                                                                
}%  

\begin{document}

\begin{objectives}
    \item foo: % empty line below this is important

    \parbox{5cm}{
        \begin{multicols}{2}
            \item one
            \item two
        \end{multicols}
    }
\end{objectives}

\end{document}

相关内容