![为什么 \pgfuseplotmark 在标记左侧留出这么多空间?](https://linux22.com/image/308176/%E4%B8%BA%E4%BB%80%E4%B9%88%20%5Cpgfuseplotmark%20%E5%9C%A8%E6%A0%87%E8%AE%B0%E5%B7%A6%E4%BE%A7%E7%95%99%E5%87%BA%E8%BF%99%E4%B9%88%E5%A4%9A%E7%A9%BA%E9%97%B4%EF%BC%9F.png)
使用来自的建议这个答案,我决定使用它\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}