我正在尝试创建一个新的枚举列表,并以自定义形状作为其标签。我想要:
目标1.标签与文本居中对齐。(下图上部)
目标2.圆圈后的垂直线跨越了文本的高度。(下图)
在下面的 MWE 中,我使用enumitem
包实现了基本设计。但是,我很难让标签正确对齐。
\documentclass{article}
\usepackage{enumitem}
\usepackage{tikz}
\newcounter{fancycount}
\let\realitem\item
\newcommand\fakeitem[1][\relax]{
\refstepcounter{fancycount}
\realitem[\tikz{\node[circle, draw=green, minimum width=1cm, fill=green, anchor=west](a){\LARGE\arabic{fancycount}}; \draw[very thick, green] ([xshift=1cm]a.north) -- ([xshift=1cm]a.south)}#1]
}
\newlist{fancylist}{enumerate}{1}
\setlist[fancylist]{
label=\arabic*., % label format
leftmargin=*, % indent labels
before=\let\item\fakeitem,
}
\begin{document}
\begin{fancylist}
\item This is point 1.
\item This is point 2.
\item This is a big point which goes on for lines....\\
too many lines \\
and some more lines \\
ends finally.
\end{fancylist}
\end{document}
MWE 生成以下输出:
有没有办法实现目标 1 和目标 2(或至少其中之一)?感谢您的帮助。
答案1
新的解决方案
这是一个全新的解决方案,使用tcolorbox
。
这个解决方案可以满足你们两个目标。
您可以调整尺寸和长度以适合您的喜好。
\documentclass{article}
\RequirePackage[most]{tcolorbox}
\usepackage{lipsum}
\newcounter{fancycount}
\newenvironment{fancyenumerate}{%
\setcounter{fancycount}{0}
\begin{tcbitemize}[raster columns=1,
nofloat,
enhanced,
raster left skip=15.0mm,
sharp corners=all,
colback=white,
colframe=green,
toprule=0.0mm,
bottomrule=0.0mm,
leftrule=1.0mm,
rightrule=0.0mm,
boxsep=0.005\textwidth,
valign=center,
overlay={\coordinate (X) at ([xshift=-7.50mm]frame.west);
\node[draw,circle,minimum width=10.0mm,inner sep=0pt,color=green,fill=green,text=black] at (X) {\refstepcounter{fancycount}\LARGE\arabic{fancycount}};}]}{\end{tcbitemize}}
\begin{document}
\section{First List}
\begin{fancyenumerate}
\tcbitem Short.
\tcbitem Middle middle middle middle middle middle middle
middle middle middle middle.
\tcbitem \textbf{Long} \lipsum[1]
\end{fancyenumerate}
\section{Another List, Check that the Counter is Being Reset Properly}
\begin{fancyenumerate}
\tcbitem One.
\tcbitem Two\\ii,\\ II,\\ and 2.
\tcbitem Three.
\tcbitem Four.
\end{fancyenumerate}
\end{document}
原始解决方案
我正在使用\adjustbox
垂直居中项目标签。我不喜欢较长的文本项目必须放在 中的想法
minipage
。让我看看我是否可以自动执行此操作。
\documentclass{article}
\usepackage{enumitem}
\usepackage{tikz}
\newcounter{fancycount}
\let\realitem\item
\newcommand\fakeitem[1][\relax]{
\refstepcounter{fancycount}
\realitem[\adjustbox{valign=c}{\tikz{\node[circle, draw=green, minimum width=1cm, fill=green, anchor=west](a){\LARGE\arabic{fancycount}}; \draw[very thick, green] ([xshift=1cm]a.north) -- ([xshift=1cm]a.south)}#1}]
}
\newlist{fancylist}{enumerate}{1}
\setlist[fancylist]{
label=\arabic*., % label format
leftmargin=*, % indent labels
before=\let\item\fakeitem,
}
\usepackage{adjustbox}
\begin{document}
\begin{fancylist}
\item This is point 1.
\item This is point 2.
\item \begin{minipage}[c]{0.8\linewidth}
This is a big point which goes\\ on for lines.... too many
lines and\\ some more lines ends finally.
\end{minipage}
\end{fancylist}
\end{document}