我正在使用内联tikz
调用在我的文档中创建注释。
我正在使用(下面定义的)\Curve
宏来注释图形图(例如使用创建的pgfplots
)和\Curvee
宏来注释可以弯曲的更一般的图形,因此使用to path
而不是。我设法使用选项和一些属性来-- path
对齐调用的内容。\tikz
baseline
current bounding box
但是,当使用bend ...
或in=...,out=...
选项时to path
,边界框内会留有空白。-stealth
使用箭头时,边界框中也会出现一些差异。请注意,-Stealth
箭头可以很好地更新边界框。
在这个帖子据说arrows.meta
库的箭头应该更新边界框(而以前的箭头不能)。
所以我实际上有两个问题:
- 为什么
stealth
箭头不能正确更新边界框?(我以为它们只是-Stealth
具有一些默认设置的箭头,但可能不是) to path
为什么带有选项的边界框中有一个空白区域in=...,out=...
?(可能是因为一些构造节点,但如果有人可以解释......)
\documentclass{article}
\usepackage{tikz}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{times}
\usepackage{mathptmx}
\usetikzlibrary{arrows.meta,calc}
\usepackage{xparse}
\DeclareDocumentCommand\Curve{ m O{} }{%
(%
\tikz[baseline=(ref.base)] {%
\draw[#1] plot coordinates {(0,0)} -- plot[#2] coordinates {(2mm,0)} -- plot coordinates {(4mm,0)};%
\draw[] (current bounding box.south west) rectangle (current bounding box.north east);
\coordinate[yshift=-\the\dimexpr\fontdimen22\textfont2] (ref) at (current bounding box.center);
}%
)%
}
\DeclareDocumentCommand\Curvee{ m O{} }{%
(%
\tikz[baseline=(ref.base)] {%
\draw[#1] (0,0) to[#2] (4mm,0mm);%
\draw[] (current bounding box.south west) rectangle (current bounding box.north east);
\coordinate[yshift=-\the\dimexpr\fontdimen22\textfont2] (ref) at (current bounding box.center);
}%
)%
}
\begin{document}
$1$
\Curve{red,-stealth}
\Curve{red,->}
\Curvee{red,-stealth,bend left}
\Curvee{red,->,bend left}
\Curvee{red,-stealth}[out=-60,in=150]
\Curvee{red,-Stealth}[out=-60,in=150]
\end{document}
答案1
这如何获取贝塞尔曲线的紧密边界框是重复的,正如 egreg 提到的,在 Ti钾贝塞尔曲线的边界框 Z 被视为包含控制点的最小框。一般来说,这会产生一个过于宽大的边界框。如果您下载实验tikzlibrarybbox.code.tex
来自的图书馆这里(有解释这里),即可解决箭头的问题arrows.meta
。
\documentclass{article}
\usepackage{tikz}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{times}
\usepackage{mathptmx}
\usetikzlibrary{arrows.meta,calc,bending,bbox}
\newcommand\Curvee[2][]{%
(%
\tikz[baseline=(ref.base)] {%
\begin{scope}[bezier bounding box]
\draw[#2] (0,0) to[#1] (4mm,0mm);%
\draw[] (current bounding box.south west) rectangle (current bounding box.north east);
\coordinate[yshift=-\the\dimexpr\fontdimen22\textfont2] (ref) at (current bounding box.center);
\end{scope}
}%
)%
}
\begin{document}
$1$
\Curvee[bend left]{red,-Stealth}
\Curvee[out=-60,in=150]{red,-Stealth}
\Curvee[out=-60,in=150]{red,-Stealth}
$2$
\Curvee[bend left]{red,-{Stealth[bend]}}
\Curvee[out=-60,in=150]{red,-{Stealth[bend]}}
\Curvee[out=-60,in=150]{red,-{Stealth[bend]}}
\end{document}
我还加载了bending
库并弯曲了最后三个箭头。请注意,bending
当您仅加载库时,即使您不添加bend
相应的箭头选项,箭头的头部也会得到改善。