减少树中子节点的宽度

减少树中子节点的宽度

我希望减少树中子元素之间的宽度。请看下面的图片: 在此处输入图片描述

F 的右子节点由于左子节点否定(r)而被隐藏。这是我的 latex 文件现在的样子

\documentclass[12pt,letterpaper]{article}
\usepackage[margin = 1in]{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{fancyhdr}
\usepackage{tikz}
\usetikzlibrary{trees}

\begin{document}

    \begin{center}
        \begin{tikzpicture}[sibling distance=10em,
                            every node/.style = {
                                shape=rectangle,
                                rounded corners,
                                draw,
                                align=center,
                                top color=white,
                                bottom color=blue!5}]]
                    \node {$\varnothing$}
                        child{node {F}
                            child{node {$\lnot$p}
                                    child{node {$\lnot$p$\lor$ q}}
                                    child{node {$\lnot$q}}
                                }
                            child{node {p}}
                            }
                        child{node {$\lnot$r}
                                child{node {$\lnot$r$\lor$ s}}
                                child{node {$\lnot$s}}
                            }
                        child{node {r}};
        \end{tikzpicture}
    \end{center}
     
    
\end{document}


我该如何解决这个问题?提前致谢!

答案1

解决树问题的基本方法是不要使用基本的 TikZ 树方法。它们的语法很笨重,并且不会自动定位节点(正如您所发现的)。而是用于forest制作树。它的语法要简单得多,可以自动打包节点以使树尽可能紧凑,但允许您根据需要使它们不那么紧凑。

但是你展示的代码中还有许多其他错误。看来你需要阅读一篇关于如何更广泛地使用 LaTeX 的基本介绍。以下是我注意到并修复的一些问题(可能还有其他我遗漏的问题)。有关初学者常犯的错误列表,请参阅(La)TeX 及其它初学者最常犯的错误是什么?。 也可以看看对于 LaTeX 初学者来说有哪些好的学习资源?尤其是新的 https://www.learnlatex.org/地点。

  1. 手动编号。LaTeX 最棒的功能之一就是它能够为您编号元素。您永远不必手动编号任何内容。因此,我用\subsection命令替换了您手动编号的段落。
  2. itemize如果某些东西看起来像一个逐项列表,那么就把它变成一个逐项列表:我已经用使用enumitem包来格式化项目的环境替换了您的手册“我们将学到什么”部分。
  3. 显示的数学运算通过使用\[ ... \]not来居中\begin{center} ... \end{center}。在 LaTeX 中你应该绝不用于$$ ... $$引入显示的数学。请参阅为什么 \[ ... \] 比 $$ ... $$ 更可取?并且$$、\[、align、equation 和 displaymath 之间有什么区别?以获得更多选项。
  4. 你永远不应该使用它\\来结束一个段落,并且在连续文本中你通常不应该使用它。参见何时使用 \par,何时使用 \\、\newline 或空行

\documentclass[12pt,letterpaper]{article}
\usepackage[margin = 1in]{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{fancyhdr}
\usepackage{enumitem}
\usepackage[small]{titlesec}
\usepackage{tikz}
\usepackage[linguistics]{forest}
\forestset{mynode/.style={ shape=rectangle,
                                rounded corners,
                                draw,
                                align=center,
                                top color=white,
                                bottom color=blue!5,
                                math content}}


\author{\emph{Muppuri Siva Jagadesh}}
\title{\textbf{Discrete Maths}}

\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}

\fancyhf{}
\rhead{
    Assignment 1
}
\rfoot{Page \thepage}

\begin{document}
    \maketitle
    \section{LECTURE 1: SAT PROBLEM}
    
    \subsection{What will we learn?}
    \begin{itemize}[label=$\rightarrow$]
        \item Satifiability
       \item Conjunctive Normal Forms
     \end{itemize}   
    \subsection{Satisfiability}
        A compound proposition is satisfiable if it is true for at least one truth assignment of the underlying propositional variables.
        \[
            \text{e.g.: } (p \lor \lnot q) \land (q \lor \lnot r)
      \]
        
    \subsection{}
        \begin{enumerate}
            \item Replace all $\Leftrightarrow$ symbol (if any)
            \[
                (p \Leftrightarrow q) \equiv (p \rightarrow q) \land (q \rightarrow p)
            \]
            \item \[\sum_{n=1}^{\infty} 2^{-n} = 1\]
        \end{enumerate}
        
    
    \subsection{}
        \begin{forest}for tree={mynode, s sep=1cm}
        [\varnothing
            [F
                [\lnot p 
                    [\lnot p \lor q ]
                    [\lnot q ]
                ]
                [p ]
            ]
            [\lnot r 
                [\lnot r \lor s ]
                [\lnot s ]
            ]
            [r]
        ]
    \end{forest}                        
      
    
\end{document}

代码输出

答案2

您应该只在这里放置您的问题所需的代码,与您的问题无关的个人信息和代码不应该放在问题中。

level 1这里用和样式来调整子项之间的距离就足够了level 2

level 1/.style={sibling distance=10em},
level 2/.style={sibling distance=5em},

截屏

\documentclass[border=5mm]{standalone}
\usepackage{amssymb}
\usepackage{tikz}
\usetikzlibrary{trees}


\begin{document}
        \begin{tikzpicture}[%sibling distance=10em,
        level 1/.style={sibling distance=10em},
        level 2/.style={sibling distance=5em},
                            every node/.style = {
                                shape=rectangle,
                                rounded corners,
                                draw,
                                align=center,
                                top color=white,
                                bottom color=blue!5}]]
                    \node {$\varnothing$}
                        child{node {F}
                            child{node {$\lnot$p}
                                    child{node {$\lnot$p$\lor$ q}}
                                    child{node {$\lnot$q}}
                                }
                            child{node {p}}
                            }
                        child{node {$\lnot$r}
                                child{node {$\lnot$r$\lor$ s}}
                                child{node {$\lnot$s}}
                            }
                        child{node {r}};
        \end{tikzpicture}
\end{document}

相关内容