设置 tikz 装饰标记与线的默认距离

设置 tikz 装饰标记与线的默认距离

以下 MWE 绘制了一条线,其上方带有标签:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}

\begin{tikzpicture}
    \begin{scope}[
        decoration={
            markings,
            mark=at position 0.5 with {\node[inner sep=0pt, above=3pt] {$x$};}
        }]
        \draw[postaction=decorate] (0,0) -- (1,0);
    \end{scope}
\end{tikzpicture}

\end{document}

在此处输入图片描述

但有没有办法为该号码设置默认值3pt?我想要的是

  • 如果我改为above=3ptbelow我将获得线下方 3 点的标签,因为默认值是 3pt。

  • 如果我改为above=3ptbelow=10pt我将获得线下 10 点的标签。

以不会不必要地增加边界框的方式来做到这一点很重要,所以仅仅改变它是inner sep对我来说不起作用的。

这是我正在编写的一个库,它将被包装在一个命令中,因此如果需要的话我可以使用字符串处理来完成它,但这似乎是 tikz 可以提供一种方法来执行的操作。

答案1

也许你想要的是这样的:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}

\begin{tikzpicture}
    \begin{scope}[
        above/.default=3pt,
        below/.default=3pt,
        decoration={
            markings,
            mark=at position 0.5 with {\node[inner sep=0pt, above] {$x$};}
        }]
        \draw[postaction=decorate] (0,0) -- (1,0);
    \end{scope}
\end{tikzpicture}

\end{document}

above=3pt如果您添加选项above(对于 也一样),此代码将默认为below,但您始终可以覆盖它,例如使用above=10pt

但我不确定最终的代码应该是什么样子。但我把这个问题留给你去解决。

相关内容