绘制两条边,其中一条缺少箭头

绘制两条边,其中一条缺少箭头

我试图在我的序言中将两个平行箭头定义为自定义命令,如下所示:

\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);}}}

相关内容