这是对此事的后续报道问题,有人问如何在 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}