背景
我想知道是否可以使用tikzscale
缩放tikz-qtree
图形使用 tikz-qtree 的文本树太宽,不知道如何换行并使树紧凑以适应\linewidth
。不幸的是,我没有得到一个按比例缩放的图形,而是得到了我的代码片段的图片mygraph.tikz
。
代码
以下是 MWE:
\documentclass{article}
\usepackage{tikz-qtree}
\usepackage{tikzscale}
\begin{document}
\includegraphics[width=\linewidth]{mytree.tikz}
\end{document}
这是mytree.tikz
\begin{tikzpicture}
\Tree
[.A
[.B ]
[.C
[.D ]
[.E ]]]
\end{tikzpicture}
答案1
这是MMM的答案。他已经上传了补丁tikzscale
包裹到 ctan。稍后我将在他的回答导致了这个软件包的出现,在此向 MMM 表达我对这个软件包的工作以及他快速回复的感谢。发布这篇文章有点晚了,但我希望您仍然可以从这里的信息中受益。
MMM 的回答
你输出的树难道不是正确的吗?当使用稍微调整过的尺寸(否则树的高度太大而无法放在页面上)时,例如
\includegraphics[width=0.9\linewidth]{mytree.tikz}
我得到了附加的输出文件,我认为它是正确的树。如果您没有得到此输出,请使用附加的sty
-file* 和 的最新开发变体TikZ/PGF
。
* 在 ctan 中下载修补程序包
虽然树是正确的,但是节点(用边和节点的意思来说,也就是图的语言)的大小非常大,这正是 tikzscale 通常想要避免的。tikzscale
通常使用 的tikzpicture
scale 选项来迭代收敛到正确的大小,就像 一样\begin{tikzpicture}[scale=4]
。
这种方法是可行的,正如TikZ/PGF
其定义,缩放不会缩放节点(具有坐标和节点的含义,即TikZ
语音)。不幸的是,该
tikz-qtree
包似乎忽略了该定义。我不确定这是否是故意为之(我已抄送给其作者),但我认为
tikzscale
只要tikz-qtree
进行缩放,它就不能做太多事情。
您是否看过 的最新开发版本中的图表章节
TikZ/PGF
?我认为这些图表在缩放方面表现正确,这基本上意味着它们目前无法扩展。
您可以尝试使用如下代码
\makeatletter
\ifdef{\tikzscale@scale}{%
% This is not commutative, as there is an error on commutation!
\pgfmathsetlength{\parts}{\textwidth * \tikzscale@scale}%
}{}%
\makeatother
获取动态大小的变量\parts
,可用于设置节点距离或类似内容,获取可扩展的图形tikzscale
,但目前尚未得到官方支持。不过,我很想听听用例。
有关tikz-qtree
作者表示有兴趣按照 MMM 的建议修复规模实施。