我在 LaTeX 中使用qtree
软件包,但树节点的文本非常小。我还用它\scalebox
来缩小树,因为它不适合页面。
有没有办法增加文本的大小,同时保持树很小?我试过qtreeinithook
但\Large
没有成功,因为文本仍然不够大。
编辑:所以,问题与我在这里使用的模板有关ftp://ftp.cup.cam.ac.uk/pub/texarchive/journals/latex/tlp-cls/unpacked/tlp.cls
\documentclass[conference]{tlp}
\usepackage{qtree}
\begin{document}
\Tree [.A [ a b c d ].B !\qsetw{1cm} C ]
\newcommand\qlabelhook{\Huge}
\newcommand\qleafhook{\Huge}
\Tree [.A [ a b c d ].B !\qsetw{1cm} C ]
\end{document}
使用此代码,树的边缘变得太大,以至于树无法容纳在页面中。我猜问题出在模板上。
答案1
问题是由于tlp
类重新定义了tabular
环境而引起的,该环境由 内部使用qtree
。我在最后给出了修复方法,但还有一个更简单的解决方案。
您可以使用 usetikz-qtree
代替qtree
。语法是相同的,尽管某些命令(如\qsetw
和)\qroof
不受支持(前者是不需要的,而后者有替代语法)。 tikz-qtree
似乎与您使用的类没有相同的问题:
\documentclass[conference]{tlp}
\usepackage{tikz-qtree,tikz-qtree-compat}
\begin{document}
\begin{tikzpicture}[every tree node/.style={font=\Large,anchor=base}]
\Tree [.A [ a b c d ].B C ]
\end{tikzpicture}
\end{document}
解决问题qtree
如果您仍然需要使用,qtree
您可以将以下内容添加到您的序言中,然后 Gonzalo 的解决方案就会起作用,但第一个解决方案显然更可取。
\documentclass[conference]{tlp}
\usepackage{qtree}
\makeatletter
\renewcommand{\qshow@text}[3][c]{{#2{\begin{oldtabular}[t]
{@{\hskip\qtreepadding}#1@{\hskip\qtreepadding}}#3\end{oldtabular}}}}
\def\qroof#1.#2 {{%
\setbox\@qrscratchbox = \hbox{\let\qtreepadding=\qroofpadding
\qshow@text[l]{\qleafhook}{#1}}%
\def\qtreepadding{0pt}%
\begin{oldtabular}{@{}c@{}}
\setbox\@tempboxa = \hbox{\qshow@text{\qlabelhook}{#2}}%
\ifdim\wd\@tempboxa>0pt \box\@tempboxa \\ \fi
\unitlength=\wd\@qrscratchbox \qdraw@roof \\[-0.6ex]
\box\@qrscratchbox
\end{oldtabular}}}
\makeatother
\begin{document}
\Tree [.A [ a b c d ].B C ]
\newcommand\qlabelhook{\Huge}
\newcommand\qleafhook{\Huge}
\Tree [.A [ a b c d ].B !\qsetw{1cm} C ]
\end{document}
答案2
您可以使用\qleafhook
(对于叶子)和\qlabelhook
(对于非终端节点):
\documentclass{article}
\usepackage{qtree}
\begin{document}
\Tree [.A [ a b c d ].B !\qsetw{1cm} C ]
\newcommand\qlabelhook{\Huge}
\newcommand\qleafhook{\Huge}
\Tree [.A [ a b c d ].B !\qsetw{1cm} C ]
\end{document}