如果 qtree 位于启用了 qed 符号的定理末尾,为什么它们不水平对齐?

如果 qtree 位于启用了 qed 符号的定理末尾,为什么它们不水平对齐?
\documentclass{article}

\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{qtree}

\declaretheorem[name=Example,qed=\ensuremath{\triangleleft}]{example}
\declaretheorem[name=Example2]{example2}

\begin{document}

\begin{example}
    Bla:

    \Tree [.cons [.s [.s [.s 0 ] ] ] [.cons [.s 0 ] nil ] ]
\end{example}

\begin{example2}
    Bla:

    \Tree [.cons [.s [.s [.s 0 ] ] ] [.cons [.s 0 ] nil ] ]
\end{example2}

\end{document}

第二个居中,第一个不居中。为什么?该怎么办?

最后,我想将几​​棵树水平对齐,如下所示:

\begin{example2}
    Bla:

    \Tree [.nil ]
    \Tree [.cons 0 nil ]
    \Tree [.cons [.s [.s [.s 0 ] ] ] [.cons [.s 0 ] nil ] ]
\end{example2}

答案1

来自以下文档qtree

Qtree[t]尝试将树的最顶部标签与文本的基线对齐,类似于对齐选项的效果\parbox。要将树垂直居中在基线上,请将整个树放在表格环境中。

你有两种策略:

\documentclass{article}

\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{qtree}

\declaretheorem[name=Example,qed=\ensuremath{\triangleleft}]{example}

\begin{document}

\begin{example}
Bla:

\raisebox{\depth}{%
  \Tree [.cons [.s [.s [.s 0 ] ] ] [.cons [.s 0 ] nil ] ]%
}
\end{example}

\end{document}

第二种策略是使用tikz-qtree与共享相同语法的qtree,但功能更强大:

\documentclass{article}

\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{tikz-qtree}

\declaretheorem[name=Example,qed=\ensuremath{\triangleleft}]{example}

\begin{document}

\begin{example}
Bla:

\begin{tikzpicture}
  \Tree [.cons [.s [.s [.s 0 ] ] ] [.cons [.s 0 ] nil ] ]
\end{tikzpicture}
\end{example}

\end{document}

两种情况下的放置都不是很完美,因此可能需要进行一些小的调整。

为了居中,使用equation*环境和\qedhere功能:

\documentclass{article}

\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{tikz-qtree}

\declaretheorem[name=Example,qed=\ensuremath{\triangleleft}]{example}

\begin{document}

\begin{example}
Bla:

\begin{equation*}
\begin{tikzpicture}
  \Tree [.cons [.s [.s [.s 0 ] ] ] [.cons [.s 0 ] nil ] ]
\end{tikzpicture}}\qedhere
\end{equation*}
\end{example}

\end{document}

在此处输入图片描述

相关内容