为什么 \pgfuseplotmark 在标记左侧留出这么多空间?

为什么 \pgfuseplotmark 在标记左侧留出这么多空间?

使用来自的建议这个答案,我决定使用它\pgfuseplotmark在我的图表中做标记。但是,在 pgfmarks 的左侧插入了一些奇怪的空白。我应该怎么做才能将其删除?以下是 MWE:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{plotmarks}

\begin{document}

\begin{tikzpicture}
  \node[draw] at (0,0) {!};
  \node[draw] at (2,0) {\pgfuseplotmark{diamond*}};
\end{tikzpicture}

\end{document}

答案1

因为%库中缺少绘图标记绘制命令的末尾。通常,\pgfuseplotmark用作独立命令,而不是放在文本框中,因此固有的 TikZ 功能(通过消耗常规字体)可以\nullfont解决这个问题。但是,一旦将它们放在文本感知位置(例如节点的框)中,就会变得明显。

快速修复方法是

\node[draw] at (2,0) {\nullfont\pgfuseplotmark{diamond*}};

或者如果你深受困扰,想要好好处理这件事

\documentclass[tikz]{standalone}
\usetikzlibrary{plotmarks}
\pgfdeclareplotmark{diamond*}
{%
  \pgfpathmoveto{\pgfqpoint{0pt}{\pgfplotmarksize}}% <-- These % are missing in the originals
  \pgfpathlineto{\pgfqpoint{.75\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{-.75\pgfplotmarksize}{0pt}}%
  \pgfpathclose%
  \pgfusepathqfillstroke%
}
\begin{document}
\begin{tikzpicture}
\node[draw] {\pgfuseplotmark{diamond*}};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容