使用 tikz-dependency 强制页面居中对齐

使用 tikz-dependency 强制页面居中对齐

我对还不太熟悉tikz-dependency,我正在尝试使用它来绘制几个依赖解析器的输出。但是,每当我使用 PDFLateX 或 LatexMk 渲染文档时,我都会得到以下输出,其中图表居中在一个奇怪的位置。tikzpgfplot

未对齐的依赖图 生成此类输出的代码是:

\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环境来添加标题。请参阅\captionofcaption如何影响 LaTeX 中图形和表格等浮动环境的位置?

答案2

用一些能很好地满足我需求的东西来回答我自己的问题。我不知道usetikzlibrary{positioning}我的序言的命令。当我把它放进去并将图的前两行改为:

\begin{figure}[p]
\begin{tikzpicture}[align=center]

然后我就得到了我需要的东西。

相关内容