为了使用 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}
答案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}