背景

背景

背景

我想知道是否可以使用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通常使用 的tikzpicturescale 选项来迭代收敛到正确的大小,就像 一样\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 的建议修复规模实施。

相关内容