我正在尝试将甘特图(使用pgfgantt
包)置于横向模式(使用pdflscape
包),但遇到了一个问题:
看起来,要么是因为pgfgantt
,pdflscape
要么是因为fancyhdr
,我的甘特图超出了边距——即超出了页面的右边距(在横向布局上,如下图所示)。
这是我的代码:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfgantt}
\usepackage{pdflscape}
\usepackage{fancyhdr}
\definecolor{barblue}{RGB}{153,204,254}
\begin{document}
\begin{landscape}
\begin{figure}
\centering
\begin{ganttchart}[%Specs
y unit title=0.4cm,
y unit chart=0.5cm,
canvas/.style={fill=none, draw=black!7, line width=.75pt},
vgrid,
title label anchor/.style={below=-1.6ex},
title left shift=.05,
title right shift=-.05,
title height=1,
title/.style={fill=none},
title label font=\bfseries\footnotesize,
bar/.style={fill=barblue},
incomplete/.style={fill=white},
progress label text={},
bar height=0.7,
group right shift=0,
group top shift=.6,
group height=.3,
group peaks={}{}{.2}]{36}
%labels
\gantttitle[title/.style={draw=none}]{2013}{18}
\gantttitle[title/.style={draw=none}]{2014}{18} \\
\gantttitle{Jul}{3}
\gantttitle{Aug}{3}
\gantttitle{Set}{3}
\gantttitle{Oct}{3}
\gantttitle{Nov}{3}
\gantttitle{Dec}{3}
\gantttitle{Jan}{3}
\gantttitle{Feb}{3}
\gantttitle{Mar}{3}
\gantttitle{Apr}{3}
\gantttitle{May}{3}
\gantttitle{Jun}{3}\\
% Parameter Selection
\ganttgroup{1. Parameter Selection}{1}{9}\\ %elem0
\ganttbar[progress=10]{Tests}{1}{4}\\
\ganttmilestone{Final parameters}{9} \\
% Algorithm Development
\ganttgroup{2. Algorithm Development and testing}{10}{33} \\
\ganttbar[progress=2]{2.1 Optimization}{10}{19} \\
\ganttmilestone{Target function}{13} \\
\ganttbar[progress=1]{2.2 Neural Network}{20}{33} \\
\ganttmilestone{M 2.2}{33} \\
% Algorithm Testing
\ganttgroup{3. Algorithm testing}{25}{30} \\
\end{ganttchart}
\caption{Gantt diagram for 2013--2014 Academic year}
\end{figure}
\end{landscape}
答案1
您的 MWE 不再有效,因为pgfgantt
自您提出问题以来,软件包已经更新,但我认为解决方案并不依赖于更改。一种选择是在调整大小框中缩放图表。
\resizebox{\linewidth}{\textheight}{\begin{ganttchart} ... }
我使用,\linewidth
因为landscape
环境没有textwidth
像我预期的那样设置。不清楚您是否总是希望图表填满一页。您可以将图表保存在框中
\sbox0{\begin{ganttchart} ... }
然后做
\ifdim\wd0>\linewidth\relax%
\resizebox{\linewidth}{!}{\usebox{0}}%
\else%
\usebox{0}%
\fi%
有条件地缩放图表。
这种缩放的缺点是文本会被缩放,这可能不是您想要的。另一种方法是使用键值x unit
。这x unit
会影响图表的宽度,但这不是唯一的原因(还有标签和单位数)。一个不完全自动化的解决方案是
\sbox0{2. Algorithm Development and testing}
\newlength{\chartlongestlabel}
\setlength{\chartlongestlabel}{\wd0}
\newlength{\chartwidth}
\setlength{\chartwidth}{\textheight}
\addtolength{\chartwidth}{-\chartlongestlabel}
\begin{ganttchart}[x unit=0.027\chartwidth, ... ]{1}{36}
其中0.027
大约是1/36
并且最长可能没有确切的大小,这取决于您如何设置格式键。