我想要enumerate and itemize
一个矩形形状。示例图如下:
我想将此节点放置在 中\tikzpicture
。我可以绘制简单的矩形并在其中填充文本,但无法enumerate
在里面创建项目。
- 可能与以下情况相关:https://tex.stackexchange.com/a/220824/127048,但项目之间有额外的空格。
答案1
如果要在节点内使用它们,则需要将itemize
或enumerate
环境放置在某种框中(\parbox
等)。由于您还提到了间距,我建议您查看提供一些有用选项来调整此类列表间距的包。您可以这样做:minipage
enumitem
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usepackage{enumitem}
\begin{document}
\begin{tikzpicture}
\node[draw] at (0,0) {\parbox{7cm}{%}
\begin{enumerate}[nosep, left=0pt]
\item Pending \texttt{SIGINT} and \texttt{SIGQUIT} unblocked
\item Kernel invokes hanlder for \texttt{SIGINT}
\item \texttt{SIGINT} handler makes a system call
\item Kernal invokes handler for \texttt{SIGQUIT}
\end{enumerate}%
}};
\end{tikzpicture}
\end{document}
编辑
补充两点:
如果您不想缩进项目,请使用该
wide
选项。如果要使框的宽度与 一样宽
\columnwidth
,可以将内部宽度设置\parbox
为\columnwidth
(即节点内部的宽度)减去inner xsep
(节点内部的填充)的两倍。您仍会收到有关水平框过满的警告,因为节点的边框恰好位于列中文本的边缘。边框宽度为 0.4 pt,并与左侧和右侧重叠了一半的宽度,这导致框的宽度过宽了 0.4 pt。
因此,最后你会得到(我添加了一个\hrule
来显示的长度\columnwidth
):
\documentclass{article}
\usepackage{tikz}
\usepackage{enumitem}
\begin{document}
\hrule\bigskip % show \columnwidth
\noindent
\begin{tikzpicture}
\node[draw] at (0,0) {%
\parbox{\dimexpr\columnwidth-(\pgfkeysvalueof{/pgf/inner xsep})*2\relax}{%
\begin{enumerate}[nosep, wide]
\item Pending \texttt{SIGINT} and \texttt{SIGQUIT} unblocked and a long line, a unbelievably long line even
\item Kernel invokes hanlder for \texttt{SIGINT}
\item \texttt{SIGINT} handler makes a system call
\item Kernal invokes handler for \texttt{SIGQUIT}
\end{enumerate}%
}};
\end{tikzpicture}
\end{document}
但是,如果您只想在枚举周围画一个框,那么最好只使用一个\fbox
(参见 John Kormylo 的回答)。
答案2
tabularray package
使用(表格)和的解决方案tikz
:
\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{tabularray}
\UseTblrLibrary{counter}
\newcounter{tabitem}
\newcommand{\tabitem}{\stepcounter{tabitem}\makebox[21pt][r]{\arabic{tabitem}.\;\,}} % for the distance of the labels
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (2) node[above,yshift=2cm] {%
\begin{tblr}{colspec={Q[7cm,m]},rows={0.6cm,m},hlines,hline{2-4}={0pt},vlines}
\tabitem This is the first item\\
\tabitem This is the second\\
\tabitem This is the third \\
\tabitem This is a node for the circle\\
\end{tblr}};
\end{tikzpicture}
\end{document}
希望这可以帮助!
答案3
此版本使用\fbox
varwidth。
\documentclass{article}
\usepackage{varwidth}
\begin{document}
\noindent\fbox{\hspace{\dimexpr 1em-\labelwidth}% allow 1em for label
\begin{varwidth}{0.9\columnwidth}
\begin{enumerate}
\item Pending \texttt{SIGINT} and \texttt{SIGQUIT} unblocked
\item Kernel invokes hanlder for \texttt{SIGINT}
\item \texttt{SIGINT} handler makes a system call
\item Kernal invokes handler for \texttt{SIGQUIT}
\end{enumerate}%
\end{varwidth}}
\end{document}