我正在tikz
使用standalone
类绘制图片,但左侧有奇怪的空白。我的代码是
\documentclass{standalone}
\usepackage{kerkis}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{positioning}
\tikzset{
gold/.style = {
top color=gray!60,
bottom color=gray!20,
minimum width=0.25cm,
minimum height=2cm,
anchor=west,
},
boron/.style = {
top color=gray!80,
bottom color=gray!40,
minimum width=1cm,
minimum height=2cm,
anchor=west,
},
telescope/.style = {
right color=black!70,
left color=black!20,
minimum width=1.2cm,
minimum height=.4cm,
sloped,
pos=1,
rotate=90,
},
E/.style = {
top color=black!80,
bottom color=black!40,
minimum width=1.2cm,
minimum height=1.4cm,
sloped,
pos=1,
rotate=90,
},
}
\begin{tikzpicture}
\coordinate (beam left) at (-5,0);
\coordinate (beam right) at (2,0);
% Incident Beam
\draw[->, very thick] (beam left) -- (beam right);
\node[above right] at (beam left) (proton) {$p^+$};
% Target : Boron + Au
\node[gold, label=95:$Au$] at (6,0) (gold) {};% Au
\node[boron, right=0mm of gold, label=80:$^{nat}B$] (boron) {};
\coordinate (hit) at (gold.west);
% Telescopes
\path (hit) -- +(170:8)
node[telescope, label=right:$6\mu m$] (telescope1) {$\Delta E$};
\path (hit) -- +(-120:8)
node[telescope, label=left:$22\mu m$] (telescope2) {$\Delta E$};
\path (hit) -- +(170:9)
node[E, label=20:$1000\mu m$] {$\mathbf{E}$};
\path (hit) -- +(-120:9)
node[E, label=left:$1000\mu m$] {$\mathbf{E}$};
% Angles
\draw[dashed, gray, thick] (beam right) -- (hit);
\draw[dashed, gray, thick] (hit) -- (telescope1);
\draw[dashed, gray, thick] (hit) -- (telescope2);
\draw[<->,thick] (hit) +(180:2) arc (180:170:2);
\path (hit) +(175:2) node[left] {$10^\circ$};
\draw[<->,thick] (hit) +(180:2) arc (-180:-120:2);
\path (hit) +(210:2) node[left] {$60^\circ$};
\end{tikzpicture}
\end{document}
我的输出如下
知道为什么会发生这种情况以及如何解决吗?
答案1
这是一个简单的例子:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\tikzset{} A
\end{document}
\tikzset{}
这表明和之间的空格A
不会被忽略。对于
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\tikzset{}
A
\end{document}
因此,你有几个这样的虚假空间,因为tikzlibrarypositioning.code.tex
以
\tikzset{above/.code=\tikz@lib@place@handle@{#1}{south}{0}{1}{north}{1}}
\tikzset{above left/.code=\tikz@lib@place@handle@{#1}{south east}{-1}{1}{north west}{0.707106781}}
以此类推几行。
事实是standalone
将 TeX 置于 LR 模式(正确的 TeX 语言中的水平模式),因此不会忽略空格。
varwidth
如果添加以下选项,则不会获得任何空间standalone
:
\usepackage[varwidth]{standalone}
(但由于图片大小,您会收到过满框警告)。
在之前加载库并执行\tikzset
命令\begin{document}
。
答案2
如果你\fbox{}
在你的周围放置一个tikzpicture
,你会得到:
这表明额外的空间不在 tikzpicture 内。因此它必须由它之前的代码生成。
如果你转到\usetikzlibrary{positioning}
序言部分,正如 egreg 在评论中所建议的那样,你现在会得到:
左侧仍有一个(非常小的)间隙。这是由于设置所致\tikzset
,我不确定为什么(即使删除所有空白行,这个间隙仍然存在)。
转到\tikzset
序言部分也会产生所需的结果。