如何设置自定义node样式的中文位置

2019-11-12 00:46发布

[图]如下图1所示红框是man结点的定义,蓝框是man结点的调用 输出如下图2(请忽视人裆下的小棍,是其他代码产生的) 问题: 我想让系统管理员的字居中显示在小人的脚下。或者说,我想让man结点无论输入什...

如下图1所示
红框是man结点的定义,蓝框是man结点的调用

输出如下图2(请忽视人裆下的小棍,是其他代码产生的)

问题:

  1. 我想让“系统管理员”的字居中显示在小人的脚下。或者说,我想让man结点无论输入什么文字都能居中显示在小人脚下。要怎么修改man的定义呢?
  2. 我还想让这个man结点在后期添加线段的时候不会总是从原点(0,0)开始连接,而是像上图2裆下的小棍那样,离小人有较大的距离(距离大得足以将中文放进去),如下图3所示。

代码如下:(略有删改,输出与截图有所出入,但不影响本问题的提出)

\documentclass{article}
\usepackage{xeCJK}
\usepackage{amsmath, amssymb, graphics, setspace,palatino}
\usepackage{tikz,bm,color,tikz-3dplot,pst-3dplot,pgfplots}
\usepackage[margin=0cm,nohead]{geometry}
\usepackage[active,tightpage]{preview}
\usetikzlibrary{calc}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{spy}

\PreviewEnvironment{tikzpicture}

\begin{document}
  \makeatletter
  \pgfdeclareshape{man}{
    \savedanchor{\center}{%
      \pgfpointorigin}
    \anchor{center}{\center}
    \backgroundpath{
      \edef\@temp{%
        \noexpand\node[circle,draw] (\tikz@fig@name-头) at (0,0.4) {};
        \noexpand\draw (-0.25,0) -- (0.25,0);
        \noexpand\draw (0,-0.25) -- (0,0.25);
        \noexpand\draw (0,-0.25) -- (-0.25,-0.5);
        \noexpand\draw (0,-0.25) -- (0.25,-0.5);
      }
      \@temp
    }
  }

  \begin{tikzpicture}[> = stealth, node distance = 12mm, thick, scale = 1]
    \node[man] (START) {系统管理员};
  \end{tikzpicture}
\end{document}
3条回答
咸菜的味道
2019-11-12 16:32
前面的网友已经回答了你的第一个问题,你的第二个问题可以参考命令`\anchorborder`, 这个命令的详细解释还请参考手册吧。你也可以看看文件 *pgfmoduleshapes.code.tex* 中对形状 **rectangle** 的定义,其中就用了命令`\anchorborder`. 我觉得使用 `\node [text width=3cm,align=center]{\includegraphics{图片}\\系统管理员};` 或者 `\node{\parbox{3cm}{\includegraphics{图片}}};` 也可能达到类似的效果。插入的图片可以是很个性的,例如带黑帽子,墨镜,叼着雪茄的人物图片,哈哈。 如果单纯用 pgf/TikZ 画这种图的话,确实是个考验。

一周热门 更多>