我试图在我的序言中将两个平行箭头定义为自定义命令,如下所示:
\newcommand{\toto}{\mathrel{%
\tikz[baseline] \draw[->] (0ex,.96ex) -- (3ex,.96ex) (0ex,.16ex) -- (3ex,.16ex);}}
顶部边缘首先出现,但只有底部边缘有箭头。为什么?我怎样才能在两个边缘上都得到箭头?
我也试过
\newcommand{\toto}{\mathrel{\tikz[baseline]
\draw[->] (0ex,.96ex) -- (3ex,.96ex);
\draw[->] (0ex,.16ex) -- (3ex,.16ex);}}
但它不能编译(说第二个单词之后的第一个单词draw
未定义)。
答案1
\documentclass{article}
\usepackage{tikz}
\newcommand{\toto}{\mathrel{%
\tikz[baseline] \draw[->] (0ex,.96ex) edge[->] (3ex,.96ex) (0ex,.16ex) -- (3ex,.16ex);}}
\newcommand{\tototo}{\mathrel{\tikz{[baseline] %brace after \tikz
\draw[->] (0ex,.96ex) -- (3ex,.96ex);
\draw[->] (0ex,.16ex) -- (3ex,.16ex);}}} %brace closing everything
\begin{document}
$\toto$
$\tototo$
\end{document}
对于第一个版本,使用edge[->]
中间箭头。对于第二个版本,缺少括号。
答案2
您的两个定义由于不同的原因而不起作用:
\newcommand{\toto}{\mathrel{%
\tikz[baseline] \draw[->] (0ex,.96ex) -- (3ex,.96ex) (0ex,.16ex) -- (3ex,.16ex);}}
当你\draw[->]
使用箭头时,TikZ 只会在最后路径。即使路径从一个点跳到另一个点,它仍然是一条用于放置箭头等的单一路径。
如果您使用该库在路径的 60% 处放置装饰物(如箭头),您会注意到相同的效果decorations
:为了确定放置装饰物的位置,TikZ 会有效地将各段首尾相连(在其自己的内部存储器中,而不是在页面上)并计算整个路径的 60%。
\newcommand{\toto}{\mathrel{\tikz[baseline]
\draw[->] (0ex,.96ex) -- (3ex,.96ex);
\draw[->] (0ex,.16ex) -- (3ex,.16ex);}}
这不起作用,因为该\tikz
命令仅解析到下一个分号的命令。所以你的 TikZ 图片只有这个:
\tikz[baseline] \draw[->] (0ex,.96ex) -- (3ex,.96ex);
然后 LaTeX 继续解析并遇到以下问题:
\draw[->] (0ex,.16ex) -- (3ex,.16ex);
但这不再是 TikZ 图片的一部分,也不\draw
是 LaTeX 命令,因此它会抱怨命令未定义。
您可以通过将参数括在括号中来解决此问题\tikz
:
\tikz[baseline] {
\draw[->] (0ex,.96ex) -- (3ex,.96ex);
\draw[->] (0ex,.16ex) -- (3ex,.16ex);
}
这样,两个\draw
命令就组合成一个标记,作为“参数”传递给\tikz
。
答案3
我不确定其含义,但该--
命令实际上是一条路径,并且在第一个示例中你用一个箭头装饰整个路径。
第二个例子应该可以工作,但需要使用正确的括号(如果你有多个 tikz 语句,则需要将 \tikz 命令的参数括起来)
\newcommand{\toto}{\mathrel{\tikz[baseline] {%
\draw[->] (0ex,.96ex) -- (3ex,.96ex);
\draw[->] (0ex,.16ex) -- (3ex,.16ex);}}}