tikz 节点中的文本换行不起作用

tikz 节点中的文本换行不起作用

我想要几个大小为 1cm x 1cm 的固定节点。但是,这些节点内的文本应该环绕。

我使用了以下问题帮助弄清楚如何换行文本。但是它似乎不起作用。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[node distance=1.75cm,auto   , font=\small]

\tikzstyle{block}=[draw, fill=white, text width=1cm, anchor=west,  minimum height=1cm]

 \node [block] [minimum width=1.5cm, minimum height=1.5cm,align=center] (mb0) {MB};
 \node [block] [right of=mb0] (dmem0) {dmem};
 \node [block] [left of=mb0] (imem0) {imem};
 \node [block] [below of=mb0,align=left] (cmemin0) {cmem\_in};
 \node [block] [right of=cmemin0] (dma0) {DMA};
 \node [block] [right of=dma0] (cmemout0) {cmem\_out};

\end{tikzpicture}
\end{document}

然而,您可以在图片中看到,文本流到了框外面,而不是环绕在框周围。 在此处输入图片描述

我该如何解决这种情况?

谢谢 !

答案1

因此,您遇到的问题有很多。

首先,连字引擎无法猜测像 这样的单词的正确连字是什么cmem_in。我甚至不确定是否存在这样的正确连字。

在这种情况下,您需要用 标记允许休息的点\-

其次,即使是“不那么奇怪”的单词,如“averylonglongstring”,也不会发生连字符。原因如下问题:段落的第一个单词没有设计连字符。

建议的解决方法是在此类单词前使用\hspace{0pt}。请注意,在 MWE 中,它longstring仍然超出了框的范围,这是因为它又是一个“奇怪的词”。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[node distance=1.75cm,auto   , font=\small]

  \tikzstyle{block}=[draw, fill=white, text width=1cm, anchor=west,  minimum height=1cm]

  \node [block] [minimum width=1.5cm, minimum height=1.5cm,align=center] (mb0) {MB};
  \node [block] [right of=mb0] (dmem0) {dmem};
  \node [block] [left of=mb0,align=left] (imem0) {averylonglongstring};
  \node [block] [below of=mb0,align=left] (cmemin0) {cmem\-\_in};
  \node [block] [right of=cmemin0,align=left] (dma0) {\hspace{0pt}averylonglongstring};
  \node [block] [right of=dma0,align=left,text width=1.5cm] (cmemout0) {cmem\-\_out};

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

我最终使用的正确代码是 -

\begin{tikzpicture}[node distance=1.85cm,auto, font=\small]

\tikzstyle{block}=[draw, fill=white, text width=1cm, anchor=west, align=center, minimum height=1cm]

 \node [block] [minimum width=1.75cm, minimum height=1.75cm] (mb0) {MB};
 \node [block] [right of=mb0,align=center] (dmem0) {dme m};
 \node [block] [left of=mb0] (imem0) {imem};
 \node [block] [below of=mb0,align=center] (cmemin0) {cme m\_in};
 \node [block] [right of=cmemin0,align=center] (dma0) {DMA};
 \node [block] [right of=dma0,align=center] (cmemout0) {cme m\_out};
\end{tikzpicture}

相关内容