如何将 tikz 箭头向下移动?

如何将 tikz 箭头向下移动?

为了使用 Lucida Bright 字体创建“更好”的版本\to— — 具有更明显的箭头并且能够与tikzcd图表中的箭头相协调,我从tikz箭头开始,如下面的源所示。

仔细检查大大放大的输出会发现我的\myto箭头比内置的 Lucida\originalto箭头略高。

问题:我怎样才能降低箭杆\myto,使其高度与原来的高度相同?

有关的:我问过类似的问题下标内的下箭头。那里接受的答案定义并使用了一个\fix@height也使用\mathchoice构造的函数。我没有看到如何将那里的构造与\mathchoice我在这里已经使用的构造结合起来,后者考虑了实际的当前点大小。

(到目前为止,我尝试过的所有方法都只能以某种方式改变箭头的尺寸。)

\documentclass{article}

\usepackage{tikz-cd}
\usetikzlibrary{arrows.meta}
\tikzcdset{every arrow/.append style = -{Stealth[scale=1]}}
\tikzcdset{arrows={line width=0.4pt}}

\usepackage{graphicx}

\usepackage[lucidasmallscale]{lucidabr}
\linespread{1.04}

\mathchardef\originalrightarrowchar=\numexpr\rightarrow-"3000\relax
\newcommand{\originalto}{\mathrel{\originalrightarrowchar}}

\newcommand{\basicrightarrow}{\tikz[baseline,line width=0.3pt]\draw[arrows=-{Stealth[scale=0.55]},yshift=0.625ex] (0,0) -- (0.625em,0);}
\newbox\basicrightarrowbox
\sbox\basicrightarrowbox{\mbox{\basicrightarrow}}

\newcommand{\myto}{\mathrel{%
  \mathchoice
    {\resizebox{!}{\the\fontdimen5\textfont2}{\usebox\basicrightarrowbox}}%
    {\resizebox{!}{\the\fontdimen5\textfont2}{\usebox\basicrightarrowbox}}%
    {\resizebox{!}{\the\fontdimen5\scriptfont2}{\usebox\basicrightarrowbox}}%
    {\resizebox{!}{\the\fontdimen5\scriptscriptfont2}{\usebox\basicrightarrowbox}}%
}}

\newcommand{\from}{\protect\colon}

\newcommand*{\test}[1]{%          
  \noindent $f \from X \csname#1\endcsname Y$ \quad \texttt{\textbackslash#1}
}

\begin{document}

\test{myto}\\[2pt]\test{originalto}\\
\mbox{}\hspace{-0.425em}$%
\begin{tikzcd} f\from X \arrow{r}{} & Y \end{tikzcd} $ \quad tikzcd

\end{document}

\myto 箭头太高

答案1

您已经使用了 yshift,因此您可以将其更改为您喜欢的任何值,因为这会改变高度,您可以调整 resizebox 以缩放到 1ex 的一小部分,再次选择任何看起来合适的值。我没有您使用的字体,但稍微更改了值以获得

在此处输入图片描述

\documentclass{article}

\usepackage{tikz-cd}
\usetikzlibrary{arrows.meta}
\tikzcdset{every arrow/.append style = -{Stealth[scale=1]}}
\tikzcdset{arrows={line width=0.4pt}}

\usepackage{graphicx}

%\usepackage[lucidasmallscale]{lucidabr}
\linespread{1.04}

\mathchardef\originalrightarrowchar=\numexpr\rightarrow-"3000\relax
\newcommand{\originalto}{\mathrel{\originalrightarrowchar}}

\newcommand{\basicrightarrow}{\tikz[baseline,line width=0.3pt]\draw[arrows=-{Stealth[scale=0.55]},yshift=0.5ex] (0,0) -- (0.625em,0);}
\newbox\basicrightarrowbox
\sbox\basicrightarrowbox{\mbox{\basicrightarrow}}

\newcommand{\myto}{\mathrel{%
  \mathchoice
    {\resizebox{!}{.9\fontdimen5\textfont2}{\usebox\basicrightarrowbox}}%
    {\resizebox{!}{.9\fontdimen5\textfont2}{\usebox\basicrightarrowbox}}%
    {\resizebox{!}{.9\fontdimen5\scriptfont2}{\usebox\basicrightarrowbox}}%
    {\resizebox{!}{.9\fontdimen5\scriptscriptfont2}{\usebox\basicrightarrowbox}}%
}}

\newcommand{\from}{\protect\colon}

\newcommand*{\test}[1]{%          
  \noindent $f \from X \csname#1\endcsname Y$ \quad \texttt{\textbackslash#1}
}

\begin{document}

\test{myto}\\[2pt]\test{originalto}\\
\mbox{}\hspace{-0.425em}$%
\begin{tikzcd} f\from X \arrow{r}{} & Y \end{tikzcd} $ \quad tikzcd

\end{document}

相关内容