日语字符“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”的两个版本都作为标签出现在图表中时,这就会成为问题。我应该如何修改代码来纠正这个问题?这与文档样式的选择有关吗(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
您就不必担心命令出现在“危险”的环境中。