如何制作新(箭头)符号的可扩展版本?

如何制作新(箭头)符号的可扩展版本?

问题的新版本:

让我尝试成为非常精确关于我正在寻找的内容,这里结合了我在问题早期版本的评论中所写的内容。如图所示这里,我想生产一些箭头

->, <-, <->, =>, <=, <=>

全部寻找就像分别是 LaTeX 的 \rightarrow、\leftarrow、\leftrightarrow、\Rightarrow、\Leftarrow、\Leftrightarrow 和以标准方式制作箭头

>-, -<, >-<, >=, =<, >=<

它们不是 LaTeX 固有的,但应该看起来像上面的箭头,只是它们颠倒了箭头的方向。

这是极其重要这些新箭应该以自然的方式缩放,就像在下标或上标中使用时,原生 LaTeX 箭头。

(请注意,平滑缩放是根本,但只有部分我的问题。


问题的旧版本:

在回答这个问题我学会了如何制作一些我需要的新箭头符号。我现在想制作这些符号可扩展,这样它们就可以用于下标或上标,而无需进行特别调整。有人能帮忙吗?

答案1

根据所引用问题所接受的答案......

也使用scalerel,但结果似乎与其他答案不同。

编辑以表达结果而ex不是pt,因此答案不是专门针对OP的规范\LARGE

已编辑以供使用\mathrel

已编辑,使双箭头的宽度与单箭头的宽度相同。

\documentclass{article}

\usepackage{amsmath}
\usepackage{tikz,xparse,xstring}
\usetikzlibrary{calc}
\usepackage{scalerel}
\newcommand\scaled[1]{\scaleto{#1}{\dimexpr1.8\LMex+0.43ex}}

\newcommand{\MyArc}[1][1]{%
    \begin{scope}[#1]
        \fill[white]
            (0,0) arc (270:180:3.5*\ArW) -- (0,3.5*\ArW) -- cycle ;
        \draw   (0,0) arc (270:180:3.5*\ArW) ;
        \fill[white]
            (0,0) arc (90:180:3.5*\ArW) -- (0,-3.5*\ArW) -- cycle ;
        \draw (0,0) arc (90:180:3.5*\ArW) ;
    \end{scope}
}

\newcommand{\MyArcRv}[1][1]{%
    \begin{scope}[#1]
        \fill[white] (0,3.5*\ArW) arc (0:-90:3.5*\ArW)
            arc (90:0:3.5*\ArW) -- cycle ;
        \draw (0,3.5*\ArW) arc (0:-90:3.5*\ArW)
            arc (90:0:3.5*\ArW) ;
    \end{scope}
}

\tikzset{%
    Arrow width/.store in=\ArW,
    Arrow width=.18ex,
    pics/.cd,
    arc east/.style={code = {\MyArc[xshift=.5*\pgflinewidth]}},
    arc west/.style={code = {\MyArc[rotate=180,xshift=.5*\pgflinewidth]}},
    arc rv east/.style={code = {\MyArcRv[xshift=.5*\pgflinewidth]}},
    arc rv west/.style={code = {\MyArcRv[rotate=180,xshift=.5*\pgflinewidth]}}
}

\NewDocumentCommand{\imparrow}{
    D<>{} % above
    O{1em} %length
    m % pattern
    D<>{} % below
    }{\mathrel{\scaled{%
    \def\Law{}
    \def\Raw{}
    \def\Style{}
    \def\Dlen{#2}
    \IfBeginWith{#3}{<}{\def\Law{pic{arc west}}}{}
    \IfBeginWith{#3}{>}{\def\Law{pic{arc rv west}}}{}
    \IfEndWith{#3}{>}{\def\Raw{pic{arc east}}}{}
    \IfEndWith{#3}{<}{\def\Raw{pic{arc rv east}}}{}
    \IfSubStr[1]{#3}{=}{\def\Style{double}\def\Dlen{.85em}}{}
    \tikz [baseline=-.5ex,line width=.11ex, double distance=.33ex]
        \draw[\Style] (0,0) \Law
            -- node[below=-2pt] {#1} node[above=-2pt] {#4}
            (\Dlen,0) \Raw;}}}
\begin{document}
%\LARGE 
\newcommand\stencil[1]{%
  $\alpha #1 \beta  /
  \scriptstyle \alpha #1 \beta /
  \scriptscriptstyle \alpha #1 \beta$\par
}
\stencil{\to}
\stencil{\Leftrightarrow}
\smallskip
versus
\smallskip

\renewcommand\stencil[1]{%
  $\alpha \imparrow{#1} \beta  /
  \scriptstyle \alpha \imparrow{#1} \beta /
  \scriptscriptstyle \alpha \imparrow{#1} \beta$\par
}
\stencil{->}
\stencil{<->}
\stencil{<-}
\stencil{>-}
\stencil{-<}
\stencil{>-<}
\stencil{=>}
\stencil{<=>}
\stencil{<=}
\stencil{>=}
\stencil{=<}
\stencil{>=<}
\end{document}

在此处输入图片描述

答案2

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}
\usepackage{tikz,xparse,xstring,scalerel}
\usetikzlibrary{calc}


\newcommand{\MyArc}[1][1]{%
    \begin{scope}[#1]
        \fill[white]
            (0,0) arc (270:180:4*\ArW) -- (0,4*\ArW) -- cycle ;
        \draw   (0,0) arc (270:180:4*\ArW) ;
        \fill[white]
            (0,0) arc (90:180:4*\ArW) -- (0,-4*\ArW) -- cycle ;
        \draw (0,0) arc (90:180:4*\ArW) ;
    \end{scope}
}

\newcommand{\MyArcRv}[1][1]{%
    \begin{scope}[#1]
        \fill[white] (0,4*\ArW) arc (0:-90:4*\ArW)
            arc (90:0:4*\ArW) -- cycle ;
        \draw (0,4*\ArW) arc (0:-90:4*\ArW)
            arc (90:0:4*\ArW) ;
    \end{scope}
}


\tikzset{%
    Arrow width/.store in=\ArW,
    Arrow width=.7pt,
    pics/.cd,
    arc east/.style={code = {\MyArc[xshift=.5*\pgflinewidth]}},
    arc west/.style={code = {\MyArc[rotate=180,xshift=.5*\pgflinewidth]}},
    arc rv east/.style={code = {\MyArcRv[xshift=.5*\pgflinewidth]}},
    arc rv west/.style={code = {\MyArcRv[rotate=180,xshift=.5*\pgflinewidth]}}
}


\NewDocumentCommand{\imparrow}{
    D<>{} % above
    O{1.4em} %length
    m % pattern
    D<>{} % below
    }{%
    \def\Law{}
    \def\Raw{}
    \def\Style{}
    \IfBeginWith{#3}{<}{\def\Law{pic{arc west}}}{}
    \IfBeginWith{#3}{>}{\def\Law{pic{arc rv west}}}{}
    \IfEndWith{#3}{>}{\def\Raw{pic{arc east}}}{}
    \IfEndWith{#3}{<}{\def\Raw{pic{arc rv east}}}{}
    \IfSubStr[1]{#3}{=}{\def\Style{double}}{}
    \scalerel*{
    \tikz [baseline=-.5ex,line width=.4pt]
        \draw[\Style] (-3pt,0) (0,0) \Law
            -- node[below=-2pt] {#1} node[above=-2pt] {#4}
            (#2,0) \Raw
            ++(3pt,0);}{$\beta$}
     }
\begin{document}


$\alpha\to\beta$ / $\alpha\Leftrightarrow\beta$\bigskip

$\alpha \imparrow{->} \beta$

$\alpha \imparrow{<->} \beta$

$\alpha \imparrow{<-} \beta$

\Large 

$\alpha \imparrow{>-} \beta$

$\alpha \imparrow{-<} \beta$

$\alpha \imparrow{>-<} \beta$

$\alpha \imparrow{=>} \beta$

\footnotesize

$\alpha \imparrow{<=>} \beta$

$\alpha \imparrow{<=} \beta$

$\alpha \imparrow{>=} \beta$

$\alpha \imparrow{=<} \beta$

$\alpha \imparrow{>=<} \beta$

\end{document}

相关内容