我喜欢 TikZ 图表中的箭头与数学字体箭头相匹配。对于 Computer Modern 来说,这没有问题:TikZ 箭头库提供了匹配的箭头。
但我经常使用其他字体,这些字体的箭头非常不同。现在,我可以(并且已经)定义了新的 PGF 箭头,它们与字体箭头近似。但我认为,在使用 unicode 数学字体时,更优雅、更通用的解决方案是使用 U+2303(“向上箭头”)和 U+2304(“向下箭头”)处应有的箭头。
这是我第一次尝试定义这种箭头:
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Asana Math}
\usepackage{tikz}
\pgfarrowsdeclare{mathfont to}{mathfont to}
{
\pgfarrowsleftextend{0\pgflinewidth}
\pgfarrowsrightextend{0\pgflinewidth}
}
{
\pgfpathmoveto{\pgfpointorigin}
\pgftext[rotate=90,bottom]{$\char"2304$}
}
\tikzset{
>=mathfont to,
}
\begin{document}
Test:
\begin{tikzpicture}
%
\draw[->] (1,0)--(2,0);
\draw[->] (1,0.5)--(1,1.5);
%
\end{tikzpicture}
\end{document}
我的期待是这个箭头定义会将向下箭头符号的底部(或多或少是箭头尖端的位置)放在箭头的末端,旋转以匹配箭头的方向,如\pgftext
手册中的讨论一样 - 基本上我想要实现的,除了一些调整和设置\pgfarrowsleftextend
和\pgfarrowsrightextend
。
结果有三个问题:向下箭头符号的底部不在正确的位置;箭头符号未旋转;并且(非常奇怪)它只出现在两个测试箭头中的第一个旁边。这些问题在 XeLaTeX 和 LuaLaTeX 下都会发生。(我没想到输出会有什么不同。)
这些问题可以修复吗?如果可以,如何修复?或者它们反映了 PGF/TikZ 设计中的一些深层特性,使得这个想法不可行?(我可以很容易地想象,调用\pgftext
箭头代码应该是被禁止的,就像\pgfusepath
。)
更新:更新 pgf 包后,我现在得到的结果略有不同:箭头符号现在旋转到指向右侧,但位于 (0,0) 而不是箭头的末端。我无法判断现在两个箭头是否都绘制在该位置,还是只有一个箭头。
答案1
我认为箭头类型不适合这种情况。箭头应该是“可设置样式的”(我们可以设置长度、填充和绘制颜色等)。对我来说,你必须为此使用标记。
下面是一个操作示例:
\documentclass[tikz,border=10, convert=none]{standalone}
\usepackage{unicode-math}
\setmathfont{Asana Math}
\usetikzlibrary{decorations.markings}
\tikzset{
-math/.style={
shorten >=1.4\pgflinewidth,
postaction=decorate,
decoration={markings, mark=at position 1 with {
\node[scale=1.4\pgflinewidth, xshift=-1.7pt,transform shape,rotate=90]{$\char"2304$}; }}}
}
\begin{document}
\begin{tikzpicture}
\draw[line width=.1pt, -math] (1,0.5)--+(45:1);
\draw (1,0) edge[bend right,thick,red,-math] +(45:1);
\end{tikzpicture}
\end{document}
使用 XeLaTeX 编译的结果是