![标题后跟 \begin{tikzpicture} 时的空格](https://linux22.com/image/266849/%E6%A0%87%E9%A2%98%E5%90%8E%E8%B7%9F%20%5Cbegin%7Btikzpicture%7D%20%E6%97%B6%E7%9A%84%E7%A9%BA%E6%A0%BC.png)
一本书的第一章使用 tikz,结果在章节标题后放置了大量空白。我尝试过\vspace
调整,但它会改变\begin
& \end
tikz 之间的所有垂直空间。这里的目标是在问题下方生成三个空白图表。此外,将垂直轴标题放在上方(而不是右侧)会导致这些垂直轴错位,因为整个 tikz 图片会被推移以适应不同的标签长度。有没有办法弥补这一点?
这是代码...
\chapter[1D Kinematics]{One Dimensional Kinematics}
\newpage
\section{Graph Matching 1}
在下面的每个图上画一条曲线(有时“曲线”是直线),表示一个人稳步走向运动探测器,停下来,然后以较慢的速度稳步离开探测器的运动。
\begin{tikzpicture}
\draw [thin, gray, <->] (0,-3) -- (0,3) % draw y-axis line
node [right, black] {$position$}; % add label for y-axis
\draw [thin, gray, <->] (-1,0) -- (10,0) % draw x-axis line
node [right, black] {$time$}; % add label for x-axis
\end{tikzpicture}
\begin{tikzpicture}
\draw [thin, gray, <->] (0,-3) -- (0,3) % draw y-axis line
node [right, black] {$velocity$}; % add label for y-axis
\draw [thin, gray, <->] (-1,0) -- (10,0) % draw x-axis line
node [right, black] {$time$}; % add label for x-axis
\end{tikzpicture}
\begin{tikzpicture}
\draw [thin, gray, <->] (0,-3) -- (0,3) % draw y-axis line
node [right, black] {$acceleration$}; % add label for y-axis
\draw [thin, gray, <->] (-1,0) -- (10,0) % draw x-axis line
node [right, black] {$time$}; % add label for x-axis
\end{tikzpicture}
答案1
您不需要使用三个单独的tikzpicture
s(每个图形一个),而是可以tikzpicture
对所有三个图形和范围使用一个 s,并进行适当的垂直移动;这也将自动解决对齐问题:
\documentclass{book}
\usepackage{tikz}
\begin{document}
\chapter[1D Kinematics]{One Dimensional Kinematics}
\newpage
\section{Graph Matching 1}
\begin{tikzpicture}[yscale=.89]
\draw [thin, gray, <->] (0,-3) -- (0,3) % draw y-axis line
node [above, black] {$position$}; % add label for y-axis
\draw [thin, gray, <->] (-1,0) -- (10,0) % draw x-axis line
node [right, black] {$time$}; % add label for x-axis
\begin{scope}[yshift=-7cm]
\draw [thin, gray, <->] (0,-3) -- (0,3) % draw y-axis line
node [above, black] {$velocity$}; % add label for y-axis
\draw [thin, gray, <->] (-1,0) -- (10,0) % draw x-axis line
node [right, black] {$time$}; % add label for x-axis
\end{scope}
\begin{scope}[yshift=-14cm]
\draw [thin, gray, <->] (0,-3) -- (0,3) % draw y-axis line
node [above, black] {$acceleration$}; % add label for y-axis
\draw [thin, gray, <->] (-1,0) -- (10,0) % draw x-axis line
node [right, black] {$time$}; % add label for x-axis
\end{scope}
\end{tikzpicture}
\end{document}
请注意,我用来yscale=.89
防止 vbox 过满(否则,图表的高度对于页面中当前可用的垂直空间来说会太长);根据您当前的页面布局设置,您可能需要调整使用的值。
如果你还打算绘制一些函数,我建议你考虑使用pgfplots
(内部使用 TikZ);一个简单的例子:
\documentclass{book}
\usepackage{pgfplots}
\pgfplotsset{
every axis/.append style={
axis lines=middle,
enlargelimits=true,
axis line style={<->}
},
ymin=-3,
ymax=3,
xtick=\empty,
ytick=\empty,
xlabel=time,
domain=0:1
}
\begin{document}
\begin{tikzpicture}[yscale=.8]
\begin{axis}
\addplot[blue] {2};
\end{axis}
\begin{axis}[yshift=-7cm]
\addplot[green] {-2};
\end{axis}
\begin{axis}[yshift=-14cm]
\addplot[red] {1};
\end{axis}
\end{tikzpicture}
\end{document}
有关更多详细信息,请参阅综合包文档。