使用来自的建议这个答案,我决定使用它\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}