重置嵌套 tikzpicture 中的文本宽度

重置嵌套 tikzpicture 中的文本宽度

我将一个 tikzpicture 嵌套在另一个 tikzpicture 中,并且存在“文本宽度”参数从外部 tikzpicture 泄漏到内部的问题。(嵌套几乎是不可避免的——在我的实际用例中, tikzpicture 是在不同的宏中定义的。)

梅威瑟:

\documentclass[a4paper,11pt,landscape]{article}
\usepackage{tikz,nopageno}

\begin{document}

\newcommand{\cost}{%
\begin{tikzpicture}
    \node[fill=red!85!black,shape=circle,inner sep=0.3mm,draw=black,text=white] {\raisebox{0pt}[\height][0pt]{\bf 1}};
\end{tikzpicture}}

\cost

\begin{tikzpicture}
    \node[text width=10mm] {\cost};
\end{tikzpicture}

\end{document}

在此处输入图片描述

我应该如何修改“成本”以使其表现得好像未设置文本宽度?

答案1

tikz将 key 的值映射text width到 的宏内容上,默认为空,因此可以通过选项设置来\tikz@text@width重新设置 key :text widthtext width={}

\documentclass[a4paper,11pt,landscape]{article}
\usepackage{tikz,nopageno}

\begin{document}

\newcommand{\cost}{%
  \begin{tikzpicture}
    \node[
      text width={},
      text height={}, % dito
      fill=red!85!black,
      shape=circle,
      inner sep=0.3mm,
      draw=black,
      text=white,
    ] {\raisebox{0pt}[\height][0pt]{\bf 1}};
  \end{tikzpicture}%
}

\cost

\begin{tikzpicture}
  \node[text width=10mm] {\cost};
\end{tikzpicture}

\end{document}

结果

相关内容