这个乳胶对我来说编译得很完美:
\documentclass[12pt,a4paper]{book}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[level/.style={sibling distance = 5cm/#1,text width=1cm, level distance = 1.2cm}]
\node[text width=2.5cm] {A}
child{ node {A}
child{ node {A} }
}
;
\end{tikzpicture}
\end{document}
它产生了这个:
然而这种乳胶:
\documentclass[12pt,a4paper]{book}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[level/.style={sibling distance = 5cm/#1,text width=1cm, level distance = 1.2cm}]
\node[text width=2.5cm] {A}
child{ node {A}
child{ node {A}
}
}
;
\end{tikzpicture}
\end{document}
给我:
Runaway argument?
{ node {A} child{ node {A}
! Paragraph ended before \tikz@collect@child@code was complete.
<to be read again>
\par
l.10
?
发生了什么事? tikx 是否有有意义的空格(唯一改变的是在其中一个 } 字符前添加了新的回车符)?我在谷歌上搜索只是给了我在 pdf 中放置空格的方法...
答案1
解析 Ti 时通常会忽略空格钾当然,当要排版的文本被吸收时除外 Z 指令。
Ti 之间的空白行钾据我所知,Z 语句(即分号后面的语句)始终是允许的,因为在外层 TeX 正在构建一个\hbox
.
然而,正如您所发现的,并不是所有地方都允许有空行。
child
从技术上讲,处理注释时执行的宏\tikz@collect@child@code
未定义为\long
,因此您会收到有关“失控参数”的错误消息。
当其他内部宏都是 时,为什么不这样\long
,应该询问开发人员;可能是由于特殊情况而做出的精确选择,或者只是他们没有想到\long
在 前面添加\def
。
快速查看代码会发现正在构建一个列表,其中的空行很可能会干扰后面显示节点的工作。实际上,\long
中只声明了几个宏tikz.code.tex
,正好九个,主要与“pin”有关。
因此,请避免使用空行,语句之间除外。
答案2
该错误是由于代码中第二个子节点后的多余空白行引起的 - 删除它,一切就会正常
\begin{tikzpicture}[level/.style={sibling distance = 5cm/#1,text width=1cm, level distance = 1.2cm}]
\node[text width=2.5cm] {A}
child{ node {A}
child{ node {A}
}%<---------------------------removed blank line
}
;
\end{tikzpicture}