Tikz-CD 中的箭头标签大小问题

Tikz-CD 中的箭头标签大小问题

mathtools我将包与 包结合使用,tikz-cd用上括号装饰箭头标签。但是,\overbracket在箭头标签内使用 会扰乱 的自动垂直高度调整tikz-cd

在此处输入图片描述

以上内容来自以下最小工作示例:

\documentclass{standalone}

\usepackage{tikz-cd,mathtools}

\newcommand{\CompB}[1]{\overbracket[.5pt][1pt]{#1}}

\begin{document}

\begin{tikzcd}
\CompB{M} \ar[rr,"{\CompB{f}}" near start]\ar[rr,"\overbracket{f}"]\ar[rr,"f" near end] && N
\\
& M \ar[ul,"b"]\ar[ur,swap,"f"] &
\end{tikzcd}

\end{document}

包括两个标签,用于突出显示问题(并测试问题是否是我对括号的轻微重新定义)。我无法从中得到有用的信息tikz-cd 文档,但我可能忽略了一些东西。

如何正确重新调整箭头标签的高度\overbracket{f}tikz-cd为什么会发生这种情况?

提前致谢!

答案1

问题在于\overbracket将内容放入框中,而忘记了外部的样式。因此,您需要捕获外部数学样式并将其放入框中。有几种方法可以做到这一点,最简单的方法可能是使用包scalerel及其\ThisStyle\SavedStyle命令。

在此处输入图片描述

\documentclass{standalone}

\usepackage{tikz-cd,mathtools,scalerel}

\newcommand{\CompB}[1]{\ThisStyle{\overbracket[.5pt][1pt]{\SavedStyle{#1}}}}

\begin{document}

\begin{tikzcd}
\CompB{M} \ar[rr,"{\CompB{f}}"] && N \\
& M \ar[ul,"b"]\ar[ur,swap,"f"] &
\end{tikzcd}

\end{document}

答案2

快速而肮脏的黑客攻击:

\documentclass{standalone}

\usepackage{tikz-cd,mathtools}

\newcommand{\CompB}[1]{\overbracket[.5pt][1pt]{#1}}

\begin{document}

\begin{tikzcd}
\CompB{M} \ar[rr,"\text{$\CompB{f}$}" near start]\ar[rr,"\text{$\overbracket{f}$}"]\ar[rr,"f" near end] && N
\\
& M \ar[ul,"b"]\ar[ur,swap,"f"] &
\end{tikzcd}

\end{document}

在此处输入图片描述

答案3

教导\CompB使用来保留当前的数学风格\mathpalette

\documentclass{article}
\usepackage{mathtools}
\usepackage{tikz-cd}

\makeatletter
\NewDocumentCommand{\CompB}{m}{{% the inner braces are important
  \mathpalette\CompB@{#1}%
}}
\NewDocumentCommand{\CompB@}{mm}{\overbracket[0.4pt][1pt]{#1#2}}
\makeatletter

\begin{document}

\[
\begin{tikzcd}
\CompB{M} \ar[rr,"\CompB{f}"] && N
\\
& M \ar[ul,"b"]\ar[ur,swap,"f"] &
\end{tikzcd}
\]

\end{document}

在此处输入图片描述

相关内容