波浪双线左右箭头(即“近似等价”)

波浪双线左右箭头(即“近似等价”)

我正在尝试创建一个双线箭头,像\Leftrightarrow波浪线一样指向两侧。全面的 LaTeX 符号列表似乎不包含任何这样的符号,其他(看似不太全面的) LaTeX 符号列表也没有包含这样的符号。

我认为我可以采用以下解决方案这个答案类似的问题(关于双线波浪箭头指向方向。我尝试使用这个答案如何获得指向两个方向的箭头。

因为我不想在箭头上方出现任何文字,所以在第一次尝试中,我将文字设为不可见,并仅用它来指定箭头的长度:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc,decorations.pathmorphing,shapes,arrows}

\newcommand\xlrsquigarrow{%
\mathrel{%
\begin{tikzpicture}[baseline= {( $ (current bounding box.south) + (0,-0.5ex) $ )}]
  \node[inner sep=.5ex] (a) {\textcolor{white}{m}};
  \path[draw,implies-implies,double distance between line centers=1.5pt,decorate,
    decoration={zigzag,amplitude=0.7pt,segment length=1.2mm,pre=lineto,
    pre   length=4pt}] 
    (a.south east) -- (a.south west);
\end{tikzpicture}}%
}

\begin{document}

a $\xlrsquigarrow$ b

\end{document}

不幸的是,它看起来像这样:

失败尝试 #1:左箭头旋转

由于某种原因,左箭头旋转了 90° 并指向上方。

因此,我决定删除原始解决方案的剩余部分(即带有我不需要的文本的节点)并使用绝对坐标:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc,decorations.pathmorphing,shapes,arrows}

\newcommand\xlrsquigarrow{%
\mathrel{%
\begin{tikzpicture}[baseline= {( $ (current bounding box.south) + (0,-0.5ex) $ )}]
  \path[draw,implies-implies,double distance between line centers=1.5pt,decorate,
    decoration={zigzag,amplitude=0.7pt,segment length=1.2mm,pre=lineto,
    pre   length=4pt}] 
    (0,0) -- (0.5,0);
\end{tikzpicture}}%
}

\begin{document}

a $\xlrsquigarrow$ b

\end{document}

我原本以为,最坏的情况下,什么都不会改变(我只是交换了两个坐标,对吧?),最好的情况是,它现在可以正常工作。然而:

失败尝试 #2:右箭头旋转

现在,右箭头旋转了 90° 并指向上方!

为什么这些箭头会旋转?我该如何获得想要的结果?

(如果有的话,非 Tikz 解决方案也受到欢迎 - 我选择 Tikz 只是因为我找不到现成的符号,而且这似乎是最直接的方法。尽管如此,我还是想了解为什么上面显示的尝试过的 Tikz 解决方案会如此表现。)

答案1

pre length已添加,因此左箭头看起来不错,post length修复了右箭头。以下示例还将箭头置于数学轴的中心:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{
  calc,
  decorations.pathmorphing,
  shapes,
  arrows.meta
}

\newcommand\xlrsquigarrow{%
  \mathrel{%
    \vcenter{%
      \hbox{%
        \begin{tikzpicture}
          \path[
            draw,
            >={Implies[]},
            <->,
            double distance between line centers=1.5pt,
            decorate,
            decoration={
              zigzag,
              amplitude=0.7pt,
              segment length=3pt,
              pre length=4pt,
              post length=4pt,
            },
          ]   
            (0,0) -- (14pt,0);
        \end{tikzpicture}%
      }%
    }%  
  }%
}

\begin{document}
  \[a \xlrsquigarrow b\]
\end{document}

结果

答案2

这是一种方法,尽管它有缺点。它不支持文本过多或过少,因为 OP 表示不需要。但更重要的是,它使用包\uwave中的宏ulem,该宏仅以周期性间隔输出。如果允许的空间(可选参数)不仅仅是精确的数量,箭头左侧的间距(\prec和波浪线之间)将留下间隙。

\documentclass{article}
\usepackage{ulem,graphicx}
\usepackage{stackengine}
\newcommand\dsar[1][1.95ex]{%
  \mathbin{\scalebox{.7}[1.1]{$\prec$}%
  \scalebox{-1}[-1]{\stackon[-3.7pt]{\buwave{\hspace{#1}}}%
  {\buwave{\hspace{#1}}}}\mkern-2.6mu\scalebox{.7}[1.1]{$\succ$}}
}
\newcommand\buwave[1]{\raisebox{-1.6pt}{\uwave{\raisebox{2pt}{#1}}}}
\begin{document}
$w\dsar x \dsar[3.1ex] y \dsar[4.25ex] z$
\end{document}

在此处输入图片描述

相关内容