Добавление текста к обеим сторонам SL-дерева

Мне нужно создать дерево, подобное это дерево. Код, который я написал до сих пор,

\documentclass[11pt, a4paper]{article}

% Packages
\usepackage{amsmath, amssymb, amstext}
\usepackage[linguistics]{forest}

% Margins
\usepackage[a4paper,margin=2cm]{geometry}

% Renew Commands
\renewcommand{\land}{~\&~}
\renewcommand{\implies}{\supset}
\renewcommand{\iff}{\equiv}

% Document
\begin{document}
    \begin{forest}
        [$(E \implies \lnot (P \lor Q)) \land ((Q \land E) \lor (E \land P))$
            [$E \implies \lnot (P \lor Q)$ \\ $(Q \land E) \lor (E \land P)$
                [$E \land (Q \lor P)$
                    [$E$\\$Q \lor P$
                        [$\lnot (P \lor Q)$
                            [$\lnot P \land \lnot Q$
                                [$\lnot P$\\$\lnot Q$
                                    [$Q$
                                        [$\times$]
                                    ]
                                    [$P$
                                        [$\times$]
                                    ]
                                ]
                            ]
                        ]
                    ]
                ]
            ]
        ]
    \end{forest}
\end{document}

Что пока создает это дерево. Это указывает на то, что мне нужен крайний левый столбец, содержащий нумерацию с выравниванием по левому краю, и правый столбец, содержащий объяснение правил с выравниванием по левому краю. Также было бы очень полезно, если бы вы могли включить способ, чтобы все узлы были равномерно разнесены, чтобы левый и правый столбцы были выровнены с узлами. Спасибо!


person Ethan Thoma    schedule 12.10.2020    source источник


Ответы (1)


Ничего, я решил это, используя тикз-картинку вместо леса:

\begin{tikzpicture}[level/.style={sibling distance=100mm/#1},
                    baseline,
                    >=latex,
                    every text node part/.style={align=center},
                    font=\sffamily
                    ]
                    
    \node (1a){$(E \implies \lnot [P \lor Q]) \land ([Q \land E] \lor [E \land P])$}
        child {node {$E \implies \lnot (P \lor Q)$ \\ $(Q \land E) \lor (E \land P)$}
            child {node {$\lnot E$}
                child {node {$Q \land E$}
                    child {node {$Q$\\$E$}
                         child {node {$\times$}}}
                    }
                child {node {$E \land P$}
                    child {node {$E$\\$P$}
                        child {node {$\times$}}}
                    }
                }
            child {node {$\lnot (P \lor Q)$}
                child {node {$Q \land E$}
                    child {node {$Q$\\$E$}
                        child {node {$\lnot P$\\$\lnot Q$}
                            child {node {$\times$}}}
                        }
                    }
                child {node {$E \land P$}
                    child {node {$E$\\$P$}
                        child {node {$\lnot P$\\$\lnot Q$}
                            child {node {$\times$}}}
                        }
                    }
                }
            };
                    
    \node[left=3 of 1a] {1}edge from parent[draw=none]
        child {node {2\\3}edge from parent[draw=none]
            child {node {4}edge from parent[draw=none]
                child {node {5}edge from parent[draw=none]
                    child {node {6\\7}edge from parent[draw=none]
                        child {node {8\\9}edge from parent[draw=none]}
                    }
                }
            }
        };
                    
    \node[right=3 of 1a] {$\Phi$}edge from parent[draw=none]
        child {node {$1 \land$}edge from parent[draw=none]
            child {node {$2 \implies$}edge from parent[draw=none]
                child {node {$3 \lor$}edge from parent[draw=none]
                    child {node {$5 \land$}edge from parent[draw=none]
                        child {node {$4 \lnot \lor$}edge from parent[draw=none]}
                    }
                }
            }
        };
                
\end{tikzpicture}

Что производит это:

output

Это работает путем создания первого дерева, основного, которое растет вниз, второго дерева, которое остается слева от него для нумерации, и последнего дерева справа для используемых правил.

person Ethan Thoma    schedule 16.10.2020