Pgfgantt:更改锚点以居中

Pgfgantt:更改锚点以居中

我有一个使用pgfgantt软件包制作的甘特图。但是,当您尝试居中时,它会将整个图形(包括任务名称)居中。

我希望表格居中,然后名称和其他东西相对于表格浮动。

我想象tikzpicture有某种类型的锚点设置在整组项目的中心,以使图像居中。所以,我想知道是否可以将该锚点移到表格的中心,而不是整个图形的中心。

我查阅了手册,但找不到这方面的信息。我试图在下图中说明“将表格居中”的意思。请注意,由于我制作图像时使用了裁剪,所以边距不合适,但想象一下图像标题周围的边距。

在此处输入图片描述

\documentclass{article}

\usepackage{pgfgantt}

\pagestyle{empty}

\begin{document}
\begin{figure}[h]
  \begin{tikzpicture}
  \begin{ganttchart}{1}{12}
  \ganttbar{Task with really long name}{1}{2} \\
  \end{ganttchart}
  \end{tikzpicture}
  \caption{Not centered on the table.}
\end{figure}

\begin{figure}[h]
  \hspace*{-40px}% manually adjusted
  \begin{tikzpicture}
  \begin{ganttchart}{1}{12}
  \ganttbar{Task with really long name}{1}{2} \\
  \end{ganttchart}
  \end{tikzpicture}
  \caption{Kind of centered on the table.}
\end{figure}

\end{document}

答案1

这里有点迂回。将整体放入环境ganttchartpgfinterruptboundingbox,这实际上意味着在决定边界框时不会考虑它。然后添加canvas/.append style={alias=frame}ganttchart选项中(参见下面的代码),在ganttchart环境之后使用以下命令明确设置边界框

\useasboundingbox (frame.south west) rectangle (frame.north east);

所有这些都需要在tikzpicture环境内,但如果您只有环境,则不需要ganttchart周围环境。tikzpicture

还请注意,您不希望\\在最后一个之后有ganttbar,因为这会产生一些额外的空格。

在此处输入图片描述

\documentclass{article}

\usepackage{pgfgantt}

\pagestyle{empty}

\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{pgfinterruptboundingbox}
  \begin{ganttchart}[canvas/.append style={alias=frame}]{1}{12}
  \ganttbar{Task with really long name}{1}{2} 
  \end{ganttchart}
\end{pgfinterruptboundingbox}
\useasboundingbox (frame.south west) rectangle (frame.north east);
\end{tikzpicture}
  \caption{Not centered on the table.} % actually, it is
\end{figure}

\end{document}

答案2

将标签包裹在\llap{...}或中\makebox[0pt][r]{...},使其宽度为零并向左伸出,然后添加\centering到您的figure。剩余的“不居中”可能是由于标签与盒子的距离造成的。

\documentclass{article}
\usepackage{pgfgantt}
\begin{document}
\begin{figure}
  \centering
  \begin{tikzpicture}
    \begin{ganttchart}{1}{12}
      \ganttbar{\llap{Task with really long name}}{1}{2} \\
%      \ganttbar{\makebox[0pt][r]{Task with really long name}}{1}{2} \\
    \end{ganttchart}
  \end{tikzpicture}
  \caption{Kind of centered on the table.}
\end{figure}
\end{document}

在此处输入图片描述

相关内容