我正在尝试将 tikz 绘图包含到 Beamer 幻灯片中。当我这样做时:
\begin{frame}
\frametitle{Overview}
\input{smartservice-diagram.tex}
\end{frame}
图片太大了。我试过这个:
\begin{frame}
\frametitle{Overview}
\resizebox{6in}{!}{\input{smartservice-diagram.tex}}
\end{frame}
图像缩小了,但又移到了幻灯片的右侧。图像的这一部分超出了幻灯片的右侧。如果我将调整大小框放大一点,图像实际上会从右侧滑出。如果我将其缩小,缩小后的图像又会移回左侧。
我尝试使用 smartservice-diagram.tex 和 \resizebox 创建独立文档,效果很好(图表左侧没有多余的空白)。所以它看起来像是我遗漏的 Beamer 功能。
知道我错在哪里吗?
编辑:这不仅是 beamer 独有的,使用 resizebox 或 scalebox 也会发生这种情况。我把它放在图形内部,但放在图形外部也会失败。我附上了一个 MWE:
\begin{figure}[htbp]
\resizebox{\linewidth}{!}{
\tikzstyle{scheme} = [draw = black, fill = black!10, thin, rectangle, minimum width = 15pt, minimum height = 10pt]
\begin{tikzpicture}
\node (n1) [scheme] {};
\node (n2) [scheme, at = (n1.east), right = 12pt] {};
\node (n3) [scheme, at = (n2.east), right = 12pt] {};
\node (n4) [scheme, at = (n3.east), right = 12pt] {};
\end{tikzpicture}
}
\caption{Test}
\end{figure}
答案1
这很可能只是由于添加了空格造成的。%
如果一行以 结尾{
,有时也以 结尾,则需要添加 ,以}
避免换行符被视为空格。请注意已弃用,并且如果在 之外使用 ,\tikzstyle
则还需要%
在 之后添加。]
tikzpicture
以下不会产生任何转变:
\begin{figure}
\resizebox{\linewidth}{!}{%
\begin{tikzpicture}[scheme/.style={draw = black, fill = black!10, thin, rectangle, minimum width = 15pt, minimum height = 10pt}]
\node (n1) [scheme] {};
\node (n2) [scheme, at = (n1.east), right = 12pt] {};
\node (n3) [scheme, at = (n2.east), right = 12pt] {};
\node (n4) [scheme, at = (n3.east), right = 12pt] {};
\end{tikzpicture}%
}%
\caption{Test}
\end{figure}
输入文件中也可能有一些前导空格和尾随空格。尝试\ignorespaces
在前后添加\unskip
。
另一个原因可能是段落缩进,可以通过\noindent
在内容前放置来删除它。您还可以\begin{adjustbox}{width=\linewidth} .. \end{adjustbox}
从包中使用adjustbox
缩放。它比 更有效\resizebox
,还允许特殊内容,如逐字。它会\noindent
自行添加以保存。
答案2
在figure
使用文章类。这是因为figure
环境将缩进设置为零。
在figure
环境之外,缩进被添加到左侧,因此\linewidth
宽对象将超出右边距;事实上,我得到了消息
Overfull \hbox (15.0pt too wide) in paragraph at lines 7--19
这正是缩进量。
马丁指出了造成虚假空间的其他可能来源。