我的代码在另一台计算机上可以运行,但在另一台计算机上却出现错误:
Missing $ inserted. };
这是 .tex :
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[grow=right]
\node {}
child [sibling distance=20ex] { node {T}
child [sibling distance=10ex] { node {T}
child [sibling distance=5ex]
{ node [anchor=west] { T $\cdots$ (T,T,T)\; $p = \frac{1}{8}$ } }
child [sibling distance=5ex]
{ node [anchor=west] { H $\cdots$ (T,T,H)\; $p = \frac{1}{8}$ } }
}
child [sibling distance=10ex] { node {H}
child [sibling distance=5ex]
{ node [anchor=west] { T $\cdots$ (T,H,T)\; $p = \frac{1}{8}$ } }
child [sibling distance=5ex]
{ node [anchor=west] { H $\cdots$ (T,H,H)\; $p = \frac{1}{8}$ } }
}
}
child [sibling distance=20ex] { node {H}
child [sibling distance=10ex] { node {T}
child [sibling distance=5ex]
{ node [anchor=west] { T $\cdots$ (H,T,T)\; $p = \frac{1}{8}$ } }
child [sibling distance=5ex]
{ node [anchor=west] { H $\cdots$ (H,T,H)\; $p = \frac{1}{8}$ } }
}
child [sibling distance=10ex] { node {H}
child [sibling distance=5ex]
{ node [anchor=west] { T $\cdots$ (H,H,T)\; $p = \frac{1}{8}$ } }
child [sibling distance=5ex]
{ node [anchor=west] { H $\cdots$ (H,H,H)\; $p = \frac{1}{8}$ } }
}
};
\end{tikzpicture}
\end{document}
我从 Julia 中的 TikzPictures 包中获取了此信息,用于创建概率结果图。但它在 Julia 或 LaTeX 中均无法使用。
这个 tex 代码有什么问题?在另一台计算机上它可以正常工作。
答案1
罪魁祸首最有可能是\;
在文本模式下使用的。
看ltnews32
“间距命令从 amsmath 移至内核”,此更改发生在 2020-10 年,因此我猜您的 LaTeX 安装比这更旧。\usepackage{amsmath}
在序言中使用,以使您的代码在旧安装上运行。
答案2
编辑:
大部分都是主题,因为您的 MWE 使用最新版本的 MiKTeX 进行编译,运行良好。
然而,
sibling distance
我会把对s 和节点anchor
设置的所有决定都移到tikzpicture
选项中,- 删除
\;
括号中的术语与概率值之间的额外距离。它们对这些距离的贡献不大,但可能在较旧的 LaTeX 安装中(如@Skillmon 在其评论中指出的那样)造成问题。 - 如果由于某些原因,这个距离很重要,并且您无法升级 LaTeX 安装,请移至
\;
数学环境。例如:
{ node {T $\cdots$ (H,H,T) $\;p=\frac{1}{8}$ } }
通过这种改变,树的代码变得更短并且树仍然看起来很漂亮:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[
every node/.style = {anchor=west},
level 1/.style = {sibling distance=20ex},
level 2/.style = {sibling distance=10ex},
level 3/.style = {sibling distance=5ex},
grow=right
]
\node {}
child { node {T}
child { node {T}
child { node { T $\cdots$ (T,T,T) $p = \frac{1}{8}$ } }
child { node { H $\cdots$ (T,T,H) $p = \frac{1}{8}$ } }
}
child { node {H}
child { node { T $\cdots$ (T,H,T) $p = \frac{1}{8}$ } }
child { node { H $\cdots$ (T,H,H) $p = \frac{1}{8}$ } }
}
}
child { node {H}
child { node {T}
child { node { T $\cdots$ (H,T,T) $p = \frac{1}{8}$ } }
child { node { H $\cdots$ (H,T,H) $p = \frac{1}{8}$ } }
}
child { node {H}
child { node { T $\cdots$ (H,H,T) $p = \frac{1}{8}$ } }
child { node { H $\cdots$ (H,H,H) $p = \frac{1}{8}$ } }
}
};
\end{tikzpicture}
\end{document}
不过,我更愿意使用forest
包来绘制这棵树。它是一个功能强大的
专门用于绘制树的包。它的代码语法可以编写非常简洁明了的代码:
\documentclass[margin=3mm]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree = {
inner sep = 2pt,
child anchor = west,
grow = east,
l sep = 7 mm,
s sep = 4 mm,
where level = 2{s sep=0mm}{} % insert different `s sep`
% at level 2, which then appear
% after each second node in the
% end of the tree
}
[
[T
[T
[{T $\cdots$ (T,T,T) $p = \frac{1}{8}$}]
[{H $\cdots$ (T,T,H) $p = \frac{1}{8}$}]
]
[H
[{T $\cdots$ (T,H,T) $p = \frac{1}{8}$}]
[{H $\cdots$ (T,H,H) $p = \frac{1}{8}$}]
]
]
[H
[T
[{T $\cdots$ (H,T,T) $p = \frac{1}{8}$}]
[{H $\cdots$ (H,T,H) $p = \frac{1}{8}$}]
]
[H
[{T $\cdots$ (H,H,T) $p = \frac{1}{8}$}]
[{H $\cdots$ (H,H,H) $p = \frac{1}{8}$}]
]
]
];
\end{forest}
\end{document}