如何在节点内将 \\ 与 \texttt 一起使用?

如何在节点内将 \\ 与 \texttt 一起使用?

采取以下 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}将产生两个\hboxes,第一个包含\texttt{line,第二个包含line2},两个 es 都无法正确解析。

上面的描述也说明了为什么写作建议\ttfamily line1\\ line2只会在第一行产生打字机字体。

正如克莱门斯指出的那样,对整个节点使用打字机字体的最简单方法是将参数传递font=\ttfamily给节点。

相关内容