Fancybox 中的自定义枚举环境

Fancybox 中的自定义枚举环境

我想将枚举环境(使用包定制enumitem)放在从中shadowbox创建的Fancybox 包。这是我的 MWE:

\documentclass[letterpaper,10pt,american]{article}
\usepackage[left=1 in, right=1 in, top=1 in, bottom=1 in]{geometry}
\usepackage{amsmath,amsfonts,amssymb,amsthm,color,hyperref,enumitem}
\usepackage{setspace}
\usepackage{caption}
\usepackage{pgf,tikz}
\usetikzlibrary{automata,arrows,positioning,calc,decorations.pathreplacing}
\usepackage{fancybox}
\begin{document}
\shadowbox{
\begin{enumerate}[before=\itshape,font=\normalfont,label=\textbf{ABC.\arabic*}]
\item Item 1
\item Item 2
\item Item 3
\end{enumerate}}
\end{document}

但是,我的枚举环境的自定义没有显示:只显示数字 1.、2.、3.,而不是ABC.1ABC.2ABC.3。我做错了什么吗?是什么原因导致enumitem自定义功能无法在内部运行fancybox

编辑:我们几乎已经解决了这个问题!但还有一个小问题需要解决:当列表中有十个或更多项目时,ABC.10、ABC.11、ABC.12 等将泄漏到框外。

答案1

对@Harish Kumar 的解决方案进行了一些改进:enumitem有解决长标签泄漏问题的工具:键wide=widest=

对于较长的项目,还存在一个问题:框会泄漏到边距中right。我针对 3 种不同的布局提出了 3 种解决方案:一种是两侧都有缩进,另一种是只有阴影泄漏到右边距中,还有一种根本没有泄漏。此外,我简化了边距的代码,因为它们都是相等的,并使用选项showframe来演示会发生什么:

\documentclass[letterpaper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[margin=1 in, showframe]{geometry}
\usepackage{enumitem}
\usepackage{fancybox}
\usepackage{varwidth}
\begin{document}

\shadowbox{%
  \begin{varwidth}{\dimexpr\linewidth-2\fboxsep-\shadowsize-\parindent\relax}
    \begin{enumerate}[before=\itshape,wide = 0pt, font=\normalfont,label=\textbf{ABC.\arabic*}]
      \item Item 1\setcounter{enumi}{99}
      \item Item 2 \emph{This one’s a very long item. This one’s a very long item. This one’s a very long item. This one’s a very long item.}
      \item Item 3
    \end{enumerate}
  \end{varwidth}
}
\vskip1cm
\noindent\shadowbox{%
  \begin{varwidth}{\dimexpr\linewidth-2\fboxsep-2\shadowsize\relax}
    \begin{enumerate}[before=\itshape,wide = 0pt, font=\normalfont, leftmargin =*, label=\textbf{ABC.\arabic*},widest =999]
      \item Item 1\setcounter{enumi}{99}
      \item Item 2. \emph{This one’s a very long item. This one’s a very long item. This one’s a very long item. This one’s a very long item.}
      \item Item 3
    \end{enumerate}
  \end{varwidth}
}
\vskip1cm
\noindent\shadowbox{%
  \begin{varwidth}{\dimexpr\linewidth-2\fboxsep-\shadowsize\relax}
    \begin{enumerate}[before=\itshape,wide = 0pt, font=\normalfont, leftmargin =*, label=\textbf{ABC.\arabic*},widest =999]
      \item Item 1\setcounter{enumi}{99}
      \item Item 2. \emph{This one’s a very long item. This one’s a very long item. This one’s a very long item. This one’s a very long item.}
      \item Item 3
    \end{enumerate}
  \end{varwidth}
}
\end{document} 

在此处输入图片描述

答案2

tcolorbox这是一个可替代的可破坏版本:

\documentclass[letterpaper,10pt,american]{article}
\usepackage[left=1 in, right=1 in, top=1 in, bottom=1 in]{geometry}
\usepackage{amsmath,amsfonts,amssymb,amsthm,color,enumitem}


\usepackage{setspace}
\usepackage{caption}
\usepackage{pgf,tikz}
\usetikzlibrary{automata,arrows,positioning,calc,decorations.pathreplacing}
%\usepackage{fancybox}
\usepackage[most]{tcolorbox}
\usepackage{xpatch}

\newtcolorbox{enumshadebox}[1][]{breakable, enhanced jigsaw,sharp corners, colframe=black,drop shadow,boxsep=5pt,#1}
\usepackage{hyperref}



\begin{document}

\begin{enumshadebox}
\begin{enumerate}[leftmargin=50pt,before=\itshape,font=\normalfont,label=\textbf{ABC.\arabic*},widest={ABC.100}]
\foreach \x in {1,...,60} {%
  \item \x
}
\end{enumerate}
\end{enumshadebox}

\end{document}

在此处输入图片描述

答案3

您必须enumerate在里面使用minipage。如果您想要一个紧密的盒子,请使用varwidth包装。leftmargin=*另外使用。

\documentclass[letterpaper,10pt]{article}
\usepackage[left=1 in, right=1 in, top=1 in, bottom=1 in]{geometry}
\usepackage{enumitem}
\usepackage{fancybox}
\usepackage{varwidth}
\begin{document}
\shadowbox{%
\begin{varwidth}{\linewidth}
\begin{enumerate}[before=\itshape,leftmargin=*,font=\normalfont,label=\textbf{ABC.\arabic*}]
\item Item 1
\item Item 2
\item Item 3
\end{enumerate}
\end{varwidth}
}
\end{document}

在此处输入图片描述

相关内容