以下 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=3pt
,below
我将获得线下方 3 点的标签,因为默认值是 3pt。如果我改为
above=3pt
,below=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
。
但我不确定最终的代码应该是什么样子。但我把这个问题留给你去解决。