我正在尝试使用 pgfgantt 为一个跨越数周的项目创建甘特图,因此以下代码会溢出右边距。我找不到改变网格元素或时间段大小的方法:
\begin{tikzpicture}[x=.5cm, y=1cm]
\begin{ganttchart}%
[vgrid, hgrid]{50} % 50 weeks
\gantttitle{Title}{12} \\
\ganttbar{Task 1}{1}{4} \\
\ganttbar{Task 2}{5}{6} \\
\ganttmilestone{M 1}{6} \\
\ganttbar{Task 3}{7}{11}
\ganttlink{4}{2}{5}{3}
\ganttlink[b-m]{6}{3}{6}{4}
\ganttlink[m-b]{6}{4}{7}{5}
\end{ganttchart}
\end{tikzpicture}
这是我之前的问题,不过这里有一个新的角度......
如何通过限制 pgfgantt 的大小为特定参数来使其缩放所有内容?例如,我希望它跨越页面的整个文本宽度或除边距外的整个宽度。
答案1
使用命令,\resizebox{new width}{new height}{what you want to resize}
您可以更改任何乳胶框的尺寸。这意味着所有内容(文本、线条、符号等)都将调整为新尺寸。在第一个或第二个参数中,您可以使用!
以保持原始纵横比。使用此命令,
\documentclass{article}
\usepackage{lipsum}
\usepackage{pgfgantt}
\begin{document}
\lipsum[1]
\noindent\resizebox{\textwidth}{!}{
\begin{tikzpicture}[x=.5cm, y=1cm]
\begin{ganttchart}%
[vgrid, hgrid]{50} % 50 weeks
\gantttitle{Title}{12} \\
\ganttbar{Task 1}{1}{4} \\
\ganttbar{Task 2}{5}{6} \\
\ganttmilestone{M 1}{6} \\
\ganttbar{Task 3}{7}{11}
%\ganttlink{4}{2}{5}{3}
%\ganttlink[b-m]{6}{3}{6}{4}
%\ganttlink[m-b]{6}{4}{7}{5}
\end{ganttchart}
\end{tikzpicture}
}
\lipsum[2]
\end{document}
你的甘特图看起来会像这样:
更新:解决方案pgfgantt 4.0
正如甘特图标题中缺失的数字被视为零,的上一个版本pgfgantt
不完全向后兼容。现在ganttchar
需要两个强制参数
\begin{ganttchar}[options]{<start tss>}{<end tss>}
因此,前面的例子应该是:
\documentclass{article}
\usepackage{lipsum}
\usepackage{pgfgantt}
\begin{document}
\lipsum[1]
\noindent\resizebox{\textwidth}{!}{
\begin{tikzpicture}[x=.5cm, y=1cm]
\begin{ganttchart}[vgrid, hgrid]{1}{50} % 50 weeks
\gantttitle{Title}{12} \\
\ganttbar{Task 1}{1}{4} \\
\ganttbar{Task 2}{5}{6} \\
\ganttmilestone{M 1}{6} \\
\ganttbar{Task 3}{7}{11}
%\ganttlink{4}{2}{5}{3}
%\ganttlink[b-m]{6}{3}{6}{4}
%\ganttlink[m-b]{6}{4}{7}{5}
\end{ganttchart}
\end{tikzpicture}
}
\lipsum[2]
\end{document}
答案2
[fr] 你可能在图形梯子上玩得很开心,但后面也添加了变换形状,但那太冒险了,而且非常漂亮
[zh] 你可以在图形的全局比例上玩,如果有结点,它也会添加,transform shape
但这可能不是很漂亮
\documentclass[A4]{article}
\usepackage{tikz}
\usepackage{lipsum}
\begin{document}
\noindent \begin{tikzpicture}[scale=\textwidth/8cm]
\draw (0,0) rectangle (8,3);
\end{tikzpicture}
\lipsum[1]
\noindent \begin{tikzpicture}[scale=\textwidth/8cm,transform shape]
\node [rectangle,minimum width=8cm,minimum height=3cm,draw]{aaa};
\end{tikzpicture}
\end{document}
答案3
对于最近关注这个问题的人来说,更高版本pgfgantt
公开了该expand chart
参数。您可以将该参数设置为适合您的任何值。例如:
\begin{ganttchart}[
expand chart=\textwidth,
hgrid,
vgrid,
time slot format=isodate-yearmonth,
time slot unit=month]{2021-10}{2023-5}
\gantttitlecalendar{year, month} \\
\ganttbar{the task}{2022-1}{2022-2}
\end{ganttchart}
参见2.3 The Canvas
文档。
答案4
一个部分解决方案似乎是使用x unit
并y unit
缩小时间段的大小。这解决了我的第一个问题。
我将等待我的第二个问题的任何可能的答案。:)