如何使 TikZ 箭头尖与 newtxmath 字体箭头尖相匹配?

如何使 TikZ 箭头尖与 newtxmath 字体箭头尖相匹配?

在方程式 (2) 和 (3) 中,两者都使用了 TikZ,如何才能使箭头尖与方程式 (1) 中所使用的数学字体产生的箭头尖相同?

\documentclass[12pt]{article}
\usepackage{tikz-cd}
\usetikzlibrary{arrows.meta,decorations.markings}

\usepackage{newtxtext,newtxmath}

\begin{document}

\begin{equation}    % eq 1
  A \longrightarrow B \rightarrow C
\end{equation}
%
\begin{equation}    % eq 2
  \begin{tikzcd}
    A \arrow[r]{$f$} & B
  \end{tikzcd}
\end{equation}
%
\begin{equation}    % eq 3
  \begin{tikzpicture}[
      middlearrow/.style 2 args={
          thick,
          decoration={
              markings, 
              mark=at position 0.5 with {\arrow{>}, \node[#1]{#2};}
          },
          postaction={decorate}
      },
  ]
  \draw[middlearrow={below}{$\sigma$}]  (0,0) -- (2,0);
  \draw[thick,->=-latex] (0, -1) -- (2, -1);
  \end{tikzpicture}
\end{equation}

\end{document}

[![希望 TikZ 箭头尖与数学字体箭头尖相匹配][1]][1]

笔记:我是不是反问!也就是说,不是询问如何修改\rightarrow等生成的箭头以匹配 TikZ 生成的箭头。

添加:我也有同样的问题 — 只是关于匹配箭头,而不是关于语法 — 但是关于使用 TeX Gyre Termes Math 字体(带有 XeLaTeX)而不是 newtxmath。请参阅:如何使 TikZ 箭头尖端与 TeX Gyre Termes Math 字体的箭头匹配? [1]:https://i.stack.imgur.com/bfm2P.png

答案1

如果你在序言中设置:

\tikzset{>=Straight Barb, commutative diagrams/arrow style=tikz}

你对 Ti 说Z 默认使用哪些箭头,并tikz-cd遵循该决定。

然后删除所有具体的图表样式,你会得到这个:

在此处输入图片描述

代码:

\documentclass[12pt]{article}
\usepackage{tikz-cd}
\usetikzlibrary{arrows.meta,decorations.markings}

\usepackage{newtxtext,newtxmath}

\tikzset{>=Straight Barb, commutative diagrams/arrow style=tikz}
\begin{document}

\begin{equation}    % eq 1
  A \longrightarrow B \rightarrow C
\end{equation}
%
\begin{equation}    % eq 2
  \begin{tikzcd}
    A \arrow[r]{$f$} & B
  \end{tikzcd}
\end{equation}
%
\begin{equation}    % eq 3
  \begin{tikzpicture}[
      middlearrow/.style 2 args={
          thick,
          decoration={
              markings, 
              mark=at position 0.5 with {\arrow{>}, \node[#1]{#2};}
          },
          postaction={decorate}
      },
  ]
  \draw[middlearrow={below}{$\sigma$}]  (0,0) -- (2,0);
  \draw[thick,->] (0, -1) -- (2, -1);
  \end{tikzpicture}
\end{equation}

\end{document}


答案2

看来rightarrow使用,newtxmath包是Straight Barb箭头:

\documentclass[12pt]{article}
\usepackage{tikz-cd}
\usetikzlibrary{arrows.meta,
                decorations.markings}

\usepackage{newtxtext,newtxmath}

\begin{document}

\begin{equation}    % eq 1
  A \longrightarrow B \rightarrow C
\end{equation}

\begin{equation}    % eq 2
\tikzcdset{
arrow style=tikz,
diagrams={>={Straight Barb[scale=0.8]}}
          }
  \begin{tikzcd}
A \ar[r]{$f$} & B
  \end{tikzcd}
\end{equation}
%
\begin{equation}    % eq 3
  \begin{tikzpicture}[>={Straight Barb[scale=0.8]},
      middlearrow/.style 2 args={
          thick,
          decoration={
              markings,
              mark=at position 0.5 with {\arrow{>}, \node[#1]{#2};}
          },
          postaction={decorate}
      },
  ]
  \draw[middlearrow={below}{$\sigma$}]  (0,0) -- (2,0);
  \draw[thick,->] (0, -1) -- (2, -1);
  \end{tikzpicture}
\end{equation}

\end{document}

在此处输入图片描述

编辑:tikzset您可以通过在文档前言中放置和 来全局设置箭头的样式\tikzcdset。例如:

\documentclass[12pt]{article}
\usepackage{tikz-cd}
\usetikzlibrary{arrows.meta,
                decorations.markings}
\tikzset{>={Straight Barb[scale=0.8]}}% if you not bear that 
                                      % arrows head hasn't equal size as in math,
                                      % just remove `scale` option
\tikzcdset{
    arrow style=tikz,
    diagrams={>={Straight Barb[scale=0.8]}}
          }

\usepackage{newtxtext,newtxmath}

\usepackage[active,tightpage]{preview}
\setlength\PreviewBorder{1em}

\begin{document}
\begin{preview}
\begin{equation}    % eq 1
  A \longrightarrow B \rightarrow C
\end{equation}

\begin{equation}    % eq 2
  \begin{tikzcd}
A \ar[r]{$f$} & B
  \end{tikzcd}
\end{equation}
%
\begin{equation}    % eq 3
  \begin{tikzpicture}[
      middlearrow/.style 2 args={
          thick,
          decoration={
              markings,
              mark=at position 0.5 with {\arrow{>}, \node[#1]{#2};}
          },
          postaction={decorate}
      },
  ]
  \draw[middlearrow={below}{$\sigma$}]  (0,0) -- (2,0);
  \draw[thick,->] (0, -1) -- (2, -1);
  \end{tikzpicture}
\end{equation}
\end{preview}
\end{document}

结果和以前一样。

笔记: 我要强调的是,如果您使用newtxmath字体,此解决方案将产生理想的结果。例如,在其他数学字体中,lmodern您应该使用Computer Modern Rightarrow[]或简单的>

相关内容