reflectbox 干扰 tikz-cd 的自动调整大小

reflectbox 干扰 tikz-cd 的自动调整大小

日语字符“yo”,よ,通常用于表示范畴论中的 Yoneda 嵌入。为了用水平反射字符表示相关运算符,我创建了一个使用包\reflectbox中的命令的宏adjustbox。同时,我正在使用它tikz-cd来格式化交换图。通常,tikz-cd会调整图表中箭头上的标签大小,但 reflectbox 会以某种方式干扰这一点。以下 MWE,

\documentclass[a4paper,10pt]{amsart}

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

\DeclareFontFamily{U}{min}{}
\DeclareFontShape{U}{min}{m}{n}{<-> udmj30}{}
\newcommand{\yo}{\!\text{\usefont{U}{min}{m}{n}\symbol{'210}}\!}
\newcommand{\yoco}{\reflectbox{\yo}}

\begin{document}

\[
\begin{tikzcd}[ampersand replacement=\&]
    \& \cdot \\
    {\yoco(C)} \&\& {\yo(D)} \\
    {\yoco(C')} \&\& {\yo(D')} \\
    \& \cdot
    \arrow["{\yoco(f)}"'{color = red}, from=2-1, to=3-1]
    \arrow["{[x]}"{near end}, from=2-1, to=2-3]
    \arrow["{\yo(g)}", from=2-3, to=3-3]
    \arrow["{[y]}"'{near end}, from=3-1, to=3-3]
    \arrow[dotted, no head, from=1-2, to=4-2]
\end{tikzcd}
\]

\end{document}

产生下图作为输出: 图表中左侧标签包含一个水平反射的“yo”(为强调以红色突出显示),未正确重新缩放。

左侧箭头标签未正确调整大小,当“yo”的两个版本都作为标签出现在图表中时,这就会成为问题。我应该如何修改代码来纠正这个问题?这与文档样式的选择有关吗(amsart)?

答案1

您可以将示例简化为

在此处输入图片描述

\documentclass[a4paper,10pt]{amsart}

\usepackage{graphicx}

\begin{document}

\[
a^{\text{F}} + a^{\reflectbox{F}} + a^{\text{\reflectbox{F}}}
\]

\end{document}

\reflectbox作用类似于\mbox并防止在 scriptstyle 中东西变小。该amsmath\text在 script 和 scriptscript 样式中将这些框设置为合适的大小,如上文第三项所示。

因此,您的定义之间的区别在于使用与否\text以及添加\text是否会产生您期望的结果。

\newcommand{\yoco}{\text{\reflectbox{\yo}}}

答案2

\text它在里面时\reflectbox它已经处于文本模式,因此它与文本模式相同并且\mbox不会缩放。

为了提高效率,我建议拆分定义。

\documentclass[a4paper,10pt]{amsart}
\usepackage{graphicx}
\usepackage{tikz-cd}

\DeclareFontFamily{U}{min}{}
\DeclareFontShape{U}{min}{m}{n}{<-> udmj30}{}
\newcommand{\yochar}{\usefont{U}{min}{m}{n}\symbol{'210}}
\NewDocumentCommand{\yo}{}{\!\text{\yochar}\!}
\NewDocumentCommand{\yoco}{}{\!\text{\reflectbox{\yochar}}\!}

\begin{document}

\[
\begin{tikzcd}
    & \cdot \\
    {\yoco(C)} && {\yo(D)} \\
    {\yoco(C')} && {\yo(D')} \\
    & \cdot
    \arrow["{\yoco(f)}"'{color = red}, from=2-1, to=3-1]
    \arrow["{[x]}"{near end}, from=2-1, to=2-3]
    \arrow["{\yo(g)}", from=2-3, to=3-3]
    \arrow["{[y]}"'{near end}, from=3-1, to=3-3]
    \arrow[dotted, no head, from=1-2, to=4-2]
\end{tikzcd}
\]

\end{document}

这样\NewDocumentCommand您就不必担心命令出现在“危险”的环境中。

在此处输入图片描述

相关内容