
Дерево разделено на две страницы, и текстовые строки вставлены между некоторыми строками дерева. Дерево выглядит смещенным влево на следующей странице, потому что книга двусторонняя, но я не верстаю двусторонние документы. Нижняя левая ветвь магическим образом пропускает две строки и начинает нумерацию с (9).
Как автор вообще это сделал? Если бы prooftrees упростили это, я бы это сделал.
решение1
Часть этого уже можно сделать с помощью prooftrees, хотя из-за ошибки в опубликованной версии пока невозможно начать нумерацию строк с 6.
Если вы будете осторожны, вы можете использовать split here
стиль, включенный вмой другой ответи на основеКод Сашо Живановичаразделить текст prooftrees
prooftree
, вставив между ними какое-то пояснение или разрыв страницы, или что-то еще.
Примечание: Это сломается. Я не знаю где, но нет никаких сомнений, что это сломается. Это едва проверено на этом доказательстве, не говоря уже о других.
На самом деле, я обнаружил 2 существующих ошибки, prooftrees
играя с этим, дажебезразделение доказательства на части. (Это будет исправлено вскоре после того, как следующая версия Forest будет отправлена в CTAN.)
Пусть покупатель будет бдителен...
Например:
\documentclass{article}
\usepackage{prooftrees,amssymb}
% Sašo Živanović: https://tex.stackexchange.com/a/296771/
\def\hiddenparcommand{\par}
\forestset{%
declare count register={split here level},
declare toks register={split here interject},
split here level'=-1,
split here interject={},
to widest/.style={
tikz+={\path (\forestregister{tempdima}, \forestoption{y}) -- (\forestregister{tempdimb}, \forestoption{y});},
},
split here/.style={%
split here level'/.option=level,
split here interject={#1},
split tree
},
split tree/.code={%
\forestset{%
draw tree stage/.style={
for root'={
tempdima/.min={x()+min_x()}{tree},
tempdimb/.max={x()+max_x()}{tree},
for tree={%
to widest,
},
},
for nodewalk/.wrap pgfmath arg={{draw tree processing order/.style={level<=####1}}{}}{split_here_level},
for root'={draw tree},
TeX/.wrap pgfmath arg={\bigskip\hiddenparcommand ####1\hiddenparcommand}{split_here_interject},
for nodewalk/.wrap pgfmath arg={{draw tree processing order/.style={level>=####1}}{}}{(split_here_level)+1},
for root'={draw tree},
},
}
}
}
\begin{document}
\begin{prooftree}
{
line no shift=5,
just refs right,
}
[Fa, name=fa
[{\lnot((Fa \land \forall y (Fy \supset y=a))} \land Ga), checked
[{\lnot(Fa \land \forall y (Fy \supset y=a))}, checked, split here={So far, so automatic. The right hand branch closes, for we have}
[\lnot Fa, just={from:!u}, close={:!uuu,!c}
]
[{\lnot \forall y (Fy \supset y=a)}, checked
[{\exists y \lnot (Fy \supset y=a)}, just={from:!u}, checked=b
[{\lnot (Fb \supset b=a)}, just={from:!u}
]
]
]
]
[\lnot Ga
[Fa \supset Ga, just=from 3
[\lnot Fa, close={:fa,!c}]
[Ga, close={:!uu,!c}]
]
]
]
]
\end{prooftree}
\end{document}