我正在尝试生成一个编号列表,列表右侧带有括号,用于将列表项分组到其他类别中。我试图得到类似这样的结果:
我摆弄过 \mbox 和 \frame,甚至考虑过使用表格,但我必须重新开始列表编号,并且我想确保对齐是正确的。
这是可以做到的吗?
格伦
答案1
是的,这可以轻松完成\tikzmark
。有了这个,你
enumerate
按照通常方式完成列表- 用
\tikzmark{<name>}
- 使用选项访问这些
\tikzmark
s并根据需要绘制。\tikzpicture
[overlay,remember picture]
笔记:
这确实需要两次运行。第一次确定位置,第二次进行绘图。
来自
\tikzmark
在正文旁边添加大括号。
参考:
代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node[baseline] (#1) {};}
\tikzset{My Node Style/.style={midway, right, xshift=3.0ex, align=left, font=\small, draw=none, thin, text=black}}
\newcommand\VerticalBrace[4][]{%
% #1 = draw options
% #2 = top mark
% #2 = bottom mark
% #4 = label
\begin{tikzpicture}[overlay,remember picture]
\draw[decorate,decoration={brace, amplitude=1.5ex}, #1]
([yshift=1ex]#2.north east) -- ([yshift=-1ex]#3.south east)
node[My Node Style] {#4};
\end{tikzpicture}
}
\begin{document}
\begin{enumerate}
\item Item 1\tikzmark{top 1}
\item Item 2\tikzmark{bottom 1}
\item Item 3\tikzmark{top 2}
\item Item 4
\item Item 5
\item Item 6\tikzmark{bottom 2}
\end{enumerate}
\VerticalBrace[ultra thick, blue]{top 1}{bottom 1}{The first two items}
\VerticalBrace[ultra thick, blue]{top 2}{bottom 2}{The last four items}
\end{document}
答案2
这个例子使用了tikzmark
针对这个网站上提出的问题而开发的库,Peter Grill 在他的回答中链接到了这些问题:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc,decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}[remember picture, overlay]
\node (rightenum) at (.15\textwidth,0) {};
\draw [decorate, decoration={brace}, thick] ($({pic cs:top1} -| rightenum) + (0, 1em)$) -- ({pic cs:bot1} -| rightenum) node [midway, right] {first two items};
\draw [decorate, decoration={brace}, ultra thick] ($({pic cs:top2} -| rightenum) + (0, 1em)$) -- ({pic cs:bot2} -| rightenum) node [midway, right] {last four items};
\end{tikzpicture}
\begin{enumerate}
\item\tikzmark{top1} first
\item\tikzmark{bot1} second
\item\tikzmark{top2} third
\item fourth
\item fifth
\item\tikzmark{bot2} sixth
\end{enumerate}
\end{document}