使用带有原始箭头的 newtxmath

使用带有原始箭头的 newtxmath

我使用 Linux Libertine 作为字体,因此决定用 排版所有数学公式newtxmath。我注意到该包重新定义了箭头。

不过,我也在使用tikztikzcd,它们使用原始箭头。

我更喜欢原来的箭头,箭头尖端是卷曲的。有没有办法重新定义全部箭头,但保留数学字体newtxmath

我检查了该包的文档,但没有找到类似的东西......

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}
\usepackage[libertine]{newtxmath}

\begin{document}
$A\to B,  a\mapsto b$

\begin{tikzcd}A\arrow[r] & B \end{tikzcd}
\end{document}

带有 newtxmath 的箭头

答案1

要在使用该包时获得卷曲形状的箭头newtxmath,您可能需要加载老箭包裹。

以下屏幕截图显示了未加载和加载包的 MWE 的输出old-arrows

在此处输入图片描述 在此处输入图片描述

\documentclass[border=2pt]{standalone}
\usepackage{newtxtext}
\usepackage[libertine]{newtxmath}
%\usepackage{old-arrows} % uncomment as desired
\begin{document}
$A\to B$, $a\mapsto b$, $c\gets d$, $u\leftrightarrow v$
\end{document}

附录:为了完整起见,这里有几张截图,显示了old-arrows在没有加载字体包的情况下(即Computer Modern使用字体的情况下)加载包的效果。主要效果是尺寸箭头(根据包装的用户指南,恢复到 1992 年之前的尺寸old-arrows)。

在此处输入图片描述 在此处输入图片描述

\documentclass[border=2pt]{standalone}
%\usepackage{old-arrows} % uncomment as desired
\begin{document}
$A\to B$, $a\mapsto b$, $c\gets d$, $u\longleftrightarrow v$
\end{document}

答案2

tikz-cd无论是否加载,您都可以按照以下方法调整 中的箭头old-arrows(如Mico 的回答)。 tikz-cd带有从字形获取箭头的选项。因此,我们只需使用rightarrow字形即可获取

\documentclass{article}
\usepackage{newtxtext}
\usepackage[libertine]{newtxmath}
\usepackage{tikz-cd}
\usepackage{old-arrows} % uncomment as desired
\tikzset{
math to/.tip={Glyph[glyph math command=rightarrow]}}
\begin{document}
$A\to B,  a\mapsto b$

\begin{tikzcd}
A\arrow[r,-math to] & B \end{tikzcd}
\end{document}

在此处输入图片描述

当你注释掉\usepackage{old-arrows}

在此处输入图片描述

如果您希望为“普通”箭头全局安装此功能,该怎么办?只需重新定义样式即可rightarrow

\documentclass{article}
\usepackage{newtxtext}
\usepackage[libertine]{newtxmath}
\usepackage{tikz-cd}
%\usepackage{old-arrows} 
\tikzset{
math to/.tip={Glyph[glyph math command=rightarrow]}}
\tikzcdset{rightarrow/.code={\pgfsetarrows{tikzcd cap-math to}}}

\begin{document}
$A\to B,  a\mapsto b$

\begin{tikzcd}
A\arrow[r] & B \end{tikzcd}
\end{document}

您可以模拟更多此类箭头。这实质上相当于复制代码tikzlibrarycd.code.tex并替换上述箭头。以下是更多箭头。

\documentclass{article}
\usepackage{newtxtext}
\usepackage[libertine]{newtxmath}
\usepackage{tikz-cd}
%\usepackage{old-arrows} 
\tikzset{
ambient rightarrow/.tip={Glyph[glyph math command=rightarrow]},
ambient Rightarrow/.tip={Glyph[glyph math command=Rightarrow]},
}

\tikzcdset{ambient arrows/.code={
\tikzcdset{rightarrow/.code={\pgfsetarrows{tikzcd cap-ambient rightarrow}},
  Rightarrow/.code={\tikzcdset{double line}\pgfsetarrows{tikzcd implies cap-ambient Rightarrow}},
  leftarrow/.code={\pgfsetarrows{ambient rightarrow-tikzcd cap}},
  Leftarrow/.code={\tikzcdset{double line}\pgfsetarrows{ambient Rightarrow-tikzcd implies cap}},
  leftrightarrow/.code={\pgfsetarrows{ambient rightarrow-ambient rightarrow}},
  Leftrightarrow/.code={\tikzcdset{double line}\pgfsetarrows{ambient Rightarrow-ambient Rightarrow}},
  mapsto/.code={\pgfsetarrows{tikzcd bar-ambient rightarrow}},
  mapsfrom/.code={\pgfsetarrows{ambient rightarrow-tikzcd bar}},
  Mapsto/.code={\tikzcdset{double line}\pgfsetarrows{tikzcd implies bar-ambient Rightarrow}},
  Mapsfrom/.code={\tikzcdset{double line}\pgfsetarrows{ambient Rightarrow-tikzcd implies bar}},
  }}}
\begin{document}
$A\to B,  a\mapsto b,C\Rightarrow D$

\begin{tikzcd}[ambient arrows]
A\arrow[d,mapsto]\arrow[r] & B \\
C & \arrow[l,Rightarrow] D\arrow[u,Rightarrow]
\end{tikzcd} 
\end{document}

在此处输入图片描述

然而,还应该指出的是,虽然这些字形确实很棒,但它们并不完美,也不像 中的箭头那样通用arrows.meta。因此,您不应期望能够任意弯曲它们,并且您可能会发现与查看器相关的故障。如果您想要这样做,那么您可能需要自己声明箭头。这不是特别困难,但有点乏味。有关详细信息,请参阅\pgfdeclarearrowpgf 手册(并查找使用此命令的帖子)。(讽刺的是,几个小时前,我相信我发现了Implies箭头可能没有人们想象的那么通用。

答案3

下列的薛定谔的猫的建议 中,我使用命令设计了一个与\to中的箭头非常相似的箭头。在示例中,我添加了自定义箭头的叠加层,以便比较两者。您可以发现它们非常相似,但并不完全相同。[libertine]newtxmath\pgfdeclarearrow\to


\usepackage[libertine]{newtxmath}

\usepackage{tikz}
\usepackage{tikz-cd}

% Declaration of the new arrowhead
\pgfdeclarearrow{
name = newtxlibertine-right-style,
setup code = {
% The different end values:
\pgfarrowssettipend{0pt}
\pgfarrowssetlineend{-.3pt}
\pgfarrowssetvisualbackend{-0.85pt}
\pgfarrowssetbackend{-2.28pt}
% The hull
\pgfarrowshullpoint{0pt}{0pt}
\pgfpathlineto{\pgfqpoint{-1.97pt}{2.04pt}}
\pgfpathlineto{\pgfqpoint{-2.28pt}{1.71pt}}
\pgfpathlineto{\pgfqpoint{-2.28pt}{-1.71pt}}
\pgfpathlineto{\pgfqpoint{-1.97pt}{-2.04pt}}
},
% Drawing of the arrow tip
drawing code = {
\pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
\pgfpathlineto{\pgfqpoint{-1.97pt}{2.04pt}}
\pgfpathlineto{\pgfqpoint{-2.28pt}{1.71pt}}
\pgfpathlineto{\pgfqpoint{-0.85pt}{0pt}}
\pgfpathlineto{\pgfqpoint{-2.28pt}{-1.71pt}}
\pgfpathlineto{\pgfqpoint{-1.97pt}{-2.04pt}}
\pgfpathclose
\pgfusepathqfill
}
}

% Setting this arrowhead as standard for every diagram
% Setting line width that fits the \to arrow
\tikzset{
every picture/.style={>=newtxlibertine-right-style,line width=0.56pt}
}
\tikzcdset{arrow style = tikz}

\begin{document}~\\
\begin{tikzcd}
A\arrow[r]& B
\end{tikzcd}

$A\to B$

$A$\begin{tikzpicture}
\filldraw[help lines,step=1pt,line width=0.1pt]  (0pt,-5pt) grid (10pt,5pt);
%\draw (4.5pt,4.7pt) node {$\to$};
\draw [->] (0,0) -- (9pt,0);
\draw[red] (4.5pt,-0.305pt) node {$\to$};
\end{tikzpicture}$B$

\end{document}

采用 newtxmath libertine 风格的自定义箭头

相关内容