我对还不太熟悉tikz-dependency
,我正在尝试使用它来绘制几个依赖解析器的输出。但是,每当我使用 PDFLateX 或 LatexMk 渲染文档时,我都会得到以下输出,其中图表居中在一个奇怪的位置。tikz
pgfplot
\documentclass{article}
\usepackage[margin=1cm]{geometry}
\usepackage{pgfplots}
\usepackage{tikz-dependency}
\pgfplotsset{compat=1.14}
\begin{document}
\begin{figure}[!h]
\centering
\begin{tikzpicture}
\begin{dependency}
\begin{deptext}[column sep=0.2cm]
The \& old \& car \& broke \& down \& in \& the \& car \& park \\
\end{deptext}
\deproot{4}{root}
\depedge{3}{1}{det}
\depedge{3}{2}{amod}
\depedge{4}{3}{nsubj}
\depedge{4}{5}{compound:prt}
\depedge{9}{6}{case}
\depedge{9}{7}{det}
\depedge{9}{8}{compound}
\depedge{4}{9}{nmod:in}
\end{dependency}
\end{tikzpicture}
\caption{Stanford Output Sentence 1}
\end{figure}
\end{document}
我在用着:
- Mac OS X 10.13.2
- pdfTeX 3.14159265-2.6-1.40.18 (TeX Live 2017) 或
- LatexMk 4.52c 与两个构建工具存在同样的问题。
标题让我相信这个图形是居中的,但我猜我声明的部分内容tikzpicture
可能是错误的。我不确定如何解决这个问题,我希望其他人之前遇到过这个问题并想出如何解决这个问题。
答案1
tikzpicture
只需从代码中删除即可得到居中图:
\documentclass{article}
\usepackage[margin=1cm]{geometry}
\usepackage{pgfplots}
\usepackage{tikz-dependency}
\pgfplotsset{compat=1.14}
\begin{document}
\begin{figure}
\centering
\begin{dependency}
\begin{deptext}[column sep=0.2cm]
The \& old \& car \& broke \& down \& in \& the \& car \& park \\
\end{deptext}
\deproot{4}{root}
\depedge{3}{1}{det}
\depedge{3}{2}{amod}
\depedge{4}{3}{nsubj}
\depedge{4}{5}{compound:prt}
\depedge{9}{6}{case}
\depedge{9}{7}{det}
\depedge{9}{8}{compound}
\depedge{4}{9}{nmod:in}
\end{dependency}
\caption{Stanford Output Sentence 1}
\end{figure}
\end{document}
事实上,你不应该dependency
在 a 中包含 a tikzpicture
,因为dependency
环境已经创建了 a tikzpicture
,并且环境的嵌套行为tikzpicture
并不好。请参阅Tikz 101 的“良好实践”应包括哪些内容包括不嵌套在内的良好tikz
做法。
顺便说一句,你不应该使用[!h]
: ,figure
因为它们是浮动的,可以随意移动。如果你想将图表放在文本中的特定位置,那么你可以使用包中的center
环境来添加标题。请参阅\captionof
caption
如何影响 LaTeX 中图形和表格等浮动环境的位置?
答案2
用一些能很好地满足我需求的东西来回答我自己的问题。我不知道usetikzlibrary{positioning}
我的序言的命令。当我把它放进去并将图的前两行改为:
\begin{figure}[p]
\begin{tikzpicture}[align=center]
然后我就得到了我需要的东西。