![tikz 节点中的文本换行不起作用](https://linux22.com/image/288427/tikz%20%E8%8A%82%E7%82%B9%E4%B8%AD%E7%9A%84%E6%96%87%E6%9C%AC%E6%8D%A2%E8%A1%8C%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我想要几个大小为 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}