tikz 有有意义的空白吗?

tikz 有有意义的空白吗?

这个乳胶对我来说编译得很完美:

\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}

相关内容