我有一个使用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
这里有点迂回。将整体放入环境ganttchart
中pgfinterruptboundingbox
,这实际上意味着在决定边界框时不会考虑它。然后添加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}