TikZ 节点中的打字机

TikZ 节点中的打字机

一个小例子:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\tikz{\node[text width=1cm]{\tt totot\\t t t};}
\tikz{\node{\parbox{1cm}{\tt totot\\t t t}};}
\end{document}

结果

如您所见,第一个 TikZ 节点不遵循对齐,但在 中却遵循对齐\parbox。这是 TikZ 的一个错误吗?为什么会有差异?

答案1

由于某些我无法真正理解的原因,在\node参数中\spaceskip\xspaceskip被设置为非零值;当\spaceskip非零时,TeX 将其用于单词间空间,而不是当前字体信息中存储的默认值。

尝试以下示例

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\tikz{\node[text width=3cm]{\ttfamily
totot\\
t t t\\
\the\spaceskip\ \the\xspaceskip\\
\spaceskip=0pt totot\\t t t};}
\end{document}

并看到该设置\spaceskip=0pt可以解决问题。

在此处输入图片描述

要设置的选项是text badly ragged(显然 TikZ 不喜欢正常的参差不齐,并且在调用时将 LaTeX 定义也添加到 Plain TeX 中,text ragged这是默认值)。

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\node[text width=1cm,font=\ttfamily,text badly ragged]{totot\\t t t};
\node[font=\ttfamily] at (1.5,0){\parbox{1cm}{totot\\t t t}};
\end{tikzpicture}
\end{document}

在此处输入图片描述

如果 TikZ 中不存在用于决定的选项\spaceskip,则应该存在。

答案2

parbox中文本对齐,在node中文textwidth本对齐raggedright。您可以在 内对齐文本node

\documentclass{standalone}
\usepackage{tikz}
\usepackage{ragged2e}
\begin{document}
\tikz{\node[text width=1cm]{\justifying\tt totot\\t t t};}
\tikz{\node{\parbox{1cm}{\tt totot\\t t t}};}
\end{document}

在此处输入图片描述

因此,在我看来这不是一个错误。

不相关,但您可以考虑使用\ttfamily而不是两个字母\tt

相关内容