TikZ-cd 的箭头样式 = 数学字体不符合周围的颜色

TikZ-cd 的箭头样式 = 数学字体不符合周围的颜色

我想统一三件事:

  • $\to$
  • \draw[->]在通常的 TiZ 图片,以及
  • \ar锌镉

到目前为止,当文本为白底黑字时,以下代码可以实现该功能。但即使在黑底白字的情况下,箭头也是黑色的。

我想知道官方是否有修复。

(如果有更好的方法来同步这三个箭头,请告诉我,)

\documentclass[aspectratio=1610,20pt]{beamer}
    \setbeamercolor{normal text}{bg=blue,fg=white}
    \setbeamercolor{structure}{fg=red}
    \setbeamercolor{alerted text}{fg=red}

\usepackage{mathtools,unicode-math}
    \setmathfont{texgyrepagella-math.otf}

\usepackage{tikz,tikz-cd}
    \pgfmathdeclarefunction*{axis_height}0{\begingroup\pgfmathreturn.25em\endgroup}
    \pgfmathdeclarefunction*{rule_thickness}0{\begingroup\pgfmathreturn.06em\endgroup}
    \tikzset{
        every picture/.style={line width=rule_thickness},
        >/.tip={Glyph[glyph math command=rightarrow,glyph length=.32em]},
        >>/.tip={Glyph[glyph math command=twoheadrightarrow,glyph length=.49em]},
        c/.tip={Glyph[glyph math command=hookleftarrow, swap,glyph length=.28em]},
    }
    \tikzcdset{
        every arrow/.style={/tikz/draw,->},
    }
\begin{document}

\begin{frame}[fragile]
    $A\to B$
    
    \tikz\draw[->](0,0)node(A){$A$}(2,0)node(B){$B$}(A)--(B);
    
    \begin{tikzcd}
        A\rar   &   B\rar[c->>] &   C
    \end{tikzcd}
\end{frame}

\end{document}

答案1

我不确定为什么箭头尖声明不应用当前颜色。这可能与使用来tikz-cd渲染\pgftext箭头尖有关,箭头尖在单独的框/组中处理,可能超出颜色声明的范围 - 但也许是完全不同的东西。无论如何,这不是由引起的beamer,我用测试了article,结果显示了同样的问题。

glyph math command一种解决方法是将当前颜色明确地放在使用声明中\color{.}

梅威瑟:

\documentclass[aspectratio=1610,20pt]{beamer}
    \setbeamercolor{normal text}{bg=blue,fg=white}
    \setbeamercolor{structure}{fg=red}
    \setbeamercolor{alerted text}{fg=red}

\usepackage{mathtools,unicode-math}
    \setmathfont{texgyrepagella-math.otf}

\usepackage{tikz,tikz-cd}

\makeatletter
% copied from tikzlibrarycd.code.tex
\pgfqkeys{/pgf/arrow keys}{
  glyph math command/.code={% if csname #1 is undefined, we want it to remain so
    \pgfarrowsaddtooptions{\def\tikzcd@glyph{\color{.}$\begingroup\expandafter\endgroup\csname #1\endcsname$}}}}
\makeatother

    \pgfmathdeclarefunction*{axis_height}0{\begingroup\pgfmathreturn.25em\endgroup}
    \pgfmathdeclarefunction*{rule_thickness}0{\begingroup\pgfmathreturn.06em\endgroup}
    \tikzset{
        every picture/.style={line width=rule_thickness},
        >/.tip={Glyph[glyph math command=rightarrow,glyph length=.32em]},
        >>/.tip={Glyph[glyph math command=twoheadrightarrow,glyph length=.49em]},
        c/.tip={Glyph[glyph math command=hookleftarrow, swap,glyph length=.28em]},
    }
    \tikzcdset{
        every arrow/.style={/tikz/draw,->},
    }
\begin{document}

\begin{frame}[fragile]
    $A\to B$
    
    \tikz\draw[->](0,0)node(A){$A$}(2,0)node(B){$B$}(A)--(B);
    
    \begin{tikzcd}
        A\rar   &   B\rar[c->>] &   C
    \end{tikzcd}
    
\end{frame}

\end{document}

结果:

在此处输入图片描述

相关内容