问题的新版本:
让我尝试成为非常精确关于我正在寻找的内容,这里结合了我在问题早期版本的评论中所写的内容。如图所示这里,我想生产一些箭头
->, <-, <->, =>, <=, <=>
全部寻找就像分别是 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}