qtree
问题是,当我使用文档中可见的图像来显示箭头时,我导入文档中的图像将无法编译(图像命令旁边出现“无边界框”错误消息)[tree-dvips]
。
为了使箭头在文档中可见,我必须从 pdfLaTeX 编译器切换到 LaTeX 编译器(我正在使用 ShareLaTeX)。而且 LaTeX 编译器似乎与该graphicx
包不兼容。
我该如何解决这种不兼容性,以便图像和箭头都显示出来?
以下是我使用的最少的命令:
\documentclass[8pt]{article}
\usepackage{qtree}
\usepackage{linguex}
\usepackage{graphicx}
\usepackage{qtree}
\usepackage{tree-dvips}
\begin{document}
\begin{figure}[!hbtp]
\centering
\includegraphics[width=0.4\textwidth]{CorpusData.png}
\caption{Corpus data (Diesing\&Zec 2011)}
\label{fig:SerbianCorpusData}
\end{figure}
\ex.
\qtreecenterfalse
\Tree[.BeP \phantom{DP} [.Be' [.Be [.A$_i$ \node{trace}{ important} ] be ]
[.SC \qroof{this task}.DP
[.AP [.DegP very ] \node {adjective}{t$_i$} ] ] ] !\qsetw{3cm} ]
\anodecurve [bl]{adjective}[b]{trace}{0.5in}
\end{document}
答案1
确实是时候让这个tree-dvips
例子退役并用一些不那么过时的东西代替了(mea culpa)。Qtree 与 pdflatex 配合得很好,与 tikz 配合得很好——所以这里是如何用 绘制箭头tikz
,而不需要切换树包或 (la)tex 引擎。
就像 一样tree-dvips
,您可以在页面上定义位置(“节点”)并在树完成后绘制箭头,但此时您仍在同一页面上。它通过辅助文件工作,因此您需要运行 latex 几次。这是一个完整的工作示例;它与 pdflatex 一起工作,因此它与包含 png 图像兼容。
\documentclass{article}
\usepackage{graphicx}
% tikz package, ``remember'' option, and two convenience commands
\usepackage{tikz}
\tikzstyle{every picture}+=[remember picture]
% For drawing movement lines: \tnode{label}{target}
\def\tnode#1#2{{\tikz\node[shape=rectangle, inner sep=2pt](#1){#2};}}
% Use the target word as a label too
\def\xnode#1{\tnode{#1}{#1}}
\usepackage{qtree}
\begin{document}
\includegraphics[width=0.4\textwidth]{CorpusData.png}
\begin{enumerate}
\item[(1)] \Tree[.BeP ~ [.Be\1
[.Be [.A_i \xnode{important} ] be ]
[.SC \qroof{this task}.DP
[.AP [.DegP very ] \tnode{trace}{t_i} ] ]
] !\qsetw{3cm} ]
\begin{tikzpicture}[overlay]
\path[->,thick](trace) edge [out=-90, in=-110](important);
\end{tikzpicture}
\vspace*{0.5cm} % Reserve space under the tree for the arrow,
% which is invisible to TeX's boxing machinery
\end{enumerate}
\end{document}
这是输出的树部分:
该示例包括 tikz,打开该[remember picture]
功能,并定义两个便利宏:与的功能\tnode
一样工作。使用同一个单词来显示和标记位置。(仅当目标仅由字母组成时使用。)\node
tree-dvips
\xnode
\xnode
% For drawing movement lines: \tnode{label}{target}
\def\tnode#1#2{{\tikz\node[shape=rectangle, inner sep=2pt](#1){#2};}}
% Use the target word as a label too
\def\xnode#1{\tnode{#1}{#1}}
该tikzpicture[overlay]
块绘制箭头。in
和out
是给出目标节点和原点节点处箭头方向的角度(0 度 = 向右)。此叠加从标记为 的位置绘制trace
到标记为 的位置important
。
\begin{tikzpicture}[overlay]
\path[->,thick](trace) edge [out=-90, in=-110](important);
\end{tikzpicture}
您还可以添加[dashed]
路径选项来获得虚线箭头:
\path[->,thick,dashed](node1) edge [out=-160, in=-90] (node2);
对于简单的情况来说,这应该足够了。如果您需要更复杂的情况,本网站上的 tikz 爱好者将为您提供帮助。