如何使 qtree 和导入的图像上的箭头与同一个编译器兼容?

如何使 qtree 和导入的图像上的箭头与同一个编译器兼容?

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一样工作。使用同​​一个单词来显示和标记位置。(仅当目标仅由字母组成时使用。)\nodetree-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]块绘制箭头。inout是给出目标节点和原点节点处箭头方向的角度(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 爱好者将为您提供帮助。

相关内容