![Логически защищенные пунктирные поля для естественной дедукции](https://rvso.com/image/328799/%D0%9B%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%20%D0%B7%D0%B0%D1%89%D0%B8%D1%89%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BF%D1%83%D0%BD%D0%BA%D1%82%D0%B8%D1%80%D0%BD%D1%8B%D0%B5%20%D0%BF%D0%BE%D0%BB%D1%8F%20%D0%B4%D0%BB%D1%8F%20%D0%B5%D1%81%D1%82%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B4%D0%B5%D0%B4%D1%83%D0%BA%D1%86%D0%B8%D0%B8.png)
Я используюЛогически устойчивыйПакет для написания доказательств в стиле Fitch. Он создает среды с использованием табличных, чтобы сделать написание доказательств менее хлопотным.
Похоже, я не могу понять, как создать пунктирную рамку в поддоказательстве, как в этом примере:
Вот что у меня есть на данный момент. Однако второе поддоказательство должно использовать пунктирный блок.
\documentclass{article}
\usepackage{logicproof}
\usepackage{amssymb}
\begin{document}
\begin{logicproof}{2}
\begin{subproof}
\square p \land \square q & assumption\\
\square p & $\land \mathrm{e}_1$ 1\\
\square q & $\land \mathrm{e}_2$ 1\\
\begin{subproof} %This should have a dashed box
p & $\square \mathrm{e}$ 2\\
q & $\square \mathrm{e}$ 3\\
p \land q & $\land \mathrm{i}$ 4, 5
\end{subproof}
\square (p \land q) & $\square \mathrm{i}$ 4--6
\end{subproof}
\square p \land \square q \to \square (p \land q) & $\to \mathrm{i}$ 1--7
\end{logicproof}
\end{document}
Кто-нибудь знает, можно ли создать пунктирное поддоказательство с помощью logicproof?
Если это невозможно, как можно создать среду, подобную субустойчивой?
решение1
Поскольку никто не ответил на этот вопрос уже почти месяц, я собираюсь опубликовать свое частичное решение в надежде, что кто-то еще примет вызов.
Пакет использует tabular
среду, в основном, для построения доказательства. Он использует ее \cline
для рисования горизонтальных линий. Так что, если мы сможем заменить пунктирные линии, мы сможем решить половину проблемы.
arydshln
поддерживает горизонтальные и вертикальные пунктирные линии в средах tabular
и array
. Поэтому мы можем заменить его \cdashline{}
на стандартный \cline{}
.
Мы делаем это, создавая измененную копию logicproof
команды \lp@cr@clines
, которую мы называем \lp@cr@cdashlines
, и измененную копию logicproof
среды subproof
, которую мы называем subproofd
. subproofd
использует \lp@cr@cdashlines
, где subproof
использует \lp@cr@clines
, и \lp@cr@cdashlines
использует , \cdashline{}
где \lp@cr@clines
использует cline{}
.
Результатом этого является то, что мы можем использовать subproofd
вместо subproof
для набора текста подкорректуру, горизонтальные линии рамки которой являются пунктирными, а не сплошными.
Очевидно, что оставшаяся проблема — сделать вертикальные линии коробки пунктирными. Проблема в том, что arydshln
поддерживает вертикальные пунктирные правила, предоставляя альтернативу |
для спецификаций tabular
/ .array
Но logicproof
не использует этот механизм для рисования вертикальных линий своих блоков, как показано в его стандартной спецификации столбцов:
{{r@{~~~}*{#1}{l}@{~}>{$}l<{$}@{~~~~}l@{~}*{#1}{r}}}
Вместо этого он использует \vline
и я не уверен, как это сделатьэтиразбросанных по subproofd
окружающей среде.
\documentclass{article}
\usepackage{logicproof}
\usepackage{arydshln}
\usepackage{amssymb}
\newcommand*{\nec}{\ensuremath{\mathord{\square}}}
\makeatletter
\newcommand{\lp@cr@cdashlines}{% modified copy of lp@cr@clines
\lp@set@clines%
\lp@orig@arraycr%
\cdashline{\value{lp@cline@1}-\value{lp@cline@2}}%
}
\newenvironment{subproofd}{% modified copy of subproof
\ifthenelse{%
\value{lp@total@nests}>\value{lp@nested}%
}{% All is well; don't do anything.
}{%
\PackageError{logicproof}{Too many nested subproofs!}{%
Increase the maximum number of nested subproofs allowed
in the current logicproof environment.%
}%
}%
\endgroup%
\lp@stop@proof@line%
\lp@orig@arraycr%
\lp@add@space%
\lp@go@up@a@line%
\stepcounter{lp@nested}%
\lp@cr@cdashlines%
&%
\lp@continue@proof@line%
}{%
\ifthenelse{%
0<\value{lp@nested}%
}{% All is well; don't do anything.
}{%
\PackageError{logicproof}{Cannot end a subproof before it begins}{%
You must have a \protect\begin{subproof} before you can use %
\protect\end{subproof}.%
}%
}%
\lp@stop@proof@line%
\lp@cr@cdashlines%
\addtocounter{lp@nested}{-1}%
\lp@extend@space%
\lp@start@proof@line%
\begingroup%
\def\@currenvir{subproofd}%
}
\makeatother
\begin{document}
\begin{logicproof}{2}
\begin{subproof}
\nec p \land \nec q & assumption\\
\nec p & $\land \mathrm{e}_1$ 1\\
\nec q & $\land \mathrm{e}_2$ 1\\
\begin{subproofd} %This should have a dashed box
p & $\nec \mathrm{e}$ 2\\
q & $\nec \mathrm{e}$ 3\\
p \land q & $\land \mathrm{i}$ 4, 5
\end{subproofd}
\nec (p \land q) & $\nec \mathrm{i}$ 4--6
\end{subproof}
\nec p \land \nec q \to \nec (p \land q) & $\to \mathrm{i}$ 1--7
\end{logicproof}
\end{document}