如何在矩形框内写入枚举?

如何在矩形框内写入枚举?

我想要enumerate and itemize一个矩形形状。示例图如下:

在此处输入图片描述

参考:Linux 编程接口,第 454 页

我想将此节点放置在 中\tikzpicture。我可以绘制简单的矩形并在其中填充文本,但无法enumerate在里面创建项目。

答案1

如果要在节点内使用它们,则需要将itemizeenumerate环境放置在某种框中(\parbox等)。由于您还提到了间距,我建议您查看提供一些有用选项来调整此类列表间距的包。您可以这样做:minipageenumitem

\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}

在此处输入图片描述


编辑

补充两点:

  1. 如果您不想缩进项目,请使用该wide选项。

  2. 如果要使框的宽度与 一样宽\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

此版本使用\fboxvarwidth。

\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}

相关内容