采取以下 MWE:
我tikz
使用普通字体制作了这个节点:
但是,我需要使用等宽字体才能获得以下结果:
由于节点有两行文本,我通常会这样做\texttt{line1\\line2}
。但是,当我编译它时,我收到很多错误。
如果我\texttt{line1}\\\texttt{line2}
这样做,编译时不会出现任何错误。
为什么我不能使用\\
inside \texttt{}
?有没有解决方案可以避免在\texttt{}
每一行文本上都放置它?
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[draw,rectangle,align=center] {line1\\line2};
\end{tikzpicture}
\end{document}
答案1
为什么使用\texttt
在节点文本中不起作用,在第 17.4.3 节中进行了解释这pgfmanual
。
解析节点文本时,命令
\\
会在内部重新定义。重新定义的方式是将从节点开头到第一次出现的文本\\
放入 中。然后将跟进的\hbox
文本放入另一个 中。\\
\\
\hbox
因此,在节点中写入\texttt{line1\\line2}
将产生两个\hbox
es,第一个包含\texttt{line
,第二个包含line2}
,两个 es 都无法正确解析。
上面的描述也说明了为什么写作建议\ttfamily line1\\ line2
只会在第一行产生打字机字体。
正如克莱门斯指出的那样,对整个节点使用打字机字体的最简单方法是将参数传递font=\ttfamily
给节点。