有没有办法将数学模式中的所有箭头(、、、、等)重新定义为以\rightarrow
TikZ选项结尾的另一个箭头?\leftarrow
\Rightarrow
\Leftarrow
\to
angle 90
我已经做了一些尝试,并且在正常数学规模下获得了良好的结果:
使用以下代码:
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{arrows}
%Redefine \rightarrow
\renewcommand{\rightarrow}{\mathbin{\tikz[baseline]\draw[arrows={-angle 90},yshift=0.75ex] (0,0) -- (.95em,0);}}
\begin{document}
%\mathchar"3221 is just the original code of \rightarrow
\noindent $x^2 - 2x + 1 = 0 \mathchar"3221 (x-1)^2 = 0 \mathchar"3221 x = 1$\\
$x^2 - 2x + 1 = 0 \rightarrow (x-1)^2 = 0 \rightarrow x = 1$
\end{document}
但是当我在限制等特殊情况下使用该箭头时遇到了问题,我希望所有这些箭头都能在这种情况下发挥作用(如果可能的话):
我知道这个问题还解释了如何获得与我的符号相似的符号,但该包不包含我想要的箭头。此外,我希望新箭头的行为与普通字符一样,因此如果我输入$2x \textcolor{red}{\rightarrow} 0$
,我将获得一个红色箭头。
有什么想法或建议吗?
答案1
问题是,你给出的 tikz 定义无法与较小的数学样式一起缩放。为了解决这个问题,我们使用该scalerel
包将良好的正常大小箭头(动态)缩放到与要替换的原始箭头相同的垂直范围,在当前的数学风格中。
\documentclass{minimal}
\usepackage{scalerel}
\usepackage{tikz}
\usetikzlibrary{arrows}
\let\svrightarrow\rightarrow
\newcommand{\TSrightarrow}{\mathbin{\tikz[baseline]\draw[arrows={-angle 90},yshift=0.75ex] (0,0) -- (.95em,0);}}
\renewcommand\rightarrow{\mathrel{\scalerel*{\TSrightarrow}{\svrightarrow}}}
\parindent 0pt
\begin{document}
$x^2 - 2x + 1 = 0 \svrightarrow (x-1)^2 = 0 \svrightarrow x = 1$\\~\\
$x^2 - 2x + 1 = 0 \rightarrow (x-1)^2 = 0 \rightarrow x = 1$\\~\\
\( \lim_{h\svrightarrow0}\frac{f(x+h)-f(x)}{h} \)\\~\\
\( \lim_{h\rightarrow0}\frac{f(x+h)-f(x)}{h} \)
\end{document}
答案2
问题是您的箭头无法正确缩放,具体取决于数学样式。只需使用\text
或\mathchoice
即可缓解这种情况,但留下了箭头无法正确缩放的问题。
这是使用和装饰的定义\mathchoice
,以便能够适当缩小箭头尖端。也许还需要进行一些调整。
\documentclass{article}
\usepackage{tikz}
\usepackage{amsmath}
\usetikzlibrary{arrows}
\usetikzlibrary{decorations.markings}
%Redefine \rightArrow
\newcommand\rightArrow{%
\mathchoice
{\mathrel{%
\tikz[baseline]
\draw[decoration={markings,mark=at position 1 with {\arrow[scale=0.88]{angle 90}}},postaction=decorate,yshift=0.75ex]
(0,0) -- (.95em,0);}%
}
{\mathrel{%
\tikz[baseline]
\draw[decoration={markings,mark=at position 1 with {\arrow[scale=0.88]{angle 90}}},postaction=decorate,yshift=0.75ex]
(0,0) -- (.95em,0);}%
}
{\mathrel{%
\tikz[baseline]
\draw[decoration={markings,mark=at position 1 with {\arrow[scale=0.6]{angle 90}}},postaction=decorate,yshift=0.43ex]
(0,0) -- (.65em,0);}\mkern1.8mu}
{\mathrel{%
\tikz[baseline]
\draw[decoration={markings,mark=at position 1 with {\arrow[scale=0.5]{angle 90}}},postaction=decorate,yshift=0.38ex]
(0,0) -- (.58em,0);}\mkern1.5mu}
}
\begin{document}
$x^2 - 2x + 1 = 0 \mathchar"3221 (x-1)^2 = 0 \mathchar"3221 x = 1$
$x^2 - 2x + 1 = 0 \rightArrow (x-1)^2 = 0 \rightArrow x = 1$
$\lim_{x\rightarrow 0}\quad A_{\lim_{x\rightarrow 0}}$
$\lim_{x\rightArrow 0}\quad A_{\lim_{x\rightArrow 0}}$
\end{document}