在 itemize 环境中围绕几个项目的嵌套框

在 itemize 环境中围绕几个项目的嵌套框

这是对此事的后续报道问题,有人问如何在 itemize 环境中围绕一些项目创建一个框。我遇到了类似的问题,但我的情况稍微复杂一些,因为我希望能够生成如下图所示的内容。

在此处输入图片描述

我尝试采用上述链接中的解决方案,但是它不起作用,因为当我添加更多标记时,左边的标记会被覆盖。

有人有解决这个问题的方法吗?

- - 编辑 - -

这是我目前所拥有的,没有嵌套框也能很好地工作

\documentclass{article}
\usepackage[a4paper,top=3cm,left=2.5cm,right=2.5cm,bottom=3cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{xparse}
\usepackage{calc}
\usepackage{tikz}
\usetikzlibrary{calc}

\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}
\newcommand{\bitem}[3]{\makebox[#1]{#2\hfill} \quad #3}
\newcommand{\bitemL}[3]{\tikzmark{left}\makebox[#1]{#2\hfill} \quad #3}
\newcommand{\bitemR}[3]{\makebox[#1]{#2\hfill}\tikzmark{right} \quad #3}

\makeatletter
\NewDocumentCommand{\DrawBox}{s O{}}{%
    \tikz[overlay,remember picture]{
    \IfBooleanTF{#1}{%
        \coordinate (RightPoint) at ($(left |- right)+(\linewidth-\labelsep-\labelwidth,0.0)$);
    }{%
        \coordinate (RightPoint) at (right.east);
    }%
    \draw[black]
      ($(left)+(-0.2em,0.9em)$) rectangle
      ($(RightPoint)+(0.2em,-0.3em)$);}
}

\makeatother

\begin{document}

    \medskip\par\noindent
    \begin{minipage}{0.4\linewidth}
        \begin{enumerate}
            \item [1.]{\bitem{2cm}{$\neg Q \rightarrow \neg P$}{$(premissa)$}}
            \item [2.]{\bitemL{2cm}{$P$}{$(hipótese)$}}
            \item [3.]{\bitem{2cm}{$\neg \neg P $}{$(\neg \neg i ~ 2)$}}
            \item [4.]{\bitemR{2cm}{$\neg \neg Q $}{$(MT ~ 1, 3)$}}
            \item [5.]{\bitem{2cm}{$P \rightarrow \neg \neg Q$}{$(\rightarrow i ~ 2,4)$}}
        \end{enumerate}
        \DrawBox[thick]
    \end{minipage}

\end{document}

此代码将产生此在此处输入图片描述

答案1

我确实专注于这里的框,忽略了 Symbol 1 的 easylist 等不错的建议。这主要是为了宣传新版本的 LoopSpacestikzmark库,可以在这里。该库包含一个新命令,,\tikzmarknode可用于将某些文本的普通元素变成节点。令人惊奇的是,它会检查您是否处于数学模式,并相应地排版文本。因此,您可以定义一些节点并使用该fit库在它们周围绘制框。这些框将始终包含节点,因此您可能希望将它们设置在某些极值位置。并且您可以嵌套这些拟合,这可能有助于您拥有嵌套框,如下例所示。当然,布局还有很大的改进空间。

\documentclass{article}
\usepackage{amssymb,tikz}
\usetikzlibrary{tikzmark,fit}
\begin{document}
\begin{enumerate}
 \item \qquad $\tikzmarknode{q1}{q}\to r$ \hfill hypothesis\\[2mm]

 \item \qquad\qquad $\tikzmarknode{neg1}{\neg q\to\neg p}$ \hfill hypothesis\\[2mm]

 \item \qquad\qquad\qquad $\tikzmarknode{p1}{p}$ \hfill hypothesis

 \item \qquad\qquad\qquad $\neg\neg p$ \hfill hypothesis

 \item \qquad\qquad\qquad $\tikzmarknode{neg2}{\neg\neg p}$ \hfill hypothesis\\[2mm]

 \item \qquad\qquad $p\to \tikzmarknode{r2}{r}$ \hfill hypothesis\\[2mm]

 \item \qquad $(\neq p\to \neq q)\to p\to \tikzmarknode{r1}{1}$
\end{enumerate}
\begin{tikzpicture}[overlay,remember picture]
\node[draw,inner sep=9pt,fit=(q1)(r1)]{};
\node[draw,inner sep=9pt,fit=(neg2)(p1)](fit2){};
\node[draw,inner sep=9pt,fit=(neg1)(r2)(fit2)]{};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容